Beispiele zum Raytracer POV-Ray von Friedrich A. Lohmüller
English   English English version

Leiter Themen Kanu im Wasser

Gittermast

ohne/mit "macro" und mit while-Schleife

Objekte:    "cylinder", "box"
Methoden: "declare", "local", "union", "#macro", "while"

Ein Segment eines Gittermastens wird aus einen horizontalen Rahmen aus Rohren ("cylinder") mit Kugeln in den Ecken sowie aus den vertikalen Rohren zusammengebaut. Das einzelne Segment besitzt oben keinen Abschlluß, da dort bereits das nächste Segment anschließt.

//--------------------- Dimensionen --------
#declare R1 = 0.050; // main radius
#declare R2 = 0.025; // diagonals radius 
#declare W = 1.00-R1;// half width(outline!)
#declare H = 2.00;   // height
//---------------------- horizontaler Rahmen
#macro Square_Q(R1_, W_ ) 
union{ 
 cylinder{<-W_,0,0>,<W_,0,0>,R1_ translate<0,0,-W_>}
 sphere  {<0,0,0>,R1_ translate<W,0,-W_>} 
} #end //-----------------

#macro Square (R10, W0) 
union{  
 object{ Square_Q(R10, W0) rotate<0,0*90,0>}
 object{ Square_Q(R10, W0) rotate<0,1*90,0>}
 object{ Square_Q(R10, W0) rotate<0,2*90,0>}
 object{ Square_Q(R10, W0) rotate<0,3*90,0>}
     } #end  //-----------------------------
//---------------------- vertikale Elemente:
#macro V_Element (R10, R20, W0, H0) 
union{ 
 cylinder {<0,0,0>,<0,H0,0>,R10
                       translate<-W0,0,-W0>}
 // diagonal:
 cylinder{<-W0,0,0>,<W0,H0,0>,R20 
                     translate<0,0,-W0+R20>}
 cylinder{<W0,0,0>,<-W0,H0,0>,R20
                     translate<0,0,-W0-R20>}
   } #end //--------------------------------

#macro Element_4 (R11, R21, W1, H1)
union{ 
object{ Square (R11, W1) }
 //vertical:
object{V_Element(R11,R21,W1,H1) rotate<0,0*90,0>}
object{V_Element(R11,R21,W1,H1) rotate<0,1*90,0>}
object{V_Element(R11,R21,W1,H1) rotate<0,2*90,0>}
object{V_Element(R11,R21,W1,H1) rotate<0,3*90,0>}
translate<0,R1,0>} #end  //-------------------- 
Gittermast  Rahmen
Gittermast vertikal
Gittermast Element

Dieses Gittermasten-Segment läßt sich noch flexíbler verwenden, wenn man es aus "macros" definiert. Dadurch lassen sich die Größenverhältnisse beliebiger festlegen. Ein Beispiel finden Sie im Quellentext zu der folgenden Szene - dadurch geänderte Teile der Objektbezeichnungen sind im folgenden fett hervorgehoben.
Im Folgenden wird der Gittermast aus gleichen Segmenten mittels einer While-Schleife zusammengebaut.

//-------------------------Texturen ----------
#declare Texture1 =
 texture{
   pigment{color White}
   finish {ambient 0.45 diffuse 0.55 phong 1}}
#declare Texture2 =
 texture{
   pigment{color White*0.7}
   finish {ambient 0.45 diffuse 0.55 phong 1}}
//--------------------------------------------
// Basis:   
box {<-1,0,-1>,< 1,0.05,1>
      scale <W+0.1,1,W+0.1> texture{Texture2}}
//------------ Zusammenbau mit While-Schleife
// tower:
#declare Nr = 0;    // start
#declare EndNr = 8; // end

union{
#while (Nr < EndNr) 
   object{ Element_4(R1, R2, W, H)
           texture{Texture1}
           translate<0,Nr*H,0>} 
 #declare Nr = Nr + 1;  // next Nr
#end // --------------- end of loop 
object{ Square (R1, W)   texture{Texture1}
        translate<0,Nr*H+R1,0>} 
translate<0,0.05,0> }
//-------------------------------------- end
Gittermast  640x480

Zugehörige
vollständige
Szenenbeschreibung
für POV-Ray


Leiter Themen Kanu im Wasser

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