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, Rodrigues' rotation formula (named after Olinde Rodrigues) is an efficient algorithm for rotating a vector in space, given an axis and angle of rotation. 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 provides an algorithm to compute the exponential map from so(3) to SO(3) without computing the full matrix exponent.
If v is a vector in
and k 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:
Contents |
[edit] Derivation
Given a rotation axis z represented by a unit vector k = (kX, kY, kZ), and a vector v = (vX, vY, vZ) that we wish to rotate about z, the vector
is the component of v parallel to z, also called the vector projection of v on k, and the vector
is the projection of v onto the xy plane orthogonal to z, also called the vector rejection of v from k.
Notice that we chose to define a reference frame xyz in which the z axis is aligned with the rotation axis, and the x axis with the rejection of v from k. This simplifies the demonstration, as it implies that v lies on the xz plane, and its component vy is null (see figure). However, xyz does not coincide with the reference frame XYZ in which vectors v, k, vx, and vz are actually represented. For instance, v = (vX, vY, vZ) ≠ (vx, vy, vz). In other words, Rodrigues' formula is independent of the orientation in space of the reference frame XYZ in which v and k are represented.
Next let
.
Notice that vx and w have the same length. By definition of the cross product, the length of w is:
where Φ denotes the angle between z and v. Since k has unit length,
This coincides with the length of vx, computed trigonometrically as follows:
So w can be viewed as a copy of vx rotated by 90° about z. Using trigonometry, we can now rotate vx by θ around z to obtain vx rot. Its two components with respect of x and y are vxcosθ and wsinθ, respectively. Thus,
vx rot can be also described as the projection on xy (or rejection from z) of the rotated vector vrot (see figure). Since vz is obviously not affected by a rotation about z, the other component of vrot (i.e. its projection on z) coincides with vz. Thus,
as required.
[edit] Matrix notation
By representing v and k as column matrices, and defining a matrix
as the "cross-product matrix" for
, i.e.,
,
Rodrigues' formula can be written in matrix notation:
Using the triple product expansion in can be written as:
since
for a normalized vector.
[edit] Conversion to rotation matrix
The equation can be also written as
where I is the 3×3 identity matrix. Thus we have a formula for the rotation matrix R corresponding to an axis angle representation [k θ]:
.
Noting that, using the outer product
, we have
or, equivalently,
.
For the inverse mapping, see Log map from SO(3) to so(3).
[edit] See also
[edit] 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'
[edit] External links
- Weisstein, Eric W., "Rodrigues' Rotation Formula" from MathWorld.
- Johan E. Mebius, Derivation of the Euler-Rodrigues formula for three-dimensional rotations from the general formula for four-dimensional rotations., arXiv General Mathematics 2007.
- For a proof that begins with the xyz frame see http://myyn.org/m/article/proof-of-rodrigues-rotation-formula/
- For another descriptive example see http://chrishecker.com/Rigid_Body_Dynamics#Physics_Articles, Chris Hecker, physics section, part 4. "The Third Dimension" -- on page 3, section ``Axis and Angle, http://chrishecker.com/images/b/bb/Gdmphys4.pdf
- Matthew T. Mason, Representing rotation.



.




,![\begin{align}
\mathbf{v}_{\mathrm{rot}} &= \mathbf{v} \cos\theta + ([\mathbf{k}]_\times \mathbf{v}) \sin\theta
+ \mathbf{k} (\mathbf{k}^\top \mathbf{v}) (1 - \cos\theta) \\
&= \mathbf{v} \cos\theta + [\mathbf{k}]_\times \mathbf{v} \sin\theta
+ \mathbf{k} \mathbf{k}^\top \mathbf{v} (1 - \cos\theta).
\end{align}](http://upload.wikimedia.org/wikipedia/en/math/9/c/9/9c9cc90b3b7f82f14570cf1d13c72ce9.png)
![\begin{align}
\mathbf{v}_{\mathrm{rot}}&=([\mathbf{k}]_{\times}\mathbf{v})\sin\theta
+(\mathbf{k}(\mathbf{k}^\top \mathbf{v})-\mathbf{v}(\mathbf{k}\cdot\mathbf{k}))
(1-\cos\theta)+\mathbf{v}(\mathbf{k}^\top \mathbf{k}) \\
&=\mathbf{v}+([\mathbf{k}]_{\times}\mathbf{v})\sin\theta
+([\mathbf{k}]_{\times}[\mathbf{k}]_{\times}\mathbf{v})(1-\cos\theta).
\end{align}](http://upload.wikimedia.org/wikipedia/en/math/1/8/0/1807e6cfae0d41c02decd5352beed3fc.png)
![\begin{align}
\mathbf{v}_{\mathrm{rot}} &= (I\cos\theta) \mathbf{v} + ([\mathbf{k}]_\times \sin\theta) \mathbf{v}
+ (1 - \cos\theta) \mathbf{k} \mathbf{k}^\top \mathbf{v} \\ &=
\left( I \cos\theta + [\mathbf{k}]_\times \sin\theta
+ (1 - \cos\theta) \mathbf{k} \mathbf{k}^T \right) \mathbf{v}\\
&= R\mathbf{v}
\end{align}](http://upload.wikimedia.org/wikipedia/en/math/4/6/7/4671c33c491e1f7429c7cd63019ef9e9.png)
.![R = I + [\mathbf{k}]_\times \sin\theta + (1 - \cos\theta) [\mathbf{k}]_\times^2](http://upload.wikimedia.org/wikipedia/en/math/e/e/b/eeb4e8f873a8a453981d8d00fe8f198d.png)
.