Rodrigues' rotation formula

From Wikipedia, the free encyclopedia
(Redirected from Rotation formula)
Jump to navigation Jump to search

Template:Short description Script error: No such module "Distinguish".

Script error: No such module "Unsubst". 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 in SO(3)Script error: No such module "Check for unknown parameters"., 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 from the Lie algebra so(3)Script error: No such module "Check for unknown parameters". to its Lie group SO(3)Script error: No such module "Check for unknown parameters"..

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."[1] This proposal has received notable support,[2] but some others have viewed the formula as just one of many variations of the Euler–Rodrigues formula, thereby crediting both.[3]

Statement

If vScript error: No such module "Check for unknown parameters". is a vector in 3Script error: No such module "Check for unknown parameters". and kScript error: No such module "Check for unknown parameters". is a unit vector describing an axis of rotation about which vScript error: No such module "Check for unknown parameters". rotates by an angle Template:Mvar according to the right hand rule, the Rodrigues formula for the rotated vector vrotScript error: No such module "Check for unknown parameters". is Template:Equation box 1

The intuition of the above formula is that the first term scales the vector down, while the second skews it (via vector addition) toward the new rotational position. The third term re-adds the height (relative to k) that was lost by the first term.

An alternative statement is to write the axis vector as a cross product a × bScript error: No such module "Check for unknown parameters". of any two nonzero vectors aScript error: No such module "Check for unknown parameters". and bScript error: No such module "Check for unknown parameters". which define the plane of rotation, and the sense of the angle θScript error: No such module "Check for unknown parameters". is measured away from aScript error: No such module "Check for unknown parameters". and towards bScript error: No such module "Check for unknown parameters".. Letting αScript error: No such module "Check for unknown parameters". denote the angle between these vectors, the two angles θScript error: No such module "Check for unknown parameters". and αScript error: No such module "Check for unknown parameters". are not necessarily equal, but they are measured in the same sense. Then the unit axis vector can be written

𝐤=𝐚×𝐛|𝐚×𝐛|=𝐚×𝐛|𝐚||𝐛|sinα.

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

File:Rodrigues-formula.svg
Rodrigues' rotation formula rotates vScript error: No such module "Check for unknown parameters". by an angle θScript error: No such module "Check for unknown parameters". around vector kScript error: No such module "Check for unknown parameters". by decomposing it into its components parallel and perpendicular to kScript error: No such module "Check for unknown parameters"., and rotating only the perpendicular component.
File:Orthogonal decomposition unit vector rodrigues rotation formula.svg
Vector geometry of Rodrigues' rotation formula, as well as the decomposition into parallel and perpendicular components.

Let kScript error: No such module "Check for unknown parameters". be a unit vector defining a rotation axis, and let vScript error: No such module "Check for unknown parameters". be any vector to rotate about kScript error: No such module "Check for unknown parameters". by angle θScript error: No such module "Check for unknown parameters". (right hand rule, anticlockwise in the figure), producing the rotated vector 𝕧rot.

Using the dot and cross products, the vector vScript error: No such module "Check for unknown parameters". can be decomposed into components parallel and perpendicular to the axis kScript error: No such module "Check for unknown parameters".,

𝐯=𝐯+𝐯,

where the component parallel to kScript error: No such module "Check for unknown parameters". is called the vector projection of vScript error: No such module "Check for unknown parameters". on kScript error: No such module "Check for unknown parameters".,

𝐯=(𝐯𝐤)𝐤,

and the component perpendicular to kScript error: No such module "Check for unknown parameters". is called the vector rejection of vScript error: No such module "Check for unknown parameters". from kScript error: No such module "Check for unknown parameters".:

𝐯=𝐯𝐯=𝐯(𝐤𝐯)𝐤=𝐤×(𝐤×𝐯),

