Share on Facebook Share on Twitter Email
Answers.com

Rodrigues' rotation formula

 
Wikipedia: Rodrigues' rotation formula
This article is about the Rodrigues' rotation formula, which is distinct from Euler–Rodrigues parameters and The Euler-Rodrigues formula for 3D rotation.

In the theory of three-dimensional rotation, the Rodrigues rotation formula (named after Olinde Rodrigues) a formula for rotating a vector in space, given an axis and angle of rotation. If v is a vector in R3 and z is a unit vector describing an axis of rotation about which we want to rotate v by an angle θ (in a right-handed sense), the Rodrigues formula is:


\mathbf{v}_\mathrm{rot} = \mathbf{v} \cos\theta + (\mathbf{z} \times \mathbf{v})\sin\theta
  + \mathbf{z} (\mathbf{z} \cdot \mathbf{v}) (1 - \cos\theta).

By extension, this can be used to transform all three basis vectors to compute a rotation matrix from an axis-angle representation. In other words, the Rodrigues formula is an algorithm to compute the exponential map from so(3) to SO(3).

Contents

Derivation

The Rodrigues rotation formula rotates v around z by decomposing it into its component parallel to z and perpendicular (x) to z, rotating the perpendicular part in the plane orthogonal to z and adding back the parallel part to get vrot.

Given a unit vector, z and a vector v that we wish to rotate about z, the vector

\mathbf{x}=\mathbf{v} - \mathbf{z} (\mathbf{z}\cdot\mathbf{v})

is the projection of v onto the plane orthogonal to z. Next let

\mathbf{y}=\mathbf{z}\times\mathbf{v}.

Using trigonometry, we can rotate x by θ around z to obtain the projection of the rotated vector vrot:


\begin{align}
  \mathbf{x}_{\mathrm{rot}} &= \mathbf{x}\cos\theta + \mathbf{y}\sin\theta\\
  &= (\mathbf{v} - (\mathbf{z} \cdot \mathbf{v}) \mathbf{z})\cos\theta
  + (\mathbf{z} \times \mathbf{v})\sin\theta.
\end{align}

Notice that both the vectors x and y have the same length. This follows from the following formulae for the scalar product and cross product:

 \mathbf{z} \cdot \mathbf{v} = |\mathbf{z}| \, |\mathbf{v}| \cos \phi \,
\mathbf{z} \times \mathbf{v} = |\mathbf{z}| \, |\mathbf{v}| \sin \phi \ \mathbf{n}

where Φ denotes the angle between z and v and n is a to both orthogonal unit vector. Since z has unit length it immediately follows from the second formula that

|\mathbf{y}| = |\mathbf{z} \times \mathbf{v}| = |\mathbf{v}| \sin \phi.

The first formula gives the length of z(zv) and because this forms a right triangle with v and x it becomes clear that this is also the length of x.

To get the rotated vector v, we have to add back the component of v parallel to z:

 (\mathbf{z} \cdot \mathbf{v}) \mathbf{z} .

So the result is


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

as required. Or in matrix notation:


  \mathbf{v}_{\mathrm{rot}} =  \mathbf{v} \cos\theta + \mathbf{z} \times \mathbf{v} \sin\theta 
    + \mathbf{z} \mathbf{z}^\top \mathbf{v} (1 - \cos\theta)
.

Computing a rotation matrix

Denoting by [\mathbf{z}]_\times the "cross-product matrix" for \mathbf{z}, i.e.,

 [\mathbf{z}]_\times \mathbf{v} = \mathbf{z}\times\mathbf{v} = 
\left[\begin{array}{ccc}
0 & -z_3 & z_2 \\
z_3 & 0 & -z_1 \\
-z_2 & z_1 & 0
\end{array}\right]\mathbf{v}
,

the equation can be written as


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

where I is the 3×3 identity matrix. Thus we have a formula for the rotation matrix, R, corresponding to an axis angle vector, z:


  R = I \cos\theta + [\mathbf{z}]_\times \sin\theta + (1 - \cos\theta) \mathbf{z} \mathbf{z}^\top.

Noting that \mathbf{z} \mathbf{z}^\top = [\mathbf{z}]_\times^2 + I, we have

  R = I + [\mathbf{z}]_\times \sin\theta + (1 - \cos\theta) [\mathbf{z}]_\times^2

or, equivalently,

R = I + \sin\theta [\mathbf{z}]_\times + (1 - \cos\theta) (\mathbf{z} \mathbf{z}^\top - I).

For the inverse mapping, see Log map from SO(3) to so(3).

See also

References

  • Don Koks, (2006) Explorations in Mathematical Physics, Springer Science+Business Media,LLC. ISBN 0-387-30943-8. Ch.4, pps 147 et seq. A Roundabout Route to Geometric Algebra'

External links


Search unanswered questions...
Enter a question here...
Search: All sources Community Q&A Reference topics
Best of the Web: Rodrigues' rotation formula
Top

Some good "Rodrigues' rotation formula" pages on the web:


Math
mathworld.wolfram.com
 
 
 

 

Copyrights:

Wikipedia. This article is licensed under the Creative Commons Attribution/Share-Alike License. It uses material from the Wikipedia article "Rodrigues' rotation formula" Read more