Descriptions et exemples pour le POV-Ray raytracer par Friedrich A. Lohmueller
      Objets POV-Ray - Comment faire des objets pour POV-Ray
English English English
Italiano  Italiano
Deutsch 

Page d'Accueil
- POV-Ray Tutorial

  - Exemples POV-Ray
    Table des matières
  - Architecture
  - Geometrie
  - Technique
    - Échelle
    - Pylônes
    - Garde-fou, Rambarde
    - Pont
    - Tuyaux
    - Bifurcation de Tuyau
    - Robinet d'Arrêt
    - Chaîne
    - Bobine de fil
    - Torpedo
    - Cruise Missile
    - Missile
    - Roue
    - Camion
    - Hélice
    - Avion
    - Canoë
    - Guitare
    - Afficheur 7 segments
    - Câble plat - Nappe plat
    - Harnais de câbles
                                       
 
Chain

Maillons d'une Chaîne
et une Chaîne

Objets :     sphere, box, cylinder.
Méthodes : #declare, union, difference, #while, #if.
Cet exemple fait voir comment on peut construire une chaîne. Il est possible utiliser des dimensions variables pour les maillons de la chaîne.

La Construction en detail :
 
Pas 0 : Déclaration les dimensions de base d'un tore utilisé pour le maillon :
#declare R_min = 0.25;
#declare R_maj = 1.00;
#declare Half_L = 0.25;
 // = la moitié de la section droite !
#declare Link_Length =  2*(R_maj);       
Pas 1 : Définition d'une box que contient la moitié à droite du tore et soustraction ce box de la forme du tore :
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

Pas 2: Nous devons mouvoir le semitore à gauche par la moité du longeur de la section droite du maillon de la chaîne. Puis on doit ajouter une (seulement une!) partie droite (un cylindre) au maillon.
Après cela nous déclarons ces deux parties comme un objet nouveau "Left_Half" et puis faissions une réflexion de cet élément au point <0,0,0> par "scale<-1,-1,1>" :

#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

Pas 3: Pour la construction d'une chaîne nous avons besoin de mouvoir les maillons par une distance déclarée avec "Link_Length" et nous devons tourner chaque second maillon par 90 degré autour de axe x.
Tout cela nous pouvons faire avec une méthode très économique avec un boucle "while" :

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 description de la scène pour POV-Ray :
"chain.txt" ou "chain.pov"
 
top

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