|
|
(One intermediate revision by one other user not shown) |
Line 1: |
Line 1: |
| :''This article is about the Rodrigues' rotation formula, which is distinct from [[Euler–Rodrigues parameters]] and [[SO(4)#The Euler–Rodrigues formula for 3D rotations|The Euler–Rodrigues formula for 3D rotation]].''
| | Oscar is how he's known as and he completely enjoys this name. Playing baseball is the pastime he will by no means quit doing. For a while she's been in South Dakota. Hiring is her day occupation now and she will not alter it anytime soon.<br><br>Also visit my web blog ... [http://www.cumfast.nl/user/VRobles http://www.cumfast.nl/user/VRobles] |
| | |
| In the theory of [[three-dimensional rotation]], '''Rodrigues' rotation formula''' (named after [[Olinde Rodrigues]]) is an efficient algorithm for rotating a [[vector (geometric)|vector]] in space, given an [[axis angle|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 [[Axis_angle#Exponential map from so(3) to SO(3)|so(3) to SO(3)]] without computing the full [[matrix exponent]].
| |
| | |
| If '''v''' is a vector in <math>\mathbb{R}^3</math> and '''k''' is a [[unit vector]] describing an axis of rotation about which we want to rotate '''v''' by an angle θ according to the [[Right hand rule#Direction associated with a rotation|right hand rule]], the Rodrigues formula is:
| |
| | |
| : <math>
| |
| \mathbf{v}_\mathrm{rot} = \mathbf{v} \cos\theta + (\mathbf{k} \times \mathbf{v})\sin\theta
| |
| + \mathbf{k} (\mathbf{k} \cdot \mathbf{v}) (1 - \cos\theta).
| |
| </math>
| |
| | |
| == Derivation ==
| |
| [[Image:Rodrigues rotation formula.png|thumb|Rodrigues' rotation formula rotates '''v''' by an angle θ around an axis ''z'' by decomposing it into its components parallel and perpendicular to ''z'', and rotating only the perpendicular component.]]
| |
| | |
| Given a rotation axis represented by a [[unit vector]] '''k''' and a vector '''v''' that we wish to rotate about '''k''' by the angle θ,
| |
| : <math> \mathbf{v}_{\parallel} = (\mathbf{k} \cdot \mathbf{v}) \mathbf{k} </math>
| |
| is the component of '''v''' parallel to '''k''', also called the [[vector projection]] of '''v''' on '''k''', and
| |
| :<math>\mathbf{v}_{\perp} = \mathbf{v} - \mathbf{v}_{\parallel} = \mathbf{v} - (\mathbf{k} \cdot \mathbf{v}) \mathbf{k} </math>
| |
| is the component of '''v''' orthogonal to '''k''', also called the [[vector rejection]] of '''v''' from '''k'''.
| |
| | |
| Let
| |
| :<math>\mathbf{w} = \mathbf{k}\times\mathbf{v}</math>.
| |
| | |
| The vectors '''v'''<sub>⊥</sub> and '''w''' have the same length, but '''w''' is perpendicular to both '''k''' and '''v'''<sub>⊥</sub>. This can be shown via
| |
| :<math>\mathbf{w} = \mathbf{k} \times \mathbf{v} = \mathbf{k} \times (\mathbf{v}_{\parallel} + \mathbf{v}_{\perp}) = \mathbf{k} \times \mathbf{v}_{\parallel} + \mathbf{k} \times \mathbf{v}_{\perp} = \mathbf{k} \times \mathbf{v}_{\perp} ,</math>
| |
| since '''k''' has unit length, is parallel to '''v'''<sub>∥</sub> and is perpendicular to '''v'''<sub>⊥</sub>.
| |
| | |
| The vector '''w''' can be viewed as a copy of '''v'''<sub>⊥</sub> rotated by 90° about '''k'''. Using trigonometry, we can now rotate '''v'''<sub>⊥</sub> by θ around '''k''' to obtain '''v'''<sub>⊥ rot</sub>. Thus,
| |
| | |
| : <math>
| |
| \begin{align}
| |
| \mathbf{v}_{\perp\ \mathrm{rot}} &= \mathbf{v}_{\perp}\cos\theta + \mathbf{w}\sin\theta\\
| |
| &= (\mathbf{v} - (\mathbf{k} \cdot \mathbf{v}) \mathbf{k})\cos\theta
| |
| + (\mathbf{k} \times \mathbf{v})\sin\theta.
| |
| \end{align}
| |
| </math>
| |
| | |
| '''v'''<sub>⊥ rot</sub> is also the rejection from '''k''' of the vector '''v'''<sub>rot</sub>, defined as the desired vector, '''v''' rotated bout '''k''' by the angle θ. Since '''v'''<sub>∥</sub> is not affected by a rotation about '''k''', the projection of '''v'''<sub>rot</sub> on '''k''' coincides with '''v'''<sub>∥</sub>. Thus,
| |
| : <math>
| |
| \begin{align}
| |
| \mathbf{v}_{\mathrm{rot}} &= \mathbf{v}_{\perp\ \mathrm{rot}} + \mathbf{v}_{\parallel\ \mathrm{rot}} \\
| |
| &= \mathbf{v}_{\perp\ \mathrm{rot}} + \mathbf{v}_{\parallel} \\
| |
| &= (\mathbf{v} - (\mathbf{k} \cdot \mathbf{v}) \mathbf{k}) \cos\theta
| |
| + (\mathbf{k} \times \mathbf{v})\sin\theta + (\mathbf{k} \cdot \mathbf{v}) \mathbf{k} \\
| |
| &= \mathbf{v} \cos\theta + (\mathbf{k} \times \mathbf{v})\sin\theta
| |
| + \mathbf{k} (\mathbf{k} \cdot \mathbf{v}) (1 - \cos\theta),
| |
| \end{align}
| |
| </math>
| |
| | |
| as required.
| |
| | |
| === Matrix notation ===
| |
| By representing '''v''' and '''k''' as [[Column matrix|column matrices]], and defining a matrix <math>[\mathbf{k}]_\times</math> as the "[[Cross_product#Conversion_to_matrix_multiplication|cross-product
| |
| matrix]]" for <math>\mathbf{k}</math>, i.e.,
| |
| | |
| : <math> [\mathbf{k}]_\times \mathbf{v} = \mathbf{k}\times\mathbf{v} =
| |
| \left[\begin{array}{ccc}
| |
| 0 & -k_3 & k_2 \\
| |
| k_3 & 0 & -k_1 \\
| |
| -k_2 & k_1 & 0
| |
| \end{array}\right]\mathbf{v}
| |
| </math>,
| |
| | |
| Rodrigues' formula can be written in [[matrix notation]]:
| |
| | |
| : <math>
| |
| \begin{align}
| |
| \mathbf{v}_{\mathrm{rot}} &= \mathbf{v} \cos\theta + ([\mathbf{k}]_\times \mathbf{v}) \sin\theta
| |
| + \mathbf{k} (\mathbf{k}^\mathsf{T} \mathbf{v}) (1 - \cos\theta) \\
| |
| &= \mathbf{v} \cos\theta + [\mathbf{k}]_\times \mathbf{v} \sin\theta
| |
| + \mathbf{k} \mathbf{k}^\mathsf{T} \mathbf{v} (1 - \cos\theta).
| |
| \end{align}
| |
| </math>
| |
| | |
| Using the [[Cross_product#Triple_product_expansion | triple product expansion]] it can be written as:
| |
| : <math>
| |
| \begin{align}
| |
| \mathbf{v}_{\mathrm{rot}}&=([\mathbf{k}]_{\times}\mathbf{v})\sin\theta
| |
| +(\mathbf{k}(\mathbf{k}^\mathsf{T} \mathbf{v})-\mathbf{v}(\mathbf{k}\cdot\mathbf{k}))
| |
| (1-\cos\theta)+\mathbf{v}(\mathbf{k}^\mathsf{T} \mathbf{k}) \\
| |
| &=\mathbf{v}+([\mathbf{k}]_{\times}\mathbf{v})\sin\theta
| |
| +([\mathbf{k}]_{\times}[\mathbf{k}]_{\times}\mathbf{v})(1-\cos\theta).
| |
| \end{align}
| |
| </math> | |
| since <math>\mathbf{k}^\mathsf{T} \mathbf{k}=1</math> for a normalized vector.
| |
| | |
| == Conversion to rotation matrix ==
| |
| The equation can be also written as
| |
| : <math>
| |
| \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}^\mathsf{T} \mathbf{v} \\ &=
| |
| \left( I \cos\theta + [\mathbf{k}]_\times \sin\theta
| |
| + (1 - \cos\theta) \mathbf{k} \mathbf{k}^\mathsf{T} \right) \mathbf{v}\\
| |
| &= R\mathbf{v}
| |
| \end{align}
| |
| </math>
| |
| | |
| 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''' θ]:
| |
| : <math>
| |
| R = I \cos\theta + [\mathbf{k}]_\times \sin\theta + (1 - \cos\theta) \mathbf{k} \mathbf{k}^\mathsf{T}</math>.
| |
| | |
| Noting that, using the outer product <math>\mathbf{k} \mathbf{k}^\mathsf{T} = [\mathbf{k}]_\times^2 + I</math>, we have
| |
| : <math> R = I + [\mathbf{k}]_\times \sin\theta + (1 - \cos\theta) [\mathbf{k}]_\times^2 </math> | |
| | |
| or, equivalently,
| |
| : <math>R = I + \sin\theta [\mathbf{k}]_\times + (1 - \cos\theta) (\mathbf{k} \mathbf{k}^\mathsf{T}-I)</math>.
| |
| | |
| For the inverse mapping, see [[Axis_angle#Log_map_from_SO.283.29_to_so.283.29|Log map from SO(3) to so(3)]].
| |
| | |
| == See also ==
| |
| * [[Axis angle]]
| |
| * [[Rotation (mathematics)]]
| |
| * [[SO(3)]] and [[SO(4)]]
| |
| * [[History of quaternions]]
| |
| | |
| == 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 ==
| |
| * {{MathWorld |title=Rodrigues' Rotation Formula |urlname=RodriguesRotationFormula}}
| |
| * Johan E. Mebius, [http://arxiv.org/abs/math/0701759 Derivation of the Euler-Rodrigues formula for three-dimensional rotations from the general formula for four-dimensional rotations.], ''arXiv General Mathematics'' 2007.
| |
| * 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
| |
| | |
| {{DEFAULTSORT:Rodrigues' Rotation Formula}}
| |
| [[Category:Rotation in three dimensions]]
| |
| [[Category:Euclidean geometry]]
| |
| [[Category:Orientation]]
| |
| | |
| [[fr:Rotation vectorielle#Cas général]]
| |
Oscar is how he's known as and he completely enjoys this name. Playing baseball is the pastime he will by no means quit doing. For a while she's been in South Dakota. Hiring is her day occupation now and she will not alter it anytime soon.
Also visit my web blog ... http://www.cumfast.nl/user/VRobles