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
|
|
Gitterwerk einer Stahlbrücke
Objekte: Round_Box, cylinder.
Methoden: #local, #declare, union, #macro, #while loops, #if, Scherung mit 'matrix'.
Diese Beispiel zeigt wie man das Gitterwerk einer Gitterbrücke von Warren-Typ
für eine Straßen- oder Eisenbahnbrücke erstellt.
Hierbei kann man variable Größen für die Abmessungen der Brücke verwenden.
|
|
Die Konstruktion im Detail:
Schritt 0: Zuerst deklarieren wir die Grundvariablen für die Dimensionen der Brücke
(Texturen können beliebig gewählt werden!):
#local L =10.00; // bridge length .
#local H = 2.50; // bridge height
#local W = 1.50; // bridge width
#local BD = 0.50, // beam diameter
#local BR = 0.10; // beam border radius |
Step 1: Sodann berechnen wir die Anzahl der Unterteilungen (subdivision) und ihre
Länge für eine äquidistante Verteilung der Segmente. Ebenso deklarieren wir den Scherungsfaktor (shearing factor)
(Berechnung siehe nebenstehendes Abbildung):
// number of subdivisions:
#local NSub = int(L/H);
// distance for equidistant distribution: .
#local SubDistance = L/NSub;
// shearing factor:
#local S_Factor = 0.5*SubDistance/H;
|
Schritt 2: Now we make a pair of diagonal beams:
union{ // pair of diagonals
object{
Round_Box(<-BD/2,0,-BD/2>,<BD/2,H,BD/2>,BR,0)
matrix< 1, 0, 0, // matrix-shear_y_to_x
S_Factor, 1, 0,
0, 0, 1,
0, 0, 0>
} // -----------------------------------------
object{
Round_Box(<-BD/2,0,-BD/2>,<BD/2,H,BD/2>,BR,0)
matrix< 1, 0, 0, // matrix-shear_y_to_x
-S_Factor, 1, 0,
0, 0, 1,
0, 0, 0>
translate<SubDistance,0,0>
} // -----------------------------------------
}// end union pair of diagonals |
|
Wie man den Scherungsfaktor S berechnet.
Ein Paar gescherte Diagonalen.
|
Schritt 3: Nun platzieren wir die Diagonalen mit einer While-Schleife (grün).
Für ungerade Nummern spiegeln wir den Träger in x und verschieben ihn um 'SubDistance/2' in x-Richtung (rot).
Ferner addieren wir einen unteren und einen oberen Längsträger um denvollständigen Längsträger (side beam)
zu erhalten:
// number of subdivisions:
#local NSub = int(L/H);
// distance for equidistant distribution: .
#local SubDistance = L/NSub;
// shearing factor:
#local S_Factor = 0.5*SubDistance/H;
//-----------------------------------------
#local Side_Beam =
union{ // side strut
#local Nr = 0; // start counter at zero!
#while (Nr < 2*NSub )
object{
Round_Box(<-BD/2,0,-BD/2>,
<BD/2,H+2*BR,BD/2>,BR,0)
matrix< 1, 0, 0, // matrix-shear_y_to_x
S_Factor, 1, 0,
0, 0, 1,
0, 0, 0>
#if( Nr/2 != int(Nr/2 )) // uneven numbers
scale<-1,1,1>
translate<SubDistance/2,0,0>
#end
translate<Nr*SubDistance/2 + BD/2,-2*BR,0>
} // --------------------------------------
#local Nr = Nr + 1 ;
#end // end of loop
//-----------------------------------------
// bottom strut
object{
Round_Box(<0,-BD,-BD/2>,<L+BD,0,BD/2>,BR,0)
}
// top strut
object{
Round_Box(<SubDistance/2,-BD,-BD/2>,
<L-SubDistance/2+BD,0,BD/2>,BR,0)
translate<0,H,0>
}
} // end of union side strut
// ---------------------------------
object{ Side_Beam translate<0,0,0>}
|
|
Die Diagonalen mittels einer While-Schleife.
Das object{ Side_Beam }
|
|
Schritt 4: Das Makro Steel_Bridge_Framework_1
Zwei Längsträger oben und unten, einige Querträger und Diagonalen unten
und einige zusätzliche Längsträger vervollständigem das Gitterwerk der Brücke.
Wir fügen alles in einem Makro zusammen um die Konstruktion so flexibel wie möglich zu halten!
//--------------------------------------//////////
#macro Steel_Bridge_Framework_1(
Len, // bridge length
H, // bridge height
W, // bridge width
BD,// beam diameter
BR,// beam border radius
)// ------------------------
// -----------------------------------------------
// ------------------------------- default texture
#ifndef( Steel_Bridge_1_Texture_1 )
#declare Steel_Bridge_1_Texture_1 =
texture { pigment{ color rgb<1,1,1>*0.5}
normal { bumps 0.25 scale 0.35 }
finish { phong 1 }
} // end of texture
#end // ------------------------------------------
#local L = Len-BD; // inner bridge lenght
//------------------------------------------------
// number of subdivisions:
#local NSub = int(L/H);
// equidistant distribution:
#local SubDistance = L/NSub;
// shearing factor:
#local S_Factor = 0.5*SubDistance/(H+2*BR);
//------------------------------------------------
#local Side_Beam =
union{
#local Nr = 0; // start counter at zero!
#while (Nr < 2*NSub )
object{ Round_Box(<-BD/2,0,-BD/2>,
<BD/2,H+2*BR,BD/2>,BR,0)
texture{ Steel_Bridge_1_Texture_1 }
matrix< 1,0,0, // matrix-shear_y_to_x
S_Factor, 1, 0,
0,0,1,
0,0,0>
#if( Nr/2 != int(Nr/2 )) // uneven numbers
scale<-1,1,1>
translate<SubDistance/2,0,0>
#end
translate<Nr*SubDistance/2+BD/2,-2*BR,0>
} // -------------------------------------
#local Nr = Nr + 1 ;
#end // end
// bottom strut
object{ Round_Box(<0,-BD,-BD/2>,<L+BD,0,BD/2>,BR,0)
texture{ Steel_Bridge_1_Texture_1 }
}
// top strut
object{ Round_Box(<SubDistance/2,-BD,-BD/2>,
<L-SubDistance/2+BD,0,BD/2>,BR,0)
texture{ Steel_Bridge_1_Texture_1 }
translate<0,H,0>
}
} // end of union
// -----------------------------------------------
// ---------------------------------- final union:
#union{
object{ Side_Beam translate<0,0,-W/2+BD/2> }
object{ Side_Beam translate<0,0,-W/2+BD/2>
scale<1,1,-1> }
object{Round_Box(<0,-BD/2,-BD/3>,<L+BD,0,BD/3>,BR,0)
texture{ Steel_Bridge_1_Texture_1 }
translate<0,0,-W/4+BD>
}
object{Round_Box(<0,-BD/2,-BD/3>,<L+BD,0,BD/3>,BR,0)
texture{ Steel_Bridge_1_Texture_1 }
translate<0,0, W/4-BD>
}
#local Nr = 0; // start counter at zero!
#while (Nr <= NSub )
// foot traversals
object{ Round_Box(<-BD/2,-BD,-W/2>,
<BD/2,0,W/2>,BR,0)
texture{ Steel_Bridge_1_Texture_1 }
translate<Nr*SubDistance + BD/2,0,0>
}
// foot diagonals
#if( Nr < NSub )
object{ Round_Box(<-BD/4,-BD,-W/2+BD/2>,
<BD/4,-BD/2,W/2-BD/2>,BR,0)
texture{ Steel_Bridge_1_Texture_1 }
matrix< 1,0,0, // matrix-shear_y_to_x
0,1,0,
1*(SubDistance-BD)/(W-BD),0,1,
0,0,0>
#if((Nr/2) = int(Nr/2)) // even numbers
scale<1,1,-1>
#end
translate<(Nr+0.5)*SubDistance+BD/2,0,0>
}
#end // end diagonals
#local Nr = Nr + 1 ;
#end // end loop
} // end final union
#end // ----------------------------- end of macro
//--------------------------------------//////////
//------------------------------------------------
object{ Steel_Bridge_Framework_1(
10.00, // bridge length
2.00, // bridge height
4.00, // bridge width
0.30, // beam diameter
0.05,// beam border radius
)// ------------------------
rotate<0, 0,0> translate<0,0.0,0>
} //---------------------------------------------- |
Anmerkung: Für einen komfortableren Gebrauch diese Objects als Fertig-Objekt,
sollte das fertige Objekt in eine Include-Datei gepackt werden wie es
in nebenstehenden Beispieldateinen demonstriert wird!
|
Die unteren Träger, Diagonalen und Längsträger.
Das vollständige Gitterwerk einer Fachwerkbrücke.
The framework of a truss bridge.
Include file for POV-Ray:
"Steel_Bridge_Framework_1.inc"
and scene file for POV-Ray:
"Steel_Bridge_Framework_1_1.pov"
|
|
|
Download of all ready-made POV-Ray objects
zipped up (with all include files, example files and with
the according Insert Menu Add-ons for comfortable use!)
at the POV-Ray Objects Seite
|