Descriptions et exemples pour le POV-Ray raytracer par Friedrich A. Lohmüller,
traduit en français par Henri Girard.
English English English
Italiano  Italiano
Deutsch 

"scale" - échelle overview "transform" - transformations

Transformations géométriques

matrix {< , , >}
Matrice et Carte Affine

(voici précisément : le crénellage)

normal vertical shearing
Le mot clé "matrix"- peut être utilisé pour définir explicitement la matrice de transformation des objet ou textures.
La syntaxe de celui-ci :
 matrix <m00, m01, m02,
         m10, m11, m12,
         m20, m21, m22,
         m30, m31, m32>

Le nombre mij peut être n'importe quelle sorte d'expressions numériques
Il forme les éléments des 3 premières colonnes d'une matrice 4x4, dont la 4ème colonne est définie fixe en <0,0,0,1>.
Un point P1(x1/y1/z1) est inplémenté dans un autre point P2(x2/y2/z2) , selon la définition suivante :

x2 = m00*x1 + m10*y1 + m20*z1 + m30
y2 = m01*x1 + m11*y1 + m21*z1 + m31
z2 = m02*x1 + m12*y1 + m22*z1 + m32


Un peu abstrait, n'est-ce pas ? Voici quelques exemples pour le clarifier :

1) La matrice identité :
matrix < 1, 0, 0,
         0, 1, 0,
         0, 0, 1,
         0, 0, 0 >
2) Cette matrice produit une translation parallèle par le vecteur <2,3,4>:
matrix < 1, 0, 0,
         0, 1, 0,
         0, 0, 1,
         2, 3, 4 >
La même, mais plus efficace et plus facile à comprendre :    translate< 2, 3, 4>.
3) Rotation autour d'un axe avec un angle Alpha (mesuré en degrés) produite par la matrice suivante :
(Remarque : sinus et cosinux en POV-Ray ont besoin de leurs arguments quand l'angle est en radians !)
#declare A = radians(Alpha);
matrix<cos(A), 0, sin(A),
          0  , 1,    0  ,
      -sin(A), 0, cos(A),
          0  , 0,    0   >

Rotation autour de »y« de 30°
(sin30° = 0.5; cos30° = 0.886):

matrix <0.886, 0,   0.5,
          0  , 1,     0,
       -0.5  , 0, 0.886,
          0  , 0,     0 >

Même chose, seulement plus efficace et se comprenant mieux, est décrite par la commande : rotate< 0, Alpha, 0> .

4)la matrice suivante produit un rétrécissement d'un facteur de k = 3 avec le centre en O(0/0/0):
matrix < 3, 0, 0,
         0, 3, 0,
         0, 0, 3,
         0, 0, 0 >

Cette description peut être définie par "scale<3,3,3>" ou plus simplement par "scale 3" plus facile et qui se comprend mieux.


Ces exemples ont montré que des transformations simples sont décrites avec "matrix".

Normalement on n'utilise pas des matrices pour les transformations simples (translation, scaling = centric streching, rotation), parce-que c'est difficile à comprendre et demande beaucoup d'effort. Mais il existe un aspect intérêssant de l'instruction »matrix« : Celle-ci permet aussi de définir précisement le type général que l'on ne peut obtenir d'une autre façon tel que par exemple le crénellage »shearing«. Cette matrice produit un crénellage ou une texture selon l'axe »y« :


matrix < 1, 1, 0,
         0, 1, 0,
         0, 0, 1,
         0, 0, 0 >

Un crénellage selon la direction »y« de 30° est produit par :


  matrix< 1 , 0, 0,
         0.5, 1, 0,
          0 , 0, 1,
          0 , 0, 0 >


normal vertical

shearing

La combinaison de différentes cartes de matrices n'est pas facile à comprendre. La matrice suivante peut le montrer. Cette-ci effectue une rotation d'un objet autour de â??yâ?? de 30 degrés ensuite c'est crénellé selon »y« et une translation parallèle dans la direction »y« :

 matrix< 0.886, 0.5,  0.5  ,
           0  , 1  ,  0    ,
           0  , 0  ,  0.886,
           0  , 1.5,  0     >


Cela montre ce qui est recommandé » si vous n'avez pas beaucoup d'expérience avec le mapping « la façon de diviser de tels mappings en le faisant étape par étape:

 rotate<0,30,0> 
 //Shearing in y direction:
 matrix<1, 0.5, 0,
        0, 1  , 0,
        0, 0  , 1,
        0, 0  , 0 >
 translate<0,1.5,0>

Cette instruction fait pareil !


"scale" - échelle overview "transform" - transformations

© Friedrich A. Lohmüller, 2004
email email: (legacy email redacted)
homepage:www.f-lohmueller.de