where the last equality follows from the vector triple product formula: 𝐚×(𝐛×𝐜)=(𝐚𝐜)𝐛(𝐚𝐛)𝐜. Finally, the vector 𝐤×𝐯=𝐤×𝐯 is a copy of 𝐯 rotated 90° around 𝐤. Thus the three vectors 𝐤, 𝐯,𝐤×𝐯 form a right-handed orthogonal basis of 3, with the last two vectors of equal length.

Under the rotation, the component 𝐯 parallel to the axis will not change magnitude nor direction:

𝐯rot=𝐯;

while the perpendicular component will retain its magnitude but rotate its direction in the perpendicular plane spanned by 𝐯 and 𝐤×𝐯, according to

𝐯rot=cos(θ)𝐯+sin(θ)𝐤×𝐯=cos(θ)𝐯+sin(θ)𝐤×𝐯,

in analogy with the planar polar coordinates (r, θ)Script error: No such module "Check for unknown parameters". in the Cartesian basis exScript error: No such module "Check for unknown parameters"., eyScript error: No such module "Check for unknown parameters".:

𝐫=rcos(θ)𝐞x+rsin(θ)𝐞y.

Now the full rotated vector is:

𝐯rot=𝐯rot+𝐯rot=𝐯+cos(θ)𝐯+sin(θ)𝐤×𝐯.

Substituting 𝐯=𝐯𝐯 or 𝐯=𝐯𝐯 in the last expression gives respectively:

𝐯rot=cos(θ)𝐯+sin(θ)𝐤×𝐯+(1cosθ)(𝐤𝐯)𝐤
𝐯rot=𝐯+sin(θ)𝐤×𝐯+(1cosθ)𝐤×(𝐤×𝐯).

Matrix notation

The linear transformation on 𝐯3 defined by the cross product 𝐯𝐤×𝐯 is given in coordinates by representing vScript error: No such module "Check for unknown parameters". and k × vScript error: No such module "Check for unknown parameters". as column matrices:

[(𝐤×𝐯)x(𝐤×𝐯)y(𝐤×𝐯)z]=[kyvzkzvykzvxkxvzkxvykyvx]=[0 kzkykz0 kxkykx0 ][vxvyvz].

That is, the matrix of this linear transformation (with respect to standard coordinates) is the cross-product matrix:

𝐊=[0 kzkykz0 kxkykx0 ].

That is to say,

𝐤×𝐯=𝐊𝐯,𝐤×(𝐤×𝐯)=𝐊(𝐊𝐯)=𝐊2𝐯.

The last formula in the previous section can therefore be written as:

𝐯rot=𝐯+(sinθ)𝐊𝐯+(1cosθ)𝐊2𝐯.

Collecting terms allows the compact expression

𝐯rot=𝐑𝐯

where Template:Equation box 1 is the rotation matrix through an angle Template:Mvar counterclockwise about the axis kScript error: No such module "Check for unknown parameters"., and IScript error: No such module "Check for unknown parameters". the 3 × 3 identity matrix.[4] This matrix RScript error: No such module "Check for unknown parameters". is an element of the rotation group SO(3)Script error: No such module "Check for unknown parameters". of 3Script error: No such module "Check for unknown parameters"., and KScript error: No such module "Check for unknown parameters". is an element of the Lie algebra 𝔰𝔬(3) generating that Lie group (note that KScript error: No such module "Check for unknown parameters". is skew-symmetric, which characterizes 𝔰𝔬(3)).

In terms of the matrix exponential,

𝐑=exp(θ𝐊).

To see that the last identity holds, one notes that

𝐑(θ)𝐑(ϕ)=𝐑(θ+ϕ),𝐑(0)=𝐈,

characteristic of a one-parameter subgroup, i.e. exponential, and that the formulas match for infinitesimal Template:Mvar.

See also

References

<templatestyles src="Reflist/styles.css" />

  1. Script error: No such module "Citation/CS1".
  2. Script error: No such module "Citation/CS1".
  3. Script error: No such module "Citation/CS1".
  4. Script error: No such module "citation/CS1".

Script error: No such module "Check for unknown parameters".

External links

fr:Rotation vectorielle#Cas général