Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Rodrigues' rotation formula
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Vector formula for a rotation in space, given its axis}} {{Distinguish|text= the [[Euler–Rodrigues parameters]] and [[SO(4)#The Euler–Rodrigues formula for 3D rotations|The Euler–Rodrigues formula for 3D rotation]]}} {{More footnotes needed|date=May 2021}} 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 vector]]s to compute a [[rotation matrix]] in {{math|[[Rotation group SO(3)|SO(3)]]}}, the group of all rotation matrices, from an [[axis–angle representation]]. In terms of Lie theory, the Rodrigues' formula provides an algorithm to compute the [[Exponential map (Riemannian geometry)|exponential map]] from the [[Lie algebra]] {{math|'''so'''(3)}} to its [[Lie group]] {{math|SO(3)}}. This formula is variously credited to [[Leonhard Euler]], [[Olinde Rodrigues]], or a combination of the two. A detailed historical analysis in 1989 concluded that the formula should be attributed to Euler, and recommended calling it "Euler's finite rotation formula."<ref>{{cite journal | last1 = Cheng | first1 = Hui | last2 = Gupta | first2 = K. C. | title = An Historical Note on Finite Rotations | journal = Journal of Applied Mechanics | volume = 56 | issue = 1 | pages = 139–145 | publisher = American Society of Mechanical Engineers | date = March 1989 | doi = 10.1115/1.3176034 | bibcode = 1989JAM....56..139C | url = https://iel.ucdavis.edu/publication/1989/j_ASMEAM.pdf | access-date = 2022-04-11}}</ref> This proposal has received notable support,<ref>{{cite journal | last = Fraiture | first = Luc | title = A History of the Description of the Three-Dimensional Finite Rotation | journal = The Journal of the Astronautical Sciences | volume = 57 | pages = 207–232 | publisher = Springer | date = 2009 | issue = 1–2 | doi = 10.1007/BF03321502 | bibcode = 2009JAnSc..57..207F | url = https://doi.org/10.1007/BF03321502 | access-date = 2022-04-15| url-access = subscription }}</ref> but some others have viewed the formula as just one of many variations of the [[Euler–Rodrigues formula]], thereby crediting both.<ref>{{cite journal | last = Dai | first = Jian S. | title = Euler–Rodrigues formula variations, quaternion conjugation and intrinsic connections | journal = Mechanism and Machine Theory | volume = 92 | pages = 144–152 | publisher = Elsevier | date = October 2015 | doi = 10.1016/j.mechmachtheory.2015.03.004 | doi-access = free }}</ref> ==Statement== If {{math|'''v'''}} is a vector in {{math|ℝ<sup>3</sup>}} and {{math|'''k'''}} is a [[unit vector]] describing an axis of rotation about which {{math|'''v'''}} rotates by an angle {{mvar|θ}} according to the [[Right hand rule#Direction associated with a rotation|right hand rule]], the Rodrigues formula for the rotated vector {{math|'''v'''<sub>rot</sub>}} is {{Equation box 1 |indent =: |equation =<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> |cellpadding= 6 |border |border colour = #0073CF |bgcolor=#F9FFF7}} The intuition of the above formula is that the first term scales the vector down, while the second skews it (via [[Euclidean vector#Addition and subtraction|vector addition]]) toward the new rotational position. The third term re-adds the height (relative to <math>\textbf{k}</math>) that was lost by the first term. An alternative statement is to write the axis vector as a [[cross product]] {{math|'''a''' × '''b'''}} of any two nonzero vectors {{math|'''a'''}} and {{math|'''b'''}} which define the plane of rotation, and the sense of the angle {{math|''θ''}} is measured away from {{math|'''a'''}} and towards {{math|'''b'''}}. Letting {{math|''α''}} denote the angle between these vectors, the two angles {{math|''θ''}} and {{math|''α''}} are not necessarily equal, but they are measured in the same sense. Then the unit axis vector can be written :<math>\mathbf{k} = \frac{\mathbf{a}\times\mathbf{b}}{|\mathbf{a}\times\mathbf{b}|} = \frac{\mathbf{a}\times\mathbf{b}}{|\mathbf{a}||\mathbf{b}|\sin\alpha}\,. </math> This form may be more useful when two vectors defining a plane are involved. An example in physics is the [[Thomas precession]] which includes the rotation given by Rodrigues' formula, in terms of two non-collinear boost velocities, and the axis of rotation is perpendicular to their plane. == Derivation == [[Image:Rodrigues-formula.svg|300px|right|thumb|Rodrigues' rotation formula rotates {{math|'''v'''}} by an angle {{math|''θ''}} around vector {{math|''k''}} by decomposing it into its components parallel and perpendicular to {{math|''k''}}, and rotating only the perpendicular component.]] [[File:Orthogonal decomposition unit vector rodrigues rotation formula.svg|350px|thumb|Vector geometry of Rodrigues' rotation formula, as well as the decomposition into parallel and perpendicular components.]] Let {{math|'''k'''}} be a [[unit vector]] defining a rotation axis, and let {{math|'''v'''}} be any vector to rotate about {{math|'''k'''}} by angle {{math|''θ''}} ([[right hand rule]], anticlockwise in the figure), producing the rotated vector <math>\mathbb{v}_{\text{rot}}</math>. Using the [[dot product|dot]] and [[cross product]]s, the vector {{math|'''v'''}} can be decomposed into components parallel and perpendicular to the axis {{math|'''k'''}}, :<math> \mathbf{v} = \mathbf{v}_\parallel + \mathbf{v}_\perp \,, </math> where the component parallel to {{math|'''k'''}} is called the [[vector projection]] of {{math|'''v'''}} on {{math|'''k'''}}, :<math> \mathbf{v}_\parallel = (\mathbf{v} \cdot \mathbf{k}) \mathbf{k} </math>, and the component perpendicular to {{math|'''k'''}} is called the [[vector rejection]] of {{math|'''v'''}} from {{math|'''k'''}}: :<math>\mathbf{v}_{\perp} = \mathbf{v} - \mathbf{v}_{\parallel} = \mathbf{v} - (\mathbf{k} \cdot \mathbf{v}) \mathbf{k} = - \mathbf{k}\times(\mathbf{k}\times\mathbf{v})</math>, where the last equality follows from the [[vector triple product]] formula: <math display="inline">\mathbf{a}\times (\mathbf{b} \times \mathbf{c}) = (\mathbf{a} \cdot \mathbf{c})\mathbf{b} - (\mathbf{a} \cdot \mathbf{b})\mathbf{c}</math>. Finally, the vector <math>\mathbf{k} \times \mathbf{v}_{\perp} = \mathbf{k} \times \mathbf{v}</math> is a copy of <math>\mathbf{v}_{\perp}</math> rotated 90° around <math>\mathbf{k}</math>. Thus the three vectors <math display="block">\mathbf{k}\,,\ \mathbf{v}_{\perp}\,,\, \mathbf{k} \times \mathbf{v}</math> form a [[Right-hand rule|right-handed]] orthogonal basis of <math>\mathbb{R}^3</math>, with the last two vectors of equal length. Under the rotation, the component <math>\mathbf{v}_{\parallel}</math> parallel to the axis will not change magnitude nor direction: :<math>\mathbf{v}_{\parallel\mathrm{rot}} = \mathbf{v}_\parallel \,;</math> while the perpendicular component will retain its magnitude but rotate its direction in the perpendicular plane spanned by <math>\mathbf{v}_{\perp}</math> and <math>\mathbf{k} \times \mathbf{v}</math>, according to :<math> \mathbf{v}_{\perp\mathrm{rot}} = \cos(\theta) \mathbf{v}_\perp + \sin(\theta) \mathbf{k}\times\mathbf{v}_\perp = \cos(\theta) \mathbf{v}_\perp + \sin(\theta) \mathbf{k}\times\mathbf{v} \,,</math> in analogy with the planar [[polar coordinates]] {{math|(''r'', ''θ'')}} in the [[Cartesian coordinates|Cartesian basis]] {{math|'''e'''<sub>''x''</sub>}}, {{math|'''e'''<sub>''y''</sub>}}: :<math>\mathbf{r} = r\cos(\theta) \mathbf{e}_x + r\sin(\theta) \mathbf{e}_y \,. </math> Now the full rotated vector is: :<math> \mathbf{v}_{\mathrm{rot}} = \mathbf{v}_{\parallel\mathrm{rot}} + \mathbf{v}_{\perp\mathrm{rot}} = \mathbf{v}_\parallel + \cos(\theta) \, \mathbf{v}_\perp + \sin(\theta) \mathbf{k}\times\mathbf{v} . </math> Substituting <math>\mathbf{v}_{\perp } = \mathbf{v} - \mathbf{v}_{\|} </math> or <math>\mathbf{v}_{\| } = \mathbf{v} - \mathbf{v}_{\perp}</math> in the last expression gives respectively: :<math display="block">\mathbf{v}_{\text{rot}} = \cos(\theta) \, \mathbf{v} + \sin(\theta) \mathbf{k}\times\mathbf{v} + (1 - \cos\theta)(\mathbf{k} \cdot \mathbf{v})\mathbf{k}</math> :<math display="block">\phantom{\mathbf{v}_{\text{rot}}} = \mathbf{v} + \sin(\theta) \mathbf{k}\times\mathbf{v} + (1-\cos\theta)\mathbf{k}\times(\mathbf{k}\times\mathbf{v}).</math> == Matrix notation == The linear transformation on <math>\mathbf{v}\isin\mathbb{R}^3 </math> defined by the cross product <math>\mathbf{v} \mapsto \mathbf{k} \times \mathbf{v} </math> is given in coordinates by representing {{math|'''v'''}} and {{math|'''k''' × '''v'''}} as [[row and column vectors|column matrices]]: :<math>\begin{bmatrix} (\mathbf{k}\times\mathbf{v})_x \\ (\mathbf{k}\times\mathbf{v})_y \\ (\mathbf{k}\times\mathbf{v})_z \end{bmatrix} = \begin{bmatrix} k_y v_z - k_z v_y \\ k_z v_x - k_x v_z \\ k_x v_y - k_y v_x \end{bmatrix} = \left[\begin{array}{rrr} 0\ \, & -k_z & k_y \\ k_z & 0\ \, & -k_x \\ -k_y & k_x & 0\ \, \end{array}\right] \begin{bmatrix} v_x \\ v_y \\ v_z \end{bmatrix} \,. </math> That is, the [[Transformation matrix|matrix of this linear transformation]] (with respect to standard coordinates) is the [[Cross product#Conversion to matrix multiplication|cross-product matrix]]: : <math>\mathbf{K}= \left[\begin{array}{rrr} 0\ \, & -k_z & k_y \\ k_z & 0\ \, & -k_x \\ -k_y & k_x & 0\ \, \end{array}\right]\,. </math> That is to say, : <math>\mathbf{k}\times\mathbf{v}=\mathbf{K}\mathbf{v}, \qquad\qquad \mathbf{k}\times(\mathbf{k}\times\mathbf{v})=\mathbf{K}(\mathbf{K}\mathbf{v}) = \mathbf{K}^2\mathbf{v} \,. </math> The last formula in the previous section can therefore be written as: :<math>\mathbf{v}_{\mathrm{rot}} = \mathbf{v} + (\sin\theta) \mathbf{K}\mathbf{v} + (1 - \cos\theta)\mathbf{K}^2\mathbf{v}\,.</math> Collecting terms allows the compact expression :<math>\mathbf{v}_\mathrm{rot} = \mathbf{R}\mathbf{v}</math> where {{Equation box 1 |indent =: |equation = <math>\mathbf{R} = \mathbf{I} + (\sin\theta) \mathbf{K} + (1-\cos\theta)\mathbf{K}^2</math> |cellpadding= 6 |border |border colour = #0073CF |bgcolor=#F9FFF7 }} is the [[rotation matrix]] through an angle {{mvar|θ}} counterclockwise about the axis {{math|'''k'''}}, and {{math|'''I'''}} the {{nowrap|3 × 3}} [[identity matrix]].<ref>{{Cite web|last=Belongie|first=Serge|title=Rodrigues' Rotation Formula|url=https://mathworld.wolfram.com/RodriguesRotationFormula.html|access-date=2021-04-07|website=mathworld.wolfram.com|language=en}}</ref> This matrix {{math|'''R'''}} is an element of the rotation group {{math|SO(3)}} of {{math|ℝ<sup>3</sup>}}, and {{math|'''K'''}} is an element of the [[Lie algebra]] <math>\mathfrak{so}(3)</math> generating that Lie group (note that {{math|'''K'''}} is skew-symmetric, which characterizes <math>\mathfrak{so}(3)</math>). In terms of the matrix exponential, :<math>\mathbf{R} = \exp (\theta\mathbf{K})\,.</math> To see that the last identity holds, one notes that :<math>\mathbf{R}(\theta) \mathbf{R}(\phi) = \mathbf{R} (\theta+\phi), \quad \mathbf{R}(0) = \mathbf{I}\,, </math> characteristic of a [[one-parameter subgroup]], i.e. exponential, and that the formulas match for infinitesimal {{mvar|θ}}. For an alternative derivation based on this exponential relationship, see [[Axis–angle representation#Exponential map from so(3) to SO(3)|exponential map from <math>\mathfrak{so}(3)</math> to {{math|SO(3)}}]]. For the inverse mapping, see [[Axis–angle representation#Log map from SO(3) to so(3)|log map from {{math|SO(3)}} to <math>\mathfrak{so}(3)</math>]]. The above result can be written in index notation as follows. The elements of the matrix for an active rotation by an angle <math>\theta</math> about an axis {{math|'''n'''}} are given by :<math> R_{ij} = \cos\theta\, \delta_{ij} + (1 - \cos\theta) n_i n_j - \sin\theta\, \epsilon_{ijk} n_k. </math> Here, i, j, and k label the Cartesian components (x, y, z) or (1, 2, 3), <math>\delta_{ij}</math> and <math>\epsilon_{ijk}</math> are the Kronecker and Levi-Civita symbols, and there is an implicit sum on repeated indices. The [[Hodge dual]] of the rotation <math>\mathbf{R}</math> is just <math>\mathbf{R}^* = -\sin(\theta)\mathbf{k}</math> which enables the extraction of both the axis of rotation and the sine of the angle of the rotation from the rotation matrix itself, with the usual ambiguity, :<math>\begin{align} \sin(\theta) &= \sigma \left|\mathbf{R}^*\right| \\[3pt] \mathbf{k} &= -\frac{\sigma\mathbf{R}^*}{\left|\mathbf{R}^*\right|} \end{align}</math> where <math>\sigma = \pm 1</math>. The above simple expression results from the fact that the Hodge duals of <math>\mathbf{I}</math> and <math>\mathbf{K}^2</math> are zero, and <math>\mathbf{K}^* = -\mathbf{k}</math>. == See also == * [[Axis angle]] * [[Rotation (mathematics)]] * [[SO(3)]] and [[SO(4)]] * [[Euler–Rodrigues formula]] == References == {{Reflist}} * [[Leonhard Euler]], "Problema algebraicum ob affectiones prorsus singulares memorabile", ''Commentatio 407 Indicis Enestoemiani, Novi Comm. Acad. Sci. Petropolitanae'' '''15''' (1770), 75–106. * [[Olinde Rodrigues]], "Des lois géométriques qui régissent les déplacements d'un système solide dans l'espace, et de la variation des coordonnées provenant de ces déplacements considérés indépendants des causes qui peuvent les produire", ''Journal de Mathématiques Pures et Appliquées'' '''5''' (1840), 380–440. [http://sites.mathdoc.fr/JMPA/PDF/JMPA_1840_1_5_A39_0.pdf online]. * [[Richard M. Friedberg]] (2022) "[[arxiv:2211.07787|Rodrigues, Olinde: "Des lois géométriques qui régissent les déplacements d'un systéme solide...", translation and commentary]]". ''arXiv:2211.07787''. * 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 == * Johan E. Mebius, [https://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 (geometry)]] [[fr:Rotation vectorielle#Cas général]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Cite journal
(
edit
)
Template:Cite web
(
edit
)
Template:Distinguish
(
edit
)
Template:Equation box 1
(
edit
)
Template:Isbn
(
edit
)
Template:Math
(
edit
)
Template:More footnotes needed
(
edit
)
Template:Mvar
(
edit
)
Template:Nowrap
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)