Beschreibungen und Beispiele zum Raytracer POV-Ray von Friedrich A. Lohmüller
    POV-Ray Beispiele - Die Erstellung von Objekten für POV-Ray
English English English
Italiano Italiano
Français français

Home
- POV-Ray Tutorial

  - POV-Ray Beispiele
    Inhaltsübersicht
  - Geometrie
  - Architektur
  - Technik
    - Leiter
    - Masten
    - Geländer
    - Brücke
    - Röhren
    - Rohrabzweigung
    - Rohr-Absperrhahn
    - Kette
    - Drahtspule
    - Torpedo
    - Cruise Missile
    - Rakete
    - Rad
    - Truck
    - Propeller
    - Flugzeug
    - Kanu
    - Gitarrenbody
    - 7-Segment Display
    - Flachbandkabel
    - Kabelbaum
                                       
 
Kette

Kettenglieder
und eine Kette

Objekte:    sphere, box, cylinder.
Methoden: #declare, union, difference, #while, #if.
Dieses Beispiel 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 grundsätzlichen Abmessungen des Torus, der für die Kettenglieder verwendet 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 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

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:
"chain.txt" oder "chain.pov"
top
© Friedrich A. Lohmüller, 2009
www.f-lohmueller.de