Quantifying 3d Rotations

Fuck this… here's the .pdf:
https://netfiles.uiuc.edu/bosiljev/ME598

by Andy Bosiljevac

The Euler rotation theorem states that any three-dimensional rotation can be described by
a single rotation about an oblique axis (known as the Euler axis) by an angle of θ.
Figure 1: Graphical representation of the Euler axis and angle of rotation.1
However, such rotations can be quantified by several different methods, some of which are more
mathematically difficult than others. In this report, I will explain three of the methods used,
which are referred to as the directional cosine matrix (DCM), Euler angles, and quaternions.
The DCM method of quantifying rotations is the most straightforward, but also requires
specification of a total of nine parameters to describe the system. The nine parameters simply
describe the rotated i, j, and k-axes as vectors:

(1)
\begin{align} A = \left[ {\begin{array}{*{20}c} {\widehati_x } & {\widehatj_x } & {\widehatk_x } \\ {\widehati_y } & {\widehatj_y } & {\widehatk_y } \\ {\widehati_z } & {\widehatj_z } & {\widehatk_z } \\ \end{array}} \right] [[\math]] (1) where the i, j, and k axes have components in the x, y, and z-directions. This method is simple and straightforward. A few properties of the matrix are that the determinant is equal to 1, and the eigenvalues of the matrix are {1, ejθ, e-jθ}, where θ is the angle of rotation about the Euler axis in figure 1. One additional characteristic about this matrix is that the eigenvector corresponding to the eigenvalue of 1 describes, in vector form, the Euler axis. However, this is getting a bit outside the realm of the DCM method, and this will be covered a bit later. The second method is described by three individual rotations about the Euler angles α, β, and γ. The first rotation is about the global (and local) z-axis by an angle α: Figure 2: The first Euler rotation about the z-axis (k-axis).2 In the above figure, the i-axis after the first rotation (denoted x'') will be referred to as the “line of nodes” from this point forward. The second Euler rotation is about this new line of nodes, which is the local i-axis: Figure 3: The second Euler rotation about the line of nodes.3 The final rotation is done about the k-axis again, resulting in the final configuration of the local coordinate axes: Figure 4: The third and final rotation about the k-axis.4 The above three rotations are known as a zxz convention, since the axes rotate in the listed order. However, depending on the application, it can be more useful to use a different permutation of rotations, which can be described as xyx, xzx, yxy, yzy, or zyz conventions. In order to extract the Euler angles from a rotated coordinate system, the line of nodes must be found by taking the cross-product of the global and local k-axes: [[math]] $L = \frac{{K \times k}}{{|K \times k|}}$ \end{align}

(2)
where K and k are both vectors. Next, by simple vector identities, the first angle of rotation can
be found:

$\alpha = \arccos (I \cdot L)$ (3)
Then, by inspection, if the y-component of the line of nodes is positive, then α is positive. The
converse is also true. Next, in order to quantify the second Euler angle:

$\beta = \arccos (K \cdot k)$ (4)

This works only because there is a single rotation of the local z-coordinate. Again, by inspection,
if the following conditions are true, then β is positive: α is positive and the x-component of the
k-axis is positive, or α is negative and the x-component of the k-axis is negative. β is negative if
α and the x-component of the k-axis do not match signs. Lastly, the third angle is calculated:

$\gamma = \arccos (L \cdot i)$ (5)
Determining the sign of γ is done similarly to β, where positivity holds if β and the z-component
of the i-axis are both positive or negative, and negativity holds when they have opposite signs.
This technique obviously requires quite a bit of computation and if-then statements, and the
rotation matrix for a vector takes the following form:
M
!"# =
cos! cos# $cos" sin! sin#$ cos" cos# sin! $cos! sin# sin! sin" cos# sin! + cos! cos" sin# cos! cos" cos#$ sin! sin# \$ cos! sin"
sin" sin# cos# sin" cos"
%
&
'''
(
)
***
The final technique, which is based on the DCM method, is the method of using
quaternions. Essentially, by using three imaginary numbers, which form a three-dimensional
vector when combined, and one real number scalar, any rotation can be mapped. A few key
points about the imaginary vector components are that they are orthogonal and anticommutative,
so the following properties are true:
i = j = k = !1
ij = k
jk = i
ki = j
ji = !k
kj = !i
ik = ! j
5 of 5
These unique properties give the i, j, and k vectors properties of a right-handed coordinate
system, which can be used to define the Euler axis mentioned earlier in the report. Additionally,
the scalar portion of the four-dimensional vector can be used to represent the angle about which
to rotate. With regard to quantification, two methods exist, both of which have three degrees of
freedom: 1) the scalar and two components of the Euler axis are free, and the third is constrained
by the length of the unit vector, or 2) all three components of the vector are free and the length of
the vector describes the rotation angle. The advantages of using quaternions is that they are more
concise to describe, they do not depend on any sort of ordered rotations as Euler angles do, and
the Euler axis can be easily found by finding the eigenvector for the real number eigenvalue,
described by the DCM in the first portion of this report.
In conclusion, I contend that Euler angles and quaternions are the two fundamental
methods by which to describe three-dimensional rotations. Most of the other methods (not
mentioned) rely on one of these two methods, and as seen in this report, the DCM and quaternion
methods are co-dependent. There are ways to convert between Euler angles and quaternions my
trigonometry and matrix multiplication, but I felt they were trivial for the report. There are
different applications for each of the rotational methods, but quaternions seem to be the most
useful, especially when generating rotations. I really hope this report measures up to your
expectations (which I’m certain that it doesn't)… I wish I could have done a better job on this
project all around, but I’m spent… in my next life, I’ll do about half as much shit in one
semester.

page revision: 5, last edited: 16 May 2007 23:59