Descrizioni ed esempi per il raytracer POV-Ray di Friedrich A. Lohmüller
Esempi POV-Ray - Come fare oggetti per POV-Ray
English English English
Français français
Deutsch Deutsch

Home
- POV-Ray Tutorial

  - Esempi per POV-Ray
    Indice generale
  - Geometria
  - Architettura
  - Tecnica
    - Scala a Pioli
    - Piloni e Tralicci
    - Parapetto
    - Ponte
    - Tubi e Tubature
    - Bifucazione di Tubi
    - Rubinetto di Arresto
    - Catena
    - Bobina di filo
    - Torpedo
    - Cruise Missile
    - Razzo, Missile
    - Ruota
    - Camion
    - Elica
    - Aeroplano
    - Canoa
    - Chitarra
    - Display a 7 Segmenti
    - Cavo piatto
    - Fascio di cavi
                                       
Wheel

Ruota con Raggi
- senza e con un ciclo (loop) #while loop -

Un esempio per l'uso di un "#while" loop
Oggetti: "torus", "cylinder", "sphere".
Metodi:  "union", "#declare", "#while loop".

a) Senza while-loop

 ...
#declare Number_of_spokes = 12;
#declare W = 360/Number_of_spokes;
//------------------------------------ wheel --
union{
torus{0.9,0.20 rotate<90,0,0>
         texture{Rim_tex}} // rim
torus{1.0,0.25 rotate<90,0,0>
         texture{Tiretex}} // tire
 cylinder{<0,0,-0.10>,<0,0, 0.10>,0.20
         texture{Hub_tex}} // hub
 cylinder{<0,0,-0.12>,<0,0, 0.12>,0.15
         texture{Hub_tex}} // hub
//------------- without #while loop: -------<<1 
union{
 cylinder{<0,0,0>,<1,0,0>,0.05 rotate<0,0, 0*W>}
 cylinder{<0,0,0>,<1,0,0>,0.05 rotate<0,0, 1*W>}
 cylinder{<0,0,0>,<1,0,0>,0.05 rotate<0,0, 2*W>}
 cylinder{<0,0,0>,<1,0,0>,0.05 rotate<0,0, 3*W>}
 cylinder{<0,0,0>,<1,0,0>,0.05 rotate<0,0, 4*W>}
 cylinder{<0,0,0>,<1,0,0>,0.05 rotate<0,0, 5*W>}
 cylinder{<0,0,0>,<1,0,0>,0.05 rotate<0,0, 6*W>}
 cylinder{<0,0,0>,<1,0,0>,0.05 rotate<0,0, 7*W>}
 cylinder{<0,0,0>,<1,0,0>,0.05 rotate<0,0, 8*W>}
 cylinder{<0,0,0>,<1,0,0>,0.05 rotate<0,0, 9*W>}
 cylinder{<0,0,0>,<1,0,0>,0.05 rotate<0,0,10*W>}
 cylinder{<0,0,0>,<1,0,0>,0.05 rotate<0,0,11*W>}
 texture{Spoke_tex}
 }
//----------------------------------------- <<2 
translate<0,1.25,0>
rotate<0,0,0>} // end of union
//----------------------------------------- end  
Example while loop

Invece di molti comandi singoli che chambiano solo un poco, possiamo usare in queste case la tecnologia di loop while. Questa tecnologia non solo ridurre il lavoro di scrivere in file di scena (sicuro: con "cut and paste" non é un problema grosso!), ma anche permette di cambiare i valori per un grande numero di elementi e il valore per lunghezza del passo molto facile.

b) Con while-loop

 ...
//or from <<1  until <<2
 // --- with while loop ----------- >>1 
#declare Nr = 0;
#declare EndNr = Number_of_spokes;

#while ( Nr < EndNr )
  cylinder {<-1,0,0>,<1,0,0>, 0.05
            rotate<0,0,360/EndNr*Nr>
            texture{Spoke_tex}}
  #declare Nr = Nr +1;
#end // --------------------------- >>2 
...
Example while loop
La descrizione della scena
per POV-Ray:
"wheel_1.txt" o "wheel_1.pov"

POV-Ray usa come ciclo (loop) solo il ciclo di while-loop. Qui si il parte di istruzioni tra commando "#while" e l'relativo "#end" sono eseguito o no é deciso conforme a le condizioni all'interno a le parentesi tonde dietro la parola "#while". Questa decisione é fatta prima che le istruzioni di questo parte sono eseguite.
Questo ciclo é un così detto "pre-checked loop" - ben noto di molti linguaggi di programmazione. Il ciclo di tipo "repeat ... until" per un così detto "post-checked loop" fino a oggi non esiste in POV-Ray. Ma questo non é un problema grosso perché il é possibile di trasformare ogni ciclo di questo tipo in un cicle del altro tipo con una trasformazione dei condizioni del ciclo.

Con i while-loops anche il piazzamento di molti elementi
é nessun problema:

Example while loop
La descrizione della scena
per POV-Ray:
"wheel_2.txt" o "wheel_2.pov"
top
© Friedrich A. Lohmüller, 2009
www.f-lohmueller.de