Descrizioni ed esempi per POV-Ray di Friedrich A. Lohmüller,
 

Cicli in POV-Ray     
English English English
Français français
Deutsch Deutsch

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!

top

© Friedrich A. Lohmüller, 2014
www.f-lohmueller.de