Home
- POV-Ray Tutorial
Cicli con POV-Ray
>1. For e While
Comparazione
2. Trasformazioni
lineari
3. Trasformazioni
circolari
4. Moebius etc.
5. Viti e spirali
6. Spirali
intrecciate
7. Chiocciole
e ammoniti
8. Spirali sferiche 1
9. Spirali sferiche 2
10. Spirali Fibonacci
- Download
|
Il ciclo et il ciclo while - una comparazione
Il ciclo for è implementato in
POV-Ray 3.7
(a partire da beta 37).
(Attenzione: Il ciclo for non funziona con version 3.6.2 !)
Qui una comparazione di questi tipi simili di cicli:
|
Per evitare collisioni con denominazioni installate e parole riservate di POV-Ray,
si è racommandato assolutamente di usare solo parole con una maiuscola come lettera iniziale,
per tutte denominazioni di variabili e oggetti dichiarrate degli utenti.
Si deve tenere conto che x = <1,0,0> è una parola riservata, perciò invece si usa per es. "X" .
|
|
Sintassi 'Ciclo While' (while loop):
//------------------------------------
#local Identifier = Start;
#while (Identifier <= End)
//... do something
// depending on value of Identifier.
#local Identifier = Identifier + Step;
#end // ------------- end of loop ---- |
|
Sintassi 'Ciclo For' (for loop):
//------------------------------------
#for (Identifier, Start, End [, Step])
//... do something
// depending on value of Identifier.
#end // ------------- end of loop ---- |
Nota: 'Step' (la distanza dei passi) è optional!
(default Step=1)
|
Esempio 'Ciclo While':
union{ //-------------------------------
#local Cntr = 0; // start
// while loop
#while ( Cntr <= 5 )
object{ MyObject
translate<0,0,Cntr*2>
} // end of object
#local Cntr = Cntr + 1; // next
#end // -------- end of #while loop
rotate<0,0,0>
translate<0,0,0>
} // end of union ---------------------- |
|
Esempio 'Ciclo For':
union{ //-----------------------------
//#for (Identifier, Start, End [, Step])
#for (Cntr, 0, 5, 1)
object{ MyObject
translate<0,0,Cntr*2>
} // end of object
#end // ----------- end of #for loop
rotate<0,0,0>
translate<0,0,0>
} // end of union -------------------- |
Nota: 5 passi = 6 impronte del piede!
|
Per la dichiarazione di 'MyObject' q.v. il file della scena!
File della scena per POV-Ray: .pov o:
.txt
|
La lunghezza dei passi ('step') può essere ogni numero reale!
Anche valori negativi di 'step' sono permessi.
I cicli di qui sopra si può anche fare in questo modo: |
while loop:
#local Cntr = 0; // start
#while ( Cntr <= 10 )
object{ MyObject
translate<0,0, Cntr >
} // end of object
#local Cntr = Cntr + 2; // next
#end // -------- end of #while loop |
|
for loop:
#for (Cntr, 0, 10, 2)//..,Start,End,Step
object{ MyObject
translate<0,0, Cntr >
} // end of object
#end // ----------- end of #for loop |
|
Attenzione:
Evitare cicli infini è un problemà del utente!
Si deve assicurare che il ciclo scritto si ferma effettivamente a un numero reale di passi!
Altrimenti POV-Ray fara il parsing del ciclo senza fine con riempire il RAM fino all'orlo con dati inutili!
Si vede l'esempio seguente di un ciclo che non si finisce mai
(almeno se non a si preme il bottone rosso di 'Stop'):
|
Un ciclo while con la distanza dei passi falsa:
#local Cntr = 0; // start
#local End = 5; // end
#local Step = - 1; // step !errore!!
// while loop start
#while ( Cntr <= End )
object{ MyObject
translate<0,0,Cntr*2>}
#local Cntr = Cntr + Step; // next
#end // -------- end of while loop
|
Questo ciclo while non si finisce mai!
|
Con un ciclo for questa no è cosi dramatico:
#for (Cntr, 0, 5, -1)
// do something
#end // ------ end of #for loop |
Questo 'nonsense for loop' causa soltanto un dolce fare niente!
|
|