7.6.8.8.3 Turbolenza
Il linguaggio di POV-Ray contiene un'ambiguità
sul modo in cui possono essere specificate la turbolenza e le trasformazioni
come traslazione, rotazione e ridimensionamento. Normalmente la turbolenza
viene calcolata per prima. Poi, tutte le altre trasformazioni vengono eseguite
indipendentemente dall'ordine con cui vengono specificate rispetto alla
turbolenza. Per esempio, questa frase
pigment {
wood
scale .5
turbulence .2
}
ha esattamente lo stesso significato
di
pigment {
wood
turbulence .2
scale .5
}
La turbolenza viene calcolata per prima.
Un esempio migliore si ha con la turbolenza lungo un asse insieme alle
rotazioni : confronta infatti
pigment {
wood
turbulence 0.5*y
rotate z*60
}
con
pigment {
wood
rotate z*60
turbulence 0.5*y
}
Il risultato sarà lo stesso
in entrambi i casi anche se sembra che le due istruzioni dovrebbero dare
risultati diversi.
Questo comportamento non si può cambiare perché altrimenti
tutte le scene scritte per le versioni precedenti di POV-Ray, in cui non
ci sono differenze nell'ordine turbolenza - trasformazioni, sarebbero renderizzate
in modo diverso.
Invece, specificando la turbolenza all'interno di una frase warp{...},
si permette a POV-Ray di distinguere l'ordine in cui turbolenza e trasformazioni
compaiono. Questo è un esempio di un 'warp turbolenza' :
warp { turbulence <0,1,1> octaves
3 lambda 1.5 omega 0.3 }
Il significato di questa frase è
che :
pigment {
wood
translate <1,2,3> rotate x*45 scale 2
warp { turbulence <0,1,1> octaves 3 lambda 1.5 omega 0.3 }
}
produce un risultato diverso
da :
pigment {
wood
warp { turbulence <0,1,1> octaves 3 lambda 1.5 omega 0.3 }
translate <1,2,3> rotate x*45 scale 2
}
La turbolenza può essere specificata
senza inserirla in una frase warp{...},
ma in questo modo non si può controllare l'ordine in cui turbolenza
e trasformazioni vengono calcolate.
Le regole di calcolo sono le seguenti :
1) Prima viene applicata la turbolenza non inclusa in frasi warp{...},
indipendentemente dall'ordine con cui compare rispetto alle trasformazioni
o ad altri warp.
2) Vengono applicate le trasformazioni una dopo l'altra, comprese le frasi
warp{...}
nell'ordine specificato dall'utente. Quindi, se vuoi che la turbolenza
sia valutata in sequenza con le altre istruzioni, devi specificarla
all'interno di una frase warp{...}
nell'ordine giusto.
![]() |
![]() |
![]() |