Axis–angle representation
Template:Short description Template:Broader
In mathematics, the axis–angle representation parameterizes a rotation in a three-dimensional Euclidean space by two quantities: a unit vector eScript error: No such module "Check for unknown parameters". indicating the direction of an axis of rotation, and an angle of rotation θScript error: No such module "Check for unknown parameters". describing the magnitude and sense (e.g., clockwise) of the rotation about the axis. Only two numbers, not three, are needed to define the direction of a unit vector eScript error: No such module "Check for unknown parameters". rooted at the origin because the magnitude of eScript error: No such module "Check for unknown parameters". is constrained. For example, the elevation and azimuth angles of eScript error: No such module "Check for unknown parameters". suffice to locate it in any particular Cartesian coordinate frame.
By Rodrigues' rotation formula, the angle and axis determine a transformation that rotates three-dimensional vectors. The rotation occurs in the sense prescribed by the right-hand rule.
The rotation axis is sometimes called the Euler axis. The axis–angle representation is predicated on Euler's rotation theorem, which dictates that any rotation or sequence of rotations of a rigid body in a three-dimensional space is equivalent to a pure rotation about a single fixed axis.
It is one of many rotation formalisms in three dimensions.
Rotation vector
The axis–angle representation is equivalent to the more concise rotation vector, also called the Euler vector (not to be confused with a vector of Euler angles). In this case, both the rotation axis and the angle are represented by a vector codirectional with the rotation axis whose length is the rotation angle Template:Mvar, It is used for the exponential and logarithm maps involving this representation.
Many rotation vectors correspond to the same rotation. In particular, a rotation vector of length θ + 2πMScript error: No such module "Check for unknown parameters"., for any integer Template:Mvar, encodes exactly the same rotation as a rotation vector of length Template:Mvar. Thus, there are at least a countable infinity of rotation vectors corresponding to any rotation. Furthermore, all rotations by 2πMScript error: No such module "Check for unknown parameters". are the same as no rotation at all, so, for a given integer Template:Mvar, all rotation vectors of length 2πMScript error: No such module "Check for unknown parameters"., in all directions, constitute a two-parameter uncountable infinity of rotation vectors encoding the same rotation as the zero vector. These facts must be taken into account when inverting the exponential map, that is, when finding a rotation vector that corresponds to a given rotation matrix. The exponential map is onto but not one-to-one.
Example
Say you are standing on the ground and you pick the direction of gravity to be the negative zScript error: No such module "Check for unknown parameters". direction. Then if you turn to your left, you will rotate Template:SfracScript error: No such module "Check for unknown parameters". radians (or -90°) about the -zScript error: No such module "Check for unknown parameters". axis. Viewing the axis-angle representation as an ordered pair, this would be
The above example can be represented as a rotation vector with a magnitude of Template:SfracScript error: No such module "Check for unknown parameters". pointing in the zScript error: No such module "Check for unknown parameters". direction,
Uses
The axis–angle representation is convenient when dealing with rigid-body dynamics. It is useful to both characterize rotations, and also for converting between different representations of rigid body motion, such as homogeneous transformationsScript error: No such module "Unsubst". and twists.
When a rigid body rotates around a fixed axis, its axis–angle data are a constant rotation axis and the rotation angle continuously dependent on time.
Plugging the three eigenvalues 1 and e±iθScript error: No such module "Check for unknown parameters". and their associated three orthogonal axes in a Cartesian representation into Mercer's theorem is a convenient construction of the Cartesian representation of the Rotation Matrix in three dimensions.
Rotating a vector
Script error: No such module "Labelled list hatnote".
Rodrigues' rotation formula, named after Olinde Rodrigues, is an efficient algorithm for rotating a Euclidean vector, given a rotation axis and an angle of rotation. In other words, Rodrigues' formula provides an algorithm to compute the exponential map from to SO(3)Script error: No such module "Check for unknown parameters". without computing the full matrix exponential.
If vScript error: No such module "Check for unknown parameters". is a vector in R3Script error: No such module "Check for unknown parameters". and eScript error: No such module "Check for unknown parameters". is a unit vector rooted at the origin describing an axis of rotation about which vScript error: No such module "Check for unknown parameters". is rotated by an angle Template:Mvar, Rodrigues' rotation formula to obtain the rotated vector is
For the rotation of a single vector it may be more efficient than converting eScript error: No such module "Check for unknown parameters". and Template:Mvar into a rotation matrix to rotate the vector.
Relationship to other representations
Script error: No such module "labelled list hatnote". There are several ways to represent a rotation. It is useful to understand how different representations relate to one another, and how to convert between them. Here the unit vector is denoted Template:Mvar instead of eScript error: No such module "Check for unknown parameters"..
Exponential map from 𝔰𝔬(3) to SO(3)
Script error: No such module "labelled list hatnote".
The exponential map effects a transformation from the axis-angle representation of rotations to rotation matrices,
Essentially, by using a Taylor expansion one derives a closed-form relation between these two representations. Given a unit vector representing the unit rotation axis, and an angle, θ ∈ RScript error: No such module "Check for unknown parameters"., an equivalent rotation matrix Template:Mvar is given as follows, where KScript error: No such module "Check for unknown parameters". is the cross product matrix of Template:Mvar, that is, Kv = ω × vScript error: No such module "Check for unknown parameters". for all vectors v ∈ R3Script error: No such module "Check for unknown parameters".,
Because KScript error: No such module "Check for unknown parameters". is skew-symmetric, and the sum of the squares of its above-diagonal entries is 1, the characteristic polynomial P(t)Script error: No such module "Check for unknown parameters". of KScript error: No such module "Check for unknown parameters". is P(t) = det(K − tI) = −(t3 + t)Script error: No such module "Check for unknown parameters".. Since, by the Cayley–Hamilton theorem, P(K)Script error: No such module "Check for unknown parameters". = 0, this implies that As a result, K4 = –K2Script error: No such module "Check for unknown parameters"., K5 = KScript error: No such module "Check for unknown parameters"., K6 = K2Script error: No such module "Check for unknown parameters"., K7 = –KScript error: No such module "Check for unknown parameters"..
This cyclic pattern continues indefinitely, and so all higher powers of KScript error: No such module "Check for unknown parameters". can be expressed in terms of KScript error: No such module "Check for unknown parameters". and K2Script error: No such module "Check for unknown parameters".. Thus, from the above equation, it follows that that is,
by the Taylor series formula for trigonometric functions.
This is a Lie-algebraic derivation, in contrast to the geometric one in the article Rodrigues' rotation formula.[1]
Due to the existence of the above-mentioned exponential map, the unit vector Template:Mvar representing the rotation axis, and the angle θScript error: No such module "Check for unknown parameters". are sometimes called the exponential coordinates of the rotation matrix Template:Mvar.
Log map from SO(3) to 𝔰𝔬(3)
Script error: No such module "labelled list hatnote". Let KScript error: No such module "Check for unknown parameters". continue to denote the 3 × 3 matrix that effects the cross product with the rotation axis Template:Mvar: K(v) = ω × vScript error: No such module "Check for unknown parameters". for all vectors vScript error: No such module "Check for unknown parameters". in what follows.
To retrieve the axis–angle representation of a rotation matrix, calculate the angle of rotation from the trace of the rotation matrix: and then use that to find the normalized axis,
where is the component of the rotation matrix, , in the -th row and -th column.
The axis-angle representation is not unique since a rotation of about is the same as a rotation of about . Of course, adding any integer multiple of 2π to will also result in the identical rotation; a better method is to constrain to the interval [0, 2π) or (-π, π].
The above calculation of axis vector does not work if Template:Mvar is symmetric. Because, this is possible only when = π, so sin() = 0, causing a division by 0 in the formula. However, the limit of the formula for , as → π, gives the correct value for . For the general case the may also be found using null space of Template:Mvar, see rotation matrix#Determining the axis.
The matrix logarithm of the rotation matrix Template:Mvar is
An exception occurs when RScript error: No such module "Check for unknown parameters". has eigenvalues equal to Template:Num. In this case, the log is not unique. However, even in the case where θ = πScript error: No such module "Check for unknown parameters". the Frobenius norm of the log is Given rotation matrices Template:Mvar and Template:Mvar, is the geodesic distance on the 3D manifold of rotation matrices.
For small rotations, the above computation of Template:Mvar may be numerically imprecise as the derivative of arccos goes to infinity as θ → 0Script error: No such module "Check for unknown parameters".. In that case, the off-axis terms will actually provide better information about Template:Mvar since, for small angles, R ≈ I + θKScript error: No such module "Check for unknown parameters".. (This is because these are the first two terms of the Taylor series for exp(θK)Script error: No such module "Check for unknown parameters"..)
This formulation also has numerical problems at θ = πScript error: No such module "Check for unknown parameters"., where the off-axis terms do not give information about the rotation axis (which is still defined up to a sign ambiguity). In that case, we must reconsider the above formula.
At θ = πScript error: No such module "Check for unknown parameters"., we have and so let so the diagonal terms of BScript error: No such module "Check for unknown parameters". are the squares of the elements of Template:Mvar and the signs (up to sign ambiguity) can be determined from the signs of the off-axis terms of Template:Mvar.
Unit quaternions
Script error: No such module "Labelled list hatnote". The following expression transforms axis–angle coordinates to versors (unit quaternions):
Given a versor q = r + vScript error: No such module "Check for unknown parameters". represented with its scalar Template:Mvar and vector vScript error: No such module "Check for unknown parameters"., the axis–angle coordinates can be extracted using the following:
A more numerically stable expression of the rotation angle uses the atan2 function: where Template:AbsScript error: No such module "Check for unknown parameters". is the Euclidean norm of the 3-vector vScript error: No such module "Check for unknown parameters"..
See also
- Homogeneous coordinates
- Pseudovector
- Rotations without a matrix
- Screw theory, a representation of rigid-body motions and velocities using the concepts of twists, screws, and wrenches
References
<templatestyles src="Reflist/styles.css" />
- ↑ This holds for the triplet representation of the rotation group, i.e., spin 1. For higher dimensional representations/spins, see Script error: No such module "Citation/CS1".
Script error: No such module "Check for unknown parameters".