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.