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
                                       
 
Chain

Le Maglie di Catena
e una Catena

Oggetti: sphere, box, cylinder.
Metodi:  #declare, union, difference, #while, #if.
Questo esempio voglio mostrare come si può costruire una catena. È possibile anche usare delle dimensioni variabili per tutto le maglie di catena.

La Construzione nel dettaglio:
 
Passo 0: Daprima dichiariamo le dimensioni di base del toro usato per una maglia di catena:
#declare R_min = 0.25;
#declare R_maj = 1.00;
#declare Half_L = 0.25;
 // = half straight part!
#declare Link_Length =  2*(R_maj);       
Passo 1: Definiamo un box che contiene la metà sulla destra del toro e poi dobbiamo sottrarre questo box del toro:
difference{
 torus { R_maj, R_min
         rotate <90,0,0>
       } // end of torus  -------------- 
 box{<           0,-R_maj-R_min,-R_min>,
     < R_maj+R_min, R_maj+R_min, R_min>
    }// end of box
 }// end of difference

chain
chain
chain

Passo 2: Poi muoviamo il semitoro a destra con la metà lunghezza della parte retta della maglia di catena. Quindi aggiungiamo una (solo una!) de queste parti della maglia.
Doppo tutto questo dichiariamo quest'oggetto chiamato "Left_Half" e poi dobbiamo appliquare una riflessione di questo elemento a <0,0,0>:

#declare Left_Half =
union{
difference{
 torus { R_maj, R_min
         rotate <90,0,0>
       } // end of torus  ------------- 
 box{<          0,-R_maj-R_min,-R_min>,
     <R_maj+R_min, R_maj+R_min, R_min>
    }// end of box

 translate <-Half_L,0,0>
 }// end of difference

 cylinder {
    <-Half_L,0,0>,<Half_L,0,0>, R_min
    translate <0,R_maj,0>
  } // end of cylinder
}// end of union
//------------------------------------- 
#declare Chain_Link =
union{
object{ Left_Half }
object{ Left_Half scale <-1,-1,1>}

texture{
   pigment{color rgb<1,1,1>*0.2}
   normal {bumps 0.125 scale 0.015}
   finish {phong 0.5 reflection 0.2}
       } // end of texture
} // end of Chain_Element 
chain
chain

Passo 3: Per assemblare una catena dobbiamo muovere le maglie con una lunghezza dichiarta "Link_Length" e dobbiamo anche ruotare con 90 gradi intorno asse x ogni seconda maglia.
Tutto questo si può fare con un ciclo while-loop in un modo molto economic:

chain
union{
 #declare Nr = 0;    // start
 #declare EndNr = 6; // end
 #while (Nr< EndNr)
   object{ Chain_Link
           #if ( int(Nr/2) ! = Nr/2 )
                rotate <90,0,0>
           #end
           translate <Nr*Link_Length,0,0> 
         }
 #declare Nr = Nr + 1;  // next Nr
 #end // ----------------- end of loop
} // end of union
 
chain

La descrizione della scena
per POV-Ray:
"chain.txt" o "chain.pov"
 
top

© Friedrich A. Lohmüller, 2009
www.f-lohmueller.de