POV-Ray Raytracer Beschreibungen und Beispiele von Friedrich A. Lohmueller
        English version

Übersicht overview    

Kettenglieder und Kette

Objekte:  "sphere", "box", "cylinder".
Methoden: "#declare", "union", "difference",
                    "#while", "#if",.

Dieses Beispeiel zeigt wie man eine Kette aus Kettengliedern bauen kann. Es ist möglich dabei alle Abmessungen der Kette variabel zu wählen.

Der Zusammenbau im Detail:

Schritt 0: Wir definieren vorweg die grundaä,tzlichen Abmessungen des Torus, der für die Kettenglieder verwednet wird:
#declare R_min = 0.25;
#declare R_maj = 1.00;
#declare Half_L = 0.25; // halber gerader Abschnitt!
#declare Link_Length =  2*(R_maj); 
Schritt 1: Wir definieren eine "box", welche die rechte Hälfte des Torus umfasst und subtrahieren diese vom Torus:
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

Schritt 2: Wir verschieben die erhaltene Torushälfte um die halbe Länge des geraden Teiles nach links. Dann addieren wir einen (nur einen!) geraden Kettengliedsabschnitt dazu und definieren das ganze Objekt als "Left_Half".
Schießlich spiegeln wir das neue Objekt an <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 {ambient 0.15 diffuse 0.85 
                 phong 0.5 reflection 0.2}
        } // end of texture
} // end of Chain_Element 
chain
chain

Schritt 3: Um eine Kette zu bauen müssen wir die einzelnen Kettenglieder um "Link_Length" nach +x verschieben. Ferner muss jedes zweite Kettenglied um 90 Grad um die x-Achse gedreht werden.
Dies läßt sich alles sehr ökonomisch mit einer While-Schleife erledigen:

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

Szenenbeschreibung für eine Kette mit POV-Ray:
".txt"-Datei or ".pov"-Datei

Übersicht overview    

© Friedrich A. Lohmüller, 2003     email email: (legacy email redacted)