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" .
|
|
|
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 |
|
|
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 ----- |
|
|
Con quest'ultimo esempio, le nostre opzioni
con i movimenti di traslazione pura con cicli nidificati
sembrano essere esaurite.
|
|