zurück

Drehung um eine Achse

Der VRML Befehl

rotation v1 v2 v3 phi , für den Punkt x = ( x1, x2, x3 )

erfordert eine 3x3 Matrix.Wie errechnet man am einfachsten diese Matrix.
Ein beliebiger Punkt x kann man - zu einem Vektor v - in zwei Komponenten zerlegen:
a) die gleichlaufende Komponente: k1 = ( vvT / v² ) * x
b) die orthogonale Komponente: k2 = ( I - vvT / v² ) * x
Die gleichlaufende Komponente ändert sich bei der Drehung nicht. Die orthogonalen Komponente, und das Vektorprodukt von v mit x, spannen ein zwei-dimensionales Koordinatensystem auf. Es reicht dann, wenn man die Drehung in diesem Koordinatensystem ausführt.

Vektorprodukt ( v ( normiert ), x ) = Bi * x

Bi der Bivektor von vn. vn = v-normiert; damit die beiden Koordinatenachsen gleich lang sind oder, gleichbedeutend, die Matrix nicht von der Länge von v abhängt.

x' = ( vvT / v² + cosinus ( phi ) * ( I - vvT / v² ) + sinus( phi ) * Bi ) * x

Fertig ist die Matrix. Dieses Ergebnis ist auch als Rodrigues-Formel bekannt.
Warum ist der Sinus positiv? Die Projektion von x auf die Orthogonal-Ebene entspricht der X-Achse des Koordinatensystems. Nur diese wird gedreht. Von der üblichen zwei-dimensionalen Drehmatrix wird also nur die erste Spalte benutzt (y=0).
So auch erhält man eine unitäre Matrix mit mehr Dimensionen aber nur einen Winkel (phi):

U = vvT / v² + e i * phi * ( I - vvT / v² )

Allgemein kann man komplex symmetrische unitäre Matrix mit reellen orthogonalen Eigenvektoren konstruieren mit

Q i = v i * v iT / vi² , z i = e i * phi i , i = 1 ... k, k<=n
U = z 1 * Q 1 + ... z k * Q k + ( I - Q 1 - ... Q k ) = I + ( z 1 - 1 ) * Q 1 + ... ( z k -1 ) * Q k

Die Vektoren v i müssen zueinander orthogonal sein.
Anmerkung:
Bekannt ist die Matrix I - 2vvT / v² : Die Spiegelung an der Orthogonalebene von v.
Die orthogonale Komponente bleibt unverändert, die gleichlaufende geht in die entgegengesetzte Richtung.
Anmerkung 2:
M * MT = I, rechnet man nach, fällt auf: Bi2 = - ( I - vvT / v² )

Ludwig Resch