Descriptions et exemples pour le POV-Ray raytracer par Friedrich A. Lohmüller
Transformations géométriques avec POV-Ray -
English English English
Italiano Italiano
Deutsch Deutsch

Page d'Accueil
- POV-Ray Tutoriel
  Transformations
  géométriques
   - Index

    Transformations
    élémentaires
    - "translate<  ... >"
    - "rotate<  ... >"
    - "scale<  ... >"
    - Réflexion

    Autres
    Transformations
    - "matrix<  ... >"
    - Cisaillement
    - transforms.inc

    - "transform{ ...}"
       et "inverse"

    Vecteurs et
    Transformations
    - vrotate
    - vaxis_rotate
    - vtransform
    - vinv_transform
    - vturbulence
    - vnormalize
    - vcross
    - vdot()
    - vlength()
    - VAngle(), VAngleD()
    - VProject_Axis

    Insert Menu Add-on
      & téléchargement
 
                                           
Vecteurs et Transformations
Des transformations des vecteurs et autres choses avec vecteurs en POV-Ray:

vrotate( V, <Rotate.x, Rotate.y, Rotate.z>)
Rotation d'un vecteur V autour du center <0,0,0>
par un vecteur de rotation <Rotate_X, Rotate_Y, Rotate_Z>.
vrotate( < 2.5, 1, 0>,
          < 0, 90, 0> ) 
vrotate example

vaxis_rotate( V1, V2, A)
Rotation de V1 autour de V2 par A degrés.
Rotation d'un vecteur autour un autre vecteur comme l'axe de rotation.
vaxis_rotate(< 0, 1, 0.5>,
             < 2, 3,   0>,
                       70 ) 
vaxis_rotate example

vtransform ( V, Transformation )
vinv_transform( V , Transformation )

Il exige : #include "transform.inc"
Combination de transformations comme translate, scale, rotate et matrix.
vtransform() applique une transformation à un point.
vinv_transform() fait la transformation inverse ('undo').
#declare A = < 1.5, 0.3, 0.25 >;
#declare Trans1 =
   transform{ rotate<0,-50,0>
              translate<0,0.7,0> };
#declare B = vtransform ( A, Trans1 );
vtransform example

vturbulence(Lambda, Omega, Octaves, V)
Retour avec le vecteur de turbulence pour le point V sur la base des valeurs de turbulence proposés. (Lambda, Omega, Octaves : POV-Ray Wiki.
L'amplitude Ampl de la turbulence peut être contrôlée an multipliant le vecteur de la turbulence. La frequency Freq la fréquence à laquelle les changements de vecteur de turbulence peuvent être contrôlée en multipliant V.
Nous pouvons obtenir une version du vecteur V avec turbulence par :
#declare V_Turb =
    V + Ampl*vturbulence(2, 0.5, 6, V*Freq);
vturbulence example
Example vturbulence.txt

vnormalize( V )
Un vecteur normalisé, un vecteur d'unité de longueur dans la direction de A.
Formule : vnormalize(A)= A / vlength(A).
avertissement:
Utiliser vnormalize (<0,0,0>) entraînera une erreur.
#if( vlength(V) != 0 )// if is not <0,0,0>
  #declare Vo = vnormalize( V );
#end
vnormalize example

vcross( V1, V2)
Le produit vectoriel de A et B (' A x B '),
un vecteur perpendiculaire aux deux vecteurs d'origine et avec la longueur égale à la surface du parallélogramme défini par eux. Formule:
AxB = |A|*|B|*sin(angle(A,B))*perpendicular_unit_vector(A,B)
La longueur du vecteur du produit vectoriel est proportionnel au sinus de l'angle entre A et B.
#declare YellowVector =
            vcross( BlueVextor, GreenVector);
vcross example

vdot( V1, V2)
Produit scalaire de V1 et V2. ('dot product', 'scalar product'). Il est directement proportionnel à la longueur des vecteurs V1 et V2 et le cosinus de l'angle entre V1 et V2.
Si Vdot (A, B) = 0, alors VAngleD (A, B) = 90 degrés.
Formule : vdot=V1.x*V2.x + V1.y*V2.y + V1.z*V2.z.
#declare Vyellow =
 Vright*vdot(Vleft,Vright)/vdot(Vright,Vright);
vdot example

vlength( V )
Retourne la longueur de V comme un nombre à virgule.
Formule : vlength = sqrt(vdot(A,A)).
#declare Distance_AB = vlength( B-A );
vlength example

VAngle( V1, V2 )
VAngleD( V1, V2 )

Il exige : #include "math.inc"
Ce retour de l'angle entre les vecteurs V1 et V2.
VAngle() renvoie l'angle en radians, VAngleD() en degrés.
VAngle example

VProject_Axis(V, Axis)
Il exige : #include "math.inc"
La projection d'un vecteur V sur l'd'un axe Axis.
Formule : Axis*vdot(V, Axis)/vdot(Axis, Axis).
#declare YellowV =
      VProject_Axis( BlueV, GreenV);
VProject_Axis example

Pour les transformations représentées ici on peut utiliser mes modèles de texte de la section "Shearing & transform" en mon "Insert Menu Add-on" .

translate | rotate | scale | matrix | cisaillement | transforms.inc | transform | transformations de vecteurs
top

© Friedrich A. Lohmüller, 2013
www.f-lohmueller.de