Page d'Accueil
- POV-Ray Tutorial
- Exemples POV-Ray
Table des matières
- Architecture
- Geometrie
- Technique
- Échelle
- Pylônes
- Garde-fou / rambard
- Pont
- Tubes
- Tuyaux
- Bifurcation de Tuyau
- Robinet d'Arrêt
- Chaîne
- Bobine de fil
- Torpedo
- Cruise Missile
- Missile
- Roue
- Camion
- Hélice
- Avion
- Canoë
- Guitare
- Afficheur 7 segments
- Câble plat - Nappe plat
- Harnais de câbles
|
|
Comment faire le treillis métallique
d'un pont .
Objets : Round_Box, cylinder.
Méthodes : #local, #declare, union, #macro, #while loops, #if,
cisaillement avec matrix.
Avec cet exemple on peut voir comment on peut faire le treillis métallique d'un pont
avec les poutres type Warren pour une rue ou pour un pont de chemin de fer.
Il est possible utiliser mesures variables pour les dimensions du treillage du pont.
|
|
La construction en detail :
Partie 0 : En premier lieu nous définissons les variables de base
pour les dimensions du pont (textures à votre choix !):
#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 |
Partie 1 : Après nous calculons le nombre de subdivisions et leur
longueur pour une distribution équidistant des segments. De même le facteur de cisaillement
( calculation voire l'image ci-contre ) :
// 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;
|
Partie 2 : Puis nous faissons une paire de diagonales:
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 |
|
comment calculer le facteur de cisaillement S.
Une paire des diagonales cisaillées.
|
Partie 3 : Maintainant nous arrangons les diagonales avec un boucle while (vert).
Pour nombres impairs nous devons renverser les poutres en x et déplacer les poutres de 'SubDistance/2' en direction x (red).
Nous ajoutons aussi un longeron au-dessous et au-desus pour completer les poutres d'un côté (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>,
<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>}
|
|
Les diagonales par un boucle while.
L' object{ Side_Beam }
|
|
Partie 4 : La macro Steel_Bridge_Framework_1
Deux poutres latérales, quelques poutres de travers au-dessous et des diagonales
et quelques longerons additionnels font un pont parfait.
Nous ajoutons tous ensemble à une macro pour obtenir la construction si flexible que 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>,
<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>
} //---------------------------------------------- |
Note : Pour une utilisation plus confortable comme un objet prêt à l'usage
nous devons mettre cet objet dans un fichier include comme on peut voir dans le fichiers exemple ci-contre !
|
Les poutres de travers au-dessous, les diagonales et les longerons.
Le treillis métallique complet du pont.
Le treillis métallique d'un pont.
Le fichier include pour POV-Ray :
"Steel_Bridge_Framework_1.inc"
et le fichier de scène pour POV-Ray :
"Steel_Bridge_Framework_1_1.pov"
|
|
|
Objets prêt à l'usage pour POV-Ray
comme fichiers include avec fichiers exemple
on peut trouver sur la page des Objets prêt à l'usage pour POV-Ray
|