###### Descriptions and Examples for the POV-Ray Raytracerby Friedrich A. Lohmüller     POV-Ray Examples - How To Make Objects for POV-Ray
Italiano
Français
Deutsch

Home
- POV-Ray Tutorial
- POV-Ray Examples
Index of Content
- Geometry
- Architecture
- Engineering
- Pylons
- Railing
- Bridge
- Tubes
- Tube Fork
- Tube Stopcock
- Chain
- Coil of Wire
- Torpedo
- Cruise Missile
- Rocket
- Wheel
- Truck
- Propeller
- Airplanes
- Canoe
- Guitar Body
- 7-Segment Display
- Ribbon Cable
- Cable Harness

How To Make a
Steel Bridge Framework

###### This example shows how to make the framework of a truss bridge for railroad / railway (Warren or Neville type). It is possible to use variable sizes for the dimensions of the bridge.

The Construction in details:

Step 0: First we declare the basic variables for the dimensions of the bridge (textures are up to you!):
 ```#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: Then we calculate the number of subdivisions and their lenght for an equidistance distibution of the segments. We also declare the shearing factor (How to calculte see the opposite image):
 ``` // 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; ```
Step 2: Now we make a pair of diagonal beams:
 ```union{ // pair of diagonals object{ Round_Box(<-BD/2,0,-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>,,BR,0) matrix< 1, 0, 0, // matrix-shear_y_to_x -S_Factor, 1, 0, 0, 0, 1, 0, 0, 0> translate } // ----------------------------------------- }// end union pair of diagonals```

How to calculate the shearing factor S. pair of sheared diagonals.
Step 3: Now we place the diagonals by a while loop (green). For uneven numbers we mirror the beam in x and move it by 'SubDistance/2' in x (red). We also add a bottom beam and a top beam to get a complete side beam:
 ```// 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>, ,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 #end translate } // -------------------------------------- #local Nr = Nr + 1 ; #end // end of loop //----------------------------------------- // bottom strut object{ Round_Box(<0,-BD,-BD/2>,,BR,0) } // top strut object{ Round_Box(, ,BR,0) translate<0,H,0> } } // end of union side strut // --------------------------------- object{ Side_Beam translate<0,0,0>} ```
The diagonals by a while loop. The object{ Side_Beam }

Step 4: The macro Steel_Bridge_Framework_1
Two side beam, some floor beams and diagonals and some additonals stringers complete the bridge. We add all together in a macro to keep the construction as flexible as possible!
 ```//--------------------------------------////////// #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>, ,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 #end translate } // ------------------------------------- #local Nr = Nr + 1 ; #end // end // bottom strut object{ Round_Box(<0,-BD,-BD/2>,,BR,0) texture{ Steel_Bridge_1_Texture_1 } } // top strut object{ Round_Box(, ,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>,,BR,0) texture{ Steel_Bridge_1_Texture_1 } translate<0,0,-W/4+BD> } object{Round_Box(<0,-BD/2,-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>, ,BR,0) texture{ Steel_Bridge_1_Texture_1 } translate } // foot diagonals #if( Nr < NSub ) object{ Round_Box(<-BD/4,-BD,-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> } //----------------------------------------------```
Note: For a more comfortable use of this as a ready-made object it should be put in an include file as demonstrated in the opposite sample files!

The floor beams, diagonals and stringers.

The complete framework of the truss bridge.

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"