|
English
Français Deutsch |
matrix <m00, m01, m02, m10, m11, m12, m20, m21, m22, m30, m31, m32> |
Qui i valori numerici mij
possono essere di tutti i tipi d'espressioni per numeri reali.
Formano gli elementi delle 3 prime colonne di una 4x4 matrice con la quarta colonna
definito fisso con <0,0,0,1> .
Un punto P1(x1/y1/z1)
si trasforma in un punto altro P2(x2/y2/z2)
, con la definition seguente:
x2
= m00*x1
+ m10*y1
+ m20*z1
+ m30 |
1) La matrice della corrispondenza identica:
|
2) Questa matrice causa una traslazione (spostamento m parallelo)
con il vettore <2,3,4>:
|
|||
3) Rotation intorno alla asse y con un angelo di Alpha (misurato in gradi)
è causata dalla matrice seguente: (Nota: seno e coseno in POV-Ray impóngono i valorie dei angoli in radiante!)
Rotation intorno alla asse y con 30°
|
4) La matrice seguente causa un'espansione addizionale con il fattore k = 3
con il centero O(0/0/0):
Anche questa orrispondenza si può avere più effettivo e meglio da capire con: "scale<3,3,3>" ou più facile con "scale 3" . |
Questi esempii hanno dimonstrato come tutte le trasformazioni semplici possono
essere descritto con "matrix".
Normalmente
non usiamo matrici di trasformazione per tutte queste trasformazioni
(traslazione, cambiare scala, espansione centrico, rotazione),
perchè sono difficili da capire in questa forma.
Ma qui esiste un aspetto molto interessante nel commando "matrix":
Esistono corrispondenze affini di maniera più generale que non si può avere
in un modo altro, cioè lo scorrimento elastico (shearing).
La matrice seguente causa uno scorrimento elastico
di un oggetto ou di una testure in direzione del'asse y:
matrix < 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 > |
Uno scorrimento elastico in direzione y con 30°: | ||
|
La combinazione di corrispondenze differenti con matrici spesso non sono facile da capire. La matrice seguente può dimostrale. Questa mactice ruota un oggetto intorno al asse y con 30° e poi causa uno scorramento elastico in direzione y e una traslazione in direzione y:
matrix< 0.886, 0.5, 0.5 , 0 , 1 , 0 , 0 , 0 , 0.886, 0 , 1.5, 0 > |
Quest'esempio mostra perche è ricommandato di dividere corrispondenze di questo tipo
e farle passo a passo - se non abbiamo esperienza abbastanza con questo:
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> |
Questi commandi fanno lo stesso!