|
English
Italiano Deutsch |
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 |
1) La matrice identité :
|
2) Cette matrice produit une translation parallèle par le vecteur <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 !)
Rotation autour de »y« de 30°
Même chose, seulement plus efficace
et se comprenant mieux, est décrite par la commande :
|
4)la matrice suivante produit un rétrécissement d'un
facteur de k = 3 avec le centre en O(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 : | ||
|
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 !