Page d'Accueil
- POV-Ray Tutorial
- Exemples POV-Ray
Table des matières
- Architecture
- Geometrie
- Technique
- Échelle
- Pylônes
- Garde-fou, Rambarde
- Pont
- 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
|
|
Bobine de fil
Enrouler un fil
Objets : cylinder, Segment_of_Torus.
Méthodes : #local, union, #while,
cos, tan, atan, VAngleD(), vlength()
|
|
Les dimensions de base :
#local WR = 0.065;// rayon du fil
#local WD = 0.19; // distance de fil (pas)
#local BR = 0.50; // rayon de base
#local Rmaj= 0.30; // grand rayon du coin
#local Revolutions = 3 ;// |
Un quart de tour du fil, de
point A (début) passé le coin Co au point de fin B.
La hauteur d'un quart de tour : WD/4
(image 2)
#local A = < 0, 0, -BR>;
#local B = < BR, WD/4, 0>;
#local Co = < BR, WD/8, -BR>;//corner |
Nécessaire fichiers include :
#include "math.inc" // pour VAngleD()
#include "shapes3.inc"// Segment_of_Torus |
Calcul des angles :
Calcul du angle jaune : (image 3)
// angle of vector ACo against xz plane
#local Wire_Angle = VAngleD(Co-A,<1,0,0>);
|
Calcul du angle violet : (image 3)
#local Len_Cyan =
WD/8*cos(radians(Wire_Angle));
// rotation angle of 2nd part CoB
#local Inner_Angle =
degrees(atan2(Len_Cyan,BR));
|
Calcul du angle de coin : (image 4 + 5)
L'angle à Co est inférieur à 90° !!!
#local Corner_Angle = VAngleD(Co-A,B-Co);
// corner linear length:
#local Co_Len =
Rmaj*tan(radians(Corner_Angle/2));
// linear wire part
#local Len_X = vlength(Co-A)-Co_Len; |
|
1) Bobine de fil avec 3 tours.
|
2) Un seul tour.
|
3) Géométrie d'un quart de tour.
|
4) Le segment de tore dans le coin.
|
5) Longueur de la partie de coin.
|
Un quart de tour du fil :
#local W_Corner =
object{ Segment_of_Torus(
Rmaj, // radius major,
WR, // radius minor,
-Corner_Angle // segment angle
) //----------------------------
rotate<0,90,0>
translate<-0,0,+Rmaj>
} // ------------------------------
#local Quarter =
union{
cylinder{ <0,0,0>,<Len_X,0,0>, WR }
object{ W_Corner
rotate<-Inner_Angle,0,0>
translate< Len_X,0,0> }
cylinder{ <0,0,0>,<Len_X,0,0>, WR
translate<0,0,-Rmaj>
rotate<0,-Corner_Angle,0>
translate<0,0,Rmaj>
rotate<-Inner_Angle,0,0>
translate<Len_X,0,0>
} //------------------
translate<0,0,-BR>
rotate<0,0,Wire_Angle>
} // end of union ---------------------- |
Enrouler le fil :
union{ //--------------------------------
#local Nr = 0; // start
#local EndNr = 4*Revolutions; // end
#while (Nr< EndNr) // loop
object{ Quarter
translate<0, Nr*WD/4,0>
rotate<0,-Nr*90,0>
} //----------------
#local Nr = Nr + 1; // next Nr
#end // ---------------// end of loop
// translate<0,WR ,0>
texture{ Wire_Texture }
rotate<0,0,0>
translate<0,0,0>
} // end of union ----------------------- |
|
|
|