Rotation Around an Axis
The VRML command
rotation v1 v2 v3 phi , or the point x = ( x1, x2, x3 )
requires a 3x3 Matrix.What is the easiest way to calculate this matrix?.
Any point x can be decomposed into two components for a vector v:
a) the parallel component: k1 = ( vvT / v² ) · x
b) the orthogonal component: k2 = ( I - vvT / v² ) · x
The parallel component does not change during rotation.
The orthogonal components and the vector product of v with x span a two-dimensional coordinate system.
It is then sufficient to perform the rotation in this coordinate system.
Vektor product ( v ( normalized ), x ) = Bi · x
Bi is the bivector of vn. vn = v-normalized; so that the two coordinate axes are equal in length, or, equivalently,
the matrix does not depend on the length of v.
x' = ( vvT / v² + cosine ( phi ) · ( I - vvT / v² ) + sine ( phi ) · Bi ) · x
The matrix is complete. This result is also known as the Rodrigues formula.
Why is the sine positive? The projection of x onto the orthogonal plane corresponds to the x-axis of the coordinate system. Only this axis is rotated.
Therefore, only the first column of the usual two-dimensional rotation matrix is used (y=0).
This also yields a unitary matrix with more dimensions but only one angle (phi):
U = vvT / v² + e i · phi · ( I - vvT / v² )
In general, one can construct a complex symmetric unitary matrix with real orthogonal eigenvectors with
Q j = v j · v jT / vj² , z j = e i · phi j , j = 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
The vectors vjmust be orthogonal to each other.
For (complex-) symmetric matrices, if all eigenvalues have absolute value one, the matrix is unitary,
since products of unitary matrices remain unitary.
Note: The matrix I - 2vvT / v² :the reflection across the orthogonal plane of v.
The orthogonal component remains unchanged, while the parallel component moves in the opposite direction.
Note 2: M · MT = I, If you recalculate, you'll see: Bi2 = - ( I - vvT / v² )
Matrix Multiplication:
A scalar product ( vTw ) or the dyadic product ( vwT ) can be written as a matrix product.
For a matrix product, the number of columns in the first matrix must match the number of rows in the second matrix.
The result then has the number of rows in the first matrix and the number of columns in the second matrix.
The items contain the scalar products of the rows of the first matrix with the columns of the second matrix.
However, matrix multiplication can also be viewed as the sum of the dyadic products of the columns
of the first matrix with the row vectors of the second matrix.
Ludwig Resch
|