askvity

How to Find the Axis Angle of a Rotation Matrix

Published in Rotation Matrix Axis Angle 4 mins read

Finding the axis and angle that define a rotation matrix involves extracting specific properties from the matrix itself.

Understanding Axis-Angle Representation

A rotation in 3D space can be uniquely described by a single rotation around a specific axis. This representation consists of:

  1. The Axis: A unit vector $\mathbf{k}$ pointing along the axis of rotation.
  2. The Angle: An angle $\theta$ representing the amount of rotation around the axis $\mathbf{k}$.

Given a 3x3 rotation matrix $Q$, you can determine these two components.

Calculating the Rotation Angle (θ)

The easiest way to find the rotation angle $\theta$ from a rotation matrix $Q$ is by using its trace. The trace of a matrix is the sum of its diagonal elements. For a rotation matrix $Q$, the trace is related to the angle $\theta$ by the formula:

1 + 2cosθ = trace(Q)

From this formula, you can isolate $\cos\theta$:

cosθ = (trace(Q) - 1) / 2

Once you have cosθ, you can find the angle $\theta$ using the arccosine function:

θ = arccos( (trace(Q) - 1) / 2 )

Important Considerations:

  • The trace of a 3x3 rotation matrix must be between -1 (for a 180-degree rotation) and 3 (for no rotation). If the trace is outside this range (due to floating-point inaccuracies or if the matrix isn't truly a rotation matrix), the argument to arccos might be invalid.
  • The arccos function typically returns an angle between 0 and $\pi$ (or 0 and 180 degrees). This gives you the magnitude of the angle.

Example Trace Calculation:

As mentioned in the reference, if you had a specific matrix Q where trace(Q) = 0.36 + 0.60 + 0.60, then trace(Q) = 1.56.

Using the formula:
cosθ = (1.56 - 1) / 2 = 0.56 / 2 = 0.28
θ = arccos(0.28)

You would then calculate the numerical value of arccos(0.28) to find the angle $\theta$.

Finding the Rotation Axis (k)

The rotation axis $\mathbf{k}$ is a vector that does not change its direction when the rotation is applied. Mathematically, this means that rotating the vector $\mathbf{k}$ by the matrix $Q$ results in the same vector $\mathbf{k}$:

$Q\mathbf{k} = \mathbf{k}$

Rearranging this equation gives:

$Q\mathbf{k} - \mathbf{k} = \mathbf{0}$
$(Q - I)\mathbf{k} = \mathbf{0}$

where $I$ is the identity matrix. This is the definition of an eigenvector equation where $\mathbf{k}$ is the eigenvector and the eigenvalue is 1.

Therefore, the axis of rotation is an eigenvector of the rotation matrix Q corresponding to the eigenvalue 1.

Steps to Find the Axis:

  1. Form the matrix $(Q - I)$.
  2. Solve the linear system $(Q - I)\mathbf{k} = \mathbf{0}$ for the vector $\mathbf{k}$.
  3. The solution space of this system is the set of all vectors parallel to the rotation axis.
  4. Any non-zero vector found this way can be used as the axis vector.
  5. Typically, the axis is represented as a unit vector, so you should normalize the resulting vector $\mathbf{k}$ by dividing it by its magnitude: $\mathbf{k}_{\text{unit}} = \mathbf{k} / ||\mathbf{k}||$.

Practical Note:

For a proper rotation matrix (not a reflection), there will always be an eigenvalue of 1, and its corresponding eigenvector space will be one-dimensional, representing the line along the rotation axis. If the rotation is 0 degrees (identity matrix), all vectors are eigenvectors with eigenvalue 1, and the axis is undefined (or often taken as an arbitrary axis like [1, 0, 0]). If the rotation is 180 degrees, the eigenvalue 1 still exists, but finding the corresponding eigenvector might require careful handling of floating-point arithmetic as $(Q-I)$ will have rank 1.

Summary: Axis-Angle Extraction

To find the axis-angle representation (axis $\mathbf{k}$ and angle $\theta$) from a rotation matrix $Q$:

  1. Calculate the Angle: Use the formula θ = arccos( (trace(Q) - 1) / 2 ).
  2. Find the Axis: Find a non-zero eigenvector of $Q$ corresponding to the eigenvalue 1. Normalize this eigenvector to get the unit axis vector $\mathbf{k}$.

This process allows you to convert a rotation matrix into its equivalent axis-angle representation, which is often more intuitive for visualizing or describing a rotation.

Related Articles