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

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

Home
- POV-Ray Tutorial

  Cicli while
  1. Trasformazioni
       lineari
  2. Trasformazioni
       circolari
  3. Moebius etc.
  4. Viti e spirali
  5. Spirale
       intrecciate
  6. Chiocciole
       e ammoniti
  Cicli for
  7. For e While
       Comparazione
                                      - Download

I cicli while - 1. Trasformazioni lineari

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.


top

© Friedrich A. Lohmüller, 2010
email email: Friedrich.Lohmueller_at_t-online.de
homepage:http://www.f-lohmueller.de
  Visitors: www.webhits.de
since 08-May-1999
Thanks for your visit!