Home
- POV-Ray Tutorial
- Esempi per POV-Ray
Indice generale
- Geometria
- Architettura
- Tecnica
- Scala a Pioli
- Piloni e Tralicci
- Parapetto
- Ponte
- Tubi e Tubature
- Bifucazione di Tubi
- Rubinetto di Arresto
- Catena
- Bobina di filo
- Torpedo
- Cruise Missile
- Razzo, Missile
- Ruota
- Camion
- Elica
- Aeroplano
- Canoa
- Chitarra
- Display a 7 Segmenti
- Cavo piatto
- Fascio di cavi
|
|
Come si fa il Traliccio d'acciaio
di un Ponte a traliccio
Ogetti: Round_Box, cylinder.
Metodi: #local, #declare, union, #macro, #while loops, #if,
scorrimento elastico con matrix.
Qui un esempio come si può fare il traliccio d'acciaio un ponte a traliccio
per strade o come un ponte ferroviario.
È possibile usare misure variabili per le dimensioni del traliccio.
|
|
La Costruczione nel dettaglio:
Passo 0: Prima dichiaramo le variabili di base per le dimensioni del ponte
(Le testure sono alla vostra libera scelta !):
#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 |
Passo 1: Poi calculiamo il numero delle suddivisioni e la lunghezza delle suddivisioni
per una distibuzione equidistante dei segmenti. Calculiamo anche il fattore dello scorrimento elastico
(shearing factor)
(Come calculare q.v. l'immagine in margine!):
// 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;
|
Passo 2: Inoltre facciamo un paio di diagonali:
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 |
|
Come calculare il fattore dello scorrimento elastico S.
Paio di diagonali con lo scorrimento elastico.
|
Passo 3: Adesso posizioniamo le diagonali con un while loop (verde).
Per numeri dispari facciamo un immagine riflessa al asse x e spostiamo la diagonale con 'SubDistance/2' in direzione x (rosso).
Aggiungiami anche una trave di base et al spigolo superiore per ottenere una travatura lungo del ponte (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>}
|
|
Le diagonali con un while loop.
L'ogetto: object{ Side_Beam }
|
|
Passo 4:La macro Steel_Bridge_Framework_1
Due trave lungo i lati, qualche traversa e diagonali
e qualche trave addizionale per completare il ponte.
Aggiungiamo tutti insieme in una macro per ottenere una costruzione cosi flessibile come possibile!
//--------------------------------------//////////
#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>
} //---------------------------------------------- |
Nota: Per una applicazione più comodo come un oggetto pronto per l'uso
dobbiamo scrivere tutto in un include file come demostrato nei file di esempio qui in margine!
|
Le traverse, diagonali e trave lungo il ponte.
Il traliccio completo di un ponte.
Il traliccio di un ponte.
Include file per POV-Ray:
"Steel_Bridge_Framework_1.inc"
e file de scena per POV-Ray:
"Steel_Bridge_Framework_1_1.pov"
|
|
|
Oggetti pronto per l'uso per POV-Ray
come archivi include con archivi esempio
sono su la paggina Oggetti POV-Ray.
|