Rodrigues' rotation formula

From Wikipedia, the free encyclopedia

In geometry, Rodrigues' rotation formula (named after Olinde Rodrigues) is a vector formula for a rotation in space, given its axis and angle of rotation.

Say u,v \in R3 and we want to obtain a representation for the rotation vrot of the vector v around the vector u (which is assumed to have unit length) by an angle θ in the counterclockwise (i.e. positive) direction. Rodrigues' formula reads as follows:


\mathbf{v}_{rot} = \mathbf{v} \cdot \cos\theta + \mathbf{u} \times \mathbf{v} \cdot \sin\theta
  + \langle \mathbf{u}, \mathbf{v} \rangle \mathbf{u} \cdot (1 - \cos\theta).

[edit] Proof of the formula

Take the vector w = v − <u,v>u, which is the projection of v on the plane orthogonal to u, and the cross product of the vectors u and v: z = u×v. Turn the vector w by the angle θ around the base of the vector u to obtain the projection of the rotated vector vrot:


\begin{align}
  \mathbf{w}_{rot} &= \mathbf{w} \cdot \cos\theta + \mathbf{z} \cdot \sin\theta \\
  &= (\mathbf{v} - \langle \mathbf{u}, \mathbf{v} \rangle \mathbf{u}) \cdot \cos\theta
  + \mathbf{u} \times \mathbf{v} \cdot \sin\theta.
\end{align}

Notice that both the vectors w and z have the same length: |w|,|z| = |v - <u,v>u|, because the vector u is of unit length. To get the rotated vector v, we have to add back the adjustment <u,v>u. Hence


\begin{align}
  \mathbf{v}_{rot} &= (\mathbf{v} - \langle \mathbf{u}, \mathbf{v} \rangle \mathbf{u}) \cdot \cos\theta
    + \mathbf{u} \times \mathbf{v} \cdot \sin\theta + \langle \mathbf{u}, \mathbf{v} \rangle \mathbf{u} \\
  &= \mathbf{v} \cdot \cos\theta + \mathbf{u} \times \mathbf{v} \cdot \sin\theta
    + \langle \mathbf{u}, \mathbf{v} \rangle \mathbf{u} \cdot (1 - \cos\theta),
\end{align}

which is exactly what we were looking for.

Using the annotation \mathbf{u}^T \mathbf{v} for the scalar product, we get:


\begin{align}
  \mathbf{v}_{rot} &= \cos\theta \cdot \mathbf{v} + \sin\theta \cdot \mathbf{u} \times \mathbf{v} 
    + (1 - \cos\theta) \cdot \mathbf{u} \cdot \mathbf{u}^T \mathbf{v}
\end{align}

Substituting the cross product with matrix multiplication:


\begin{align}
  \mathbf{u} \times \mathbf{v} &=
\left(\begin{array}{ccc}
0 & -u_3 & u_2 \\
u_3 & 0 & -u_1 \\
-u_2 & u_1 & 0
\end{array}\right) \mathbf{v} = 
\left[ \mathbf{u} \right]_\times \mathbf{v}
\end{align}

and multiplying with the identity matrix I, we get


\begin{align}
  \mathbf{v}_{rot} &= \cos\theta \cdot I \mathbf{v} + \sin\theta \cdot \left[ \mathbf{u} \right]_\times \mathbf{v} 
    + (1 - \cos\theta) \cdot \mathbf{u} \cdot \mathbf{u}^T \mathbf{v} \\ &=
  \left( \cos\theta I + \sin\theta \left[ \mathbf{u} \right]_\times 
    + (1 - \cos\theta) \mathbf{u} \mathbf{u}^T \right) \mathbf{v} 
\end{align}

where the expression in the paranthesis can be identified as the rotation matrix R:


\begin{align}
  R = \cos\theta I + \sin\theta \left[ \mathbf{u} \right]_\times + (1 - \cos\theta) \mathbf{u} \mathbf{u}^T
\end{align}

[edit] External links

For another descriptive example see www.d6.com, Chris Hecker, physics section, part 4. "The Third Dimension" -- on page 3, section ``Axis and Angle, http://www.d6.com/users/checker/pdfs/gdmphys4.pdf