|
In questa sezione vengono presentate alcune applicazioni elementari
dell'uso di cicli while in POV-Ray.
In queste applicazione i cicli while sono usati per il corretto posizionamento
degli oggetti. Gli esempi che seguono illustrano cicli singoli e nidificati
Consigli per l'uso: Tutti i file di scena di POV-Ray degli esempi sono scaricabili
(estensione utilizzata: .pov, o in alternativa .txt).
La maggior parte degli esempi usano i file include "axis_xyz.inc" per il
sistema di coordinate. Potete scaricare il file da qui:
file ".inc" ou
file ".txt"
(Salvatelo rinominandolo in "axis_xyz.inc" !).
|
|
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 {ambient 0.15
diffuse 0.85
phong 1}
}
}
#declare NrX = -5; // start
#declare EndNrX = 5; // end
#while (NrX < EndNrX+1)
object{Ball translate <NrX,0,0>}
#declare NrX = NrX + 1; //next Nr
#end // ------------- end of loop ---- |
|
Scena per POV-Ray: .pov o:
.txt
|
|
Ora inseriamo un secondo ciclo che modifichi i valori di Z
da Z = 0 a Z = +5 otteniamo un rettangolo coperto
da oggetti identici:
|
//------------------------------------
#declare Boxy =
box {<0,0,0>,< 1,1,1> scale 0.5
texture{pigment{color White}
finish {ambient 0.1
diffuse 0.9}}}
#declare DistanceX = 1.00;
#declare DistanceZ = 1.00;
#declare NrX = 0; // startX
#declare EndNrX = 7; // endX
#while (NrX < EndNrX) // <-- loop X
#declare NrZ = 0; // start
#declare EndNrZ = 7; // end
#while (NrZ < EndNrZ) // <- loop Z
object{Boxy
translate<NrX*DistanceX, 0,
NrZ*DistanceZ>}
#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: .pov o:
.txt
|
|
E' possibile nidificare il tutto all'interno di un ciclo
che modifichi i valori di Y da Y = 0 a Y = +5. 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
|
|
Quest'ultimo esempio esaurisced le nostre possibilità
di trasformazioni puramente lineari.
|