|
Gittermast |
|
ohne/mit "macro" und mit while-SchleifeObjekte: "cylinder", "box"
|
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 //-------------------- |
|
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.
|
//-------------------------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 |
Zugehörige
|