|
English
Italiano Français |
Home - Geometrische Transformationen - Inhalt Elementare Transformationen - "translate< ... >" - "rotate< ... >" - "scale< ... >" - Spiegelung Weitere Transformationen - "matrix< ... >" - Scherung - transforms.inc - "transform { ... } " und "inverse" Vektoren und Transformationen Insert Menu Zusatz & Download |
matrix < , , >
Das "matrix"-Schlüsselwort kann dazu benutzt werden |
matrix <m00, m01, m02, m10, m11, m12, m20, m21, m22, m30, m31, m32> |
wobei die Zahlen mij
beliebige Kommazahlen- Ausdrücke ("float expressions")
sein dürfen, welche die Elemente der ersten 3 Spalten einer 4x4-Martrix darstellen,
deren 4. Spalte hierbei fest als <0,0,0,1> definiert ist.
Ein Punkt P1(x1/y1/z1)
wird in einen Punkt P2(x2/y2/z2)
transformiert, wobei gilt:
x2
= m00*x1
+ m10*y1
+ m20*z1
+ m30 |
1) Matrix der identischen Abbildung:
|
2) Diese Matrix bewirkt eine Parallel-Verschiebung um den Vektor <2,3,4>:
|
|||
3) Drehung um die y-Achse mit einen Winkel Alpha (in Grad) durch die folgende Matrix: (Besonderheit: sin und cos benötigen in POV-Ray das Winkel-Argument in Radians!)
Drehung um die y-Achse um 30°
Dasselbe, nur ebenfalls rationeller und anschaulicher, beschreibt
der bekannte Befehl: |
4) Die folgende Matrix bewirkt eine zentrische Streckung um den
Streckungsfaktor k = 3 mit dem Ursprung O(0/0/0) als Zentrum:
Auch diese Abbildung ist mittels "scale< 3, 3, 3>" oder einfacher durch "scale 3" leichter und anschaulicher zu erreichen. |
Diese Beispiele zeigen, daß sich
mit "matrix" alle einfachen Abbildung erreichen lassen.
Für gewöhnlich wird man für einfachere Transformationen
(Verschiebung, Skalierung = zentrische Streckung, Drehung) keine
Transformationsmatrix verwenden, da sie die Abbildung mit
größerem Aufwand beschreibt und schwerer vorzustellen ist. Es
gibt jedoch einen interessanten Aspekt des Matrizenbefehls:
Er erlaubt allgemeinere affine Abbildungen, wie z.B. die
Scherung (shering), welche auf andere Weise nicht zu erreichen sind.
Eine Scherung längs der x-Richtung um 30° | ||
|
Hintereinander-Ausfühung verschiedener Abbildungen sind bei Matrizen selten optisch leicht zu trennen. Die folgende Matrix mag dies verdeutlichen. Sie rotiert um die y-Achse um 30° und schert längs der y-Achse und verschiebt parallel in y-Richtung:
matrix< 0.886, 0.5, 0.5 , 0 , 1 , 0 , 0 , 0 , 0.886, 0 , 1.5, 0 > |
Es ist daher empfehlenswert solche wenig durch- schaubare Abbildungsanhäufungen,
sofern man wenig Routine besitzt, möglichst klassisch, d.h. getrennt abzuhandeln:
rotate<0,30,0> //Scherung in y-Richtung: matrix<1, 0.5, 0, 0, 1 , 0, 0, 0 , 1, 0, 0 , 0 > translate<0,1.5,0> |
Diese Befehlsfolge bewirkt dasselbe.
matrix <k, 0, 0, 0, k, 0, 0, 0, k, 0, 0, 0 > |
matrix <k, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 > |
matrix <p, 0, 0, 0, q, 0, 0, 0, r, 0, 0, 0 > |
Hinweis: |
© Friedrich A. Lohmüller, 2008 |