Axis-angle rotation specification

Euler's theorem states that any rotation of an object in 3D space leaves some axis fixed, the rotation axis.

As a result, any rotation can be described by a vector $\mathbf{n}=\left(\begin{array}{c}
n_{1}\\
n_{2}\\
n_{3}\end{array}\right)$ in the direction of the rotation axis, and the angle of rotation, $\theta$, about $\mathbf{n}$. The direction of rotation is chosen so that as you look in the direction of $\mathbf{n}$, the rotation is counterclockwise about the origin for $\theta>0$. The following figure illustrates a rotation and its rotation axis.

Image /amd/nfs/roc/disk/ptn013/ugrad.02/s0232260/av//rot.jpg

We can use the following rotation formula for rotating a point $\mathbf{x}$ by an angle $\theta$, about a vector $\mathbf{n}$ to reach $\mathbf{x^{\prime}}$.


\begin{displaymath}
\mathbf{x^{\prime}}=\mathbf{xcos \theta}+\mathbf{n}(\mathbf...
...thbf{x})(1-cos \theta)+(\mathbf{x\times\mathbf{n}})sin \theta\end{displaymath}

This formula has a simple geometric derivation, which can be found at: http://mathworld.wolfram.com/RotationFormula.html

However the above formula can also be expressed in terms of matrices.

The corresponding rotation matrix, can be obtained in terms of $\theta$ and the components of $\mathbf{n}$, giving a total of 4 parameters.

The axis-angle form is usually written as a 4-vector: [$\theta,n_{1},n_{2},n_{3}$].

To describe continuous rotation in time, you treat n and $\theta$ as functions of time.

A simple example

Using the above formula we shall rotate the point $\mathbf{x}=\left(\begin{array}{c}
1\\
2\\
3\end{array}\right)$ by angle $\theta=\frac{\pi}{2}$, around the rotation axis $\mathbf{n}=\left(\begin{array}{c}
0\\
0\\
1\end{array}\right)$, to obtain the new point $\mathbf{x^{\prime}}$.

Substituting these values in we have:

\begin{displaymath}
\mathbf{x^{\prime}}=\mathbf{\left(\begin{array}{c}
1\\
2 ...
...in{array}{c}
0\\
0\\
1\end{array}\right)}})sin \frac{\pi}{2}\end{displaymath}

Which simplifies to:

\begin{displaymath}
\mathbf{x^{\prime}}=0+\mathbf{\left(\begin{array}{c}
0\\
0\...
...y}\right)=\left(\begin{array}{c}
2\\
-1\\
3\end{array}\right)\end{displaymath}

This figure is correct as $\mathbf{x}$ was rotated around the z-axis by $\theta=\frac{\pi}{2}$, so the z co-ordinate remains constant, whilst the new x and y co-ordinates are now perpendicular from the old co-ordinates, as demonstrated by the dot product: $\left(\begin{array}{c}
1\\
2\end{array}\right)\cdot\left(\begin{array}{c}
2\\
-1\end{array}\right)=0$.

Disadvantages of this representation

There are three sources of redundancy with the axis-angle rotation specification. Let R($\mathbf{n}$,$\theta$) represent a rotation about the axis $\mathbf{n}$, by angle $\theta$.

  1. If $\theta$= 0, $\mathbf{n}$ is arbitrary.
  2. R($\mathbf{n}$,$\theta$) = R($\mathbf{n}$,$2k\pi+\theta$) = R($-\mathbf{n}$,$-\theta$) $\forall k\in\mathbb{\mathbb{Z}}$.
  3. We have 4 parameters ( $\theta,n_{1},n_{2},n_{3}$) that describe 3 degrees of freedom (in 3D space every rotation can be described as a combination of 3 consecutive Yaw, Pitch and Roll rotations)
The third source of redundancy is removed by adding the constraint that $\mathbf{n}$ be a unit vector, i.e. $\mathbf{n}=\frac{1}{\sqrt{n_{1}^{2}+n_{2}^{2}+n_{3}^{2}}}\left(\begin{array}{c}
n_{1}\\
n_{2}\\
n_{3}\end{array}\right)$ . This reduces the degrees of freedom of our parameters to 3, as once $n_{1}$ and $n_{2}$ are fixed, so is $n_{3}$.
Links

A useful website illustrating how to perform a rotation about an angle in stages, using augmented 2D rotation matrices can be found here.

A document exploring the different rotation representations and their respective performance issues can be found here.


 
Alexander Redstone 2005-02-11