Descrizioni ed esempi per POV-Ray di Friedrich A. Lohmüller ,
in parti tradotto di Paolo Taraboi

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

Cicli e Trasformazioni lineari

Qui alcune applicazioni elementari dell'uso del ciclo while in POV-Ray.
In queste applicazione i cicli while sono usati per il posizionamento degli oggetti.
Gli esempi che seguono illustrano cicli singoli e cicli nidificati

Singolo ciclo:
Per prima cosa provaimo un singolo ciclo che posiziona delle sfere lungo l'asse X (da X = -5 a X = +5):
#declare Ball =
 sphere{ <0,0,0>,0.5
         texture{ pigment{ color Red }
                  finish { phong 1 }
                }
        } //--------------------------
//------------------------------------
#declare X = -5;  // start
#declare End_X = 5; // end
#while ( X <= End_X )
 object{ Ball translate < X, 0.5, 0> }
#declare X = X + 1; // next
#end //-------------- end of loop ----
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" .




Scena per POV-Ray: povloop1.pov o: povloop1.txt
Ciclo multipla nidificato Ciclo nidificato :
Ora inseriamo nostro primo ciclo in un secondo ciclo. Otteniamo un rettangolo coperto da oggetti identici:
#declare Boxy =
box{ <0,0,0>,< 1,1,1> scale 0.5
     texture{ pigment{ color White }
              finish { specular 0.5}}}
//------------------------------------
#declare Dx = 1.00; // distance in x
#declare Dz = 1.00;
#declare NrX = 0;      // startX
#declare EndNrX = 7;   // endX
#while (NrX < EndNrX) // <-- loop X
 #declare NrZ = 0;     // startZ
 #declare EndNrZ = 7;  // endZ
 #while (NrZ < EndNrZ) // <- loop Z
  object{ Boxy
          translate<NrX*Dx, 0, NrZ*Dz>}
 #declare NrZ = NrZ + 1;  // next NrZ
 #end // --------------- end of loop Z
#declare NrX = NrX + 1;// next NrX
#end // ------------- end of loop X
Scena per POV-Ray: povloop2.pov o: povloop2.txt

Ciclo multipla nidificato :
E' possibile nidificare il tutto all'interno di un ciclo.
Con quest'ultimo ciclo otteniamo un cubo formato da oggetti identici:
#declare Dx = 1.00;
#declare Dy = 1.00;
#declare Dz = 1.00;
//-------------------------------------
#declare NrX = 0;      // startX
#declare EndNrX = 5;   // endX
#while (NrX < EndNrX)
 #declare NrY = 0;     // startY
 #declare EndNrY = 5;  // endY
 #while (NrY < EndNrY)
  #declare NrZ = 0;    // startZ
  #declare EndNrZ = 5; // endZ
  #while (NrZ < EndNrZ)
   object{ Boxy
           translate
            <NrX*Dx,NrY*Dy,NrZ*Dz>
         }
  #declare NrZ = NrZ+1;// next NrZ
  #end // ---------- end of loop Z
 #declare NrY = NrY+1;// next NrY
 #end // ---------- end of loop Y
 #declare NrX = NrX+1;// next NrX
#end // ----------- end of loop X -----
Scena per POV-Ray: .pov o: .txt

Con quest'ultimo esempio, le nostre opzioni con i movimenti di traslazione pura con cicli nidificati sembrano essere esaurite.


top

© Friedrich A. Lohmüller, 2014
http://www.f-lohmueller.de
 
Visitors:
(since May-1999)
Thanks for your visit!