Rotation representation (mathematics)

Rotation representation (mathematics)

In geometry a rotation representation expresses the orientation of an object (or coordinate frame) relative to a coordinate reference frame. This concept extends to classical mechanics where rotational (or angular) kinematics is the science of describing the purely rotational motion of an object.

According to Euler's rotation theorem the general displacement of a rigid body (or coordinate frame) with one point fixed is described by a rotation about some axis. Furthermore, such a rotation may be uniquely described by a minimum of three parameters. However, for various reasons, there are several ways to represent such a rotation. Many of these definitions use more than the necessary minimum of three parameters, although any such representation still has only three degrees of freedom.

An example where rotation representation is used is in computer vision, where an automated observer needs to track a target. Let's consider a rigid body, with an orthogonal right-handed triad hat{mathbf{u, hat{mathbf{v and hat{mathbf{w of unit vectors fixed to its body (the object coordinate system). The basic problem is to specify the orientation of this triad, and hence the rigid body, in terms of the reference coordinate frame (in our case the camera coordinate system).

Rotation matrix (or direction cosine matrix)

It is clear that specifying the coordinates (scalar components) of a basis for our new (rotated) set of coordinate axes in terms of the original (non-rotated) coordinate axes, will completely describe the rotation. The three unit vectors hat{mathbf{u, hat{mathbf{v and hat{mathbf{w which form the basis for our new system each consists of 3 coordinates, yielding a total of 9 parameters. These parameters can be written as the elements of a 3 imes3 matrix mathbf{A}, called the rotation matrix or direction cosine matrix (DCM).

:mathbf{A} =left [ {egin{array}{ccc} hat{mathbf{u_x & hat{mathbf{v_x & hat{mathbf{w_x \ hat{mathbf{u_y & hat{mathbf{v_y & hat{mathbf{w_y \ hat{mathbf{u_z & hat{mathbf{v_z & hat{mathbf{w_z \end{array ight]

Each of the elements is the cosine of the angle between a rotated unit basis vector and one of the reference axes, and this is the reason why mathbf{A} is often called the direction cosine matrix. The elements of the DCM are not all independent - as Euler's rotation theorem dictates, the DCM has only three degrees of freedom. The DCM has the following properties:
*"A" is a real, orthogonal matrix.
*The eigenvalues of "A" are {1, e^{pm i heta} }, or::{1, cos( heta)+isin( heta), cos( heta)-isin( heta)}.
*The determinant (being the product of the eigenvalues) of "A" is "+1".

The angle heta which appears in the eigenvalue expression corresponds to the angle of the Euler axis and angle representation. The eigenvector corresponding with the eigenvalue of 1 is the accompanying Euler axis, since the axis is the only (nonzero) vector which remains unchanged by left-multiplying (rotating) it with the rotation matrix.

Two successive rotations represented by matrices mathbf{A}_1 and mathbf{A}_2 are easily combined as follows:mathbf{A}_ ext{total} = mathbf{A}_2mathbf{A}_1 (Note the order, since the vector being rotated is multiplied from the right).The ease by which vectors can be rotated using a DCM, as well as the ease of combining successive rotations, make the DCM a very useful and popular way to represent rotations, even though it is less concise than other representations.

Euler axis and angle (rotation vector)

From Euler's rotation theorem we know that any rotation can be expressed as a single rotation about some axis. The axis is the unit vector (unique except for sign) which remains unchanged by the rotation. The magnitude of the angle is also unique, with its sign being determined by the sign of the rotation axis.

The axis can be represented as a three-dimensional unit vector hat{mathbf{e = [e_x e_y e_z] ^T , and the angle by a scalar heta ,.

Since the axis is normalized, it has only two degrees of freedom. The angle adds the third degree of freedom to this rotation representation.

A similar but more concise way to express rotation is by using a rotation vector, a non-normalized three-dimensional vector the direction of which specifies the axis, and the length of which is heta ,::v = heta hat{mathbf{e

If the rotation angle heta is zero, the axis is not uniquely defined.Combining two successive rotations, each represented by an Euler axis and angle, is not straightforward. It is usual to convert to direction cosine matrix (DCM) or quaternion notation, calculate the product, and then convert back to Euler axis and angle.

Euler angles

The idea behind Euler angles is to split the complete rotation of the coordinate system into three simpler constitutive rotations, in such a way that the complete rotation matrix is the product of three simpler matrices. Notice that the outer matrix will represent a rotation around one of the axis of the reference frame, and the inner matrix represents a rotation around one of the moving frame axis. The middle matrix represent a rotation around an intermediate axis called line of nodes.

Unfortunately, the definition of Euler angles is not unique and in the literature many different conventions are used. These conventions depend on the axes about which the rotations are carried out, and their sequence (since rotations are not commutative).

The convention being used is usually indicated by specifying the axes about which the consecutive rotations (before being composed) take place, referring to them by index (1,2,3) or letter (X,Y,Z). The engineering and robotics communities typically use 3-1-3 Euler angles. Notice that after composing the independent rotations, they do not rotate about the axis anymore. The most external matrix rotates the other two, leaving the second rotation matrix over the line of nodes, and the third one in a frame comoving with the body. There are 3x3x3 = 27 possible definitions for Euler Angle rotations, but not all of them represent real decompositions.

The Euler angles are never expressed in terms of the external frame, or in terms of the co-moving rotated body frame, but in a mixture. Other angle conventions (e.g., Tait-Bryan angles, Fick angles, Helmholtz angles, roll-pitch-yaw, dip-slip-rake, azimuth-elevation-skew) are used to avoid this problem.


Quaternions (Euler symmetric parameters) have proven very useful in representing rotations due to several advantages above the other representations mentioned in this article.

A quaternion representation of rotation is written as a normalized four dimensional vector hat{mathbf{q = [q_1 q_2 q_3 q_4] ^T. In terms of the Euler axis hat{mathbf{e = [e_x e_y e_z] ^T and angle heta this vector's elements are expressed as follow:

egin{array}{lcl} q_1 &=& e_xsin( heta/2)\ q_2 &=& e_ysin( heta/2)\ q_3 &=& e_zsin( heta/2)\ q_4 &=& cos( heta/2)end{array}

The above definition follows the convention as used in (Wertz 1980) and (Markley 2003). An alternative definition used in some publications defines the "scalar" term as the first quaternion element, with the other elements shifted down one position. (Coutsias 1999), (Schmidt 2001)

Inspection shows that the quaternion parametrization obeys the following constraint:

q_1^2 + q_2^2 + q_3^2 + q_4^2 = 1.

The last term (in our definition) is often called the scalar term, which has its origin in quaternions when understood as the mathematical extension of the complex numbers, written as

a + b i + c j + d k. with {a,b,c,d} in mathbb{R},

and where {i,j,k} are the hypercomplex numbers satisfying

egin{array}{lclclcl} i^2 &=& j^2 &=& k^2 &=& -1\ ij &=& -ji &=& k&&\ jk &=& -kj &=& i&&\ ki &=& -ik &=& j&&end{array}

Quaternion multiplication is performed in the same manner as multiplication of complex numbers, except that the order of elements must be taken into account, since multiplication is not commutative. In matrix notation we can write quaternion multiplication as

ilde{mathbf{qotimesmathbf{q} =left [ {egin{array}{rrrr} q_4 & q_3 & -q_2 & q_1\ -q_3 & q_4 & q_1 & q_2\ q_2 & -q_1 & q_4 & q_3\ -q_1 & -q_2 & -q_3 & q_4end{array ight] left [ {egin{array}{c} ilde{q}_1\ ilde{q}_2\ ilde{q}_3\ ilde{q}_4end{array ight] .

Combining two consecutive quaternion rotations is therefore just as simple as using DCMs. Remember that two successive DCM rotations, mathbf{A}_1 followed by mathbf{A}_2, are combined as follows:

mathbf{A}_3 = mathbf{A}_2mathbf{A}_1.

We can represent this quaternion parameters in a similarly concise way. Please note the "inverse ordering" of quaternion multiplication when compared to DCM multiplication.

mathbf{q}_3 = mathbf{q}_1 otimes mathbf{q}_2.

Quaternions are a very popular parametrization due to the following properties:

*More compact than the DCM representation and less susceptible to round-off errors
*The quaternion elements vary continuously over the unit sphere in mathbb{R}^4, (denoted by S^3) as the orientation changes, avoiding discontinuous jumps (inherent to three-dimensional parameterizations)
*Expression of the DCM in terms of quaternion parameters involves no trigonometric functions
*It is simple to combine two individual rotations represented as quaternions using a quaternion product

Like DCM's, quaternions must sometimes be re-normalized due to rounding errors, to make sure that they correspond to valid rotations. The computational cost of re-normalizing a quaternion, however, is much less than for normalizing a 3 imes 3 DCM.

Rodrigues parameters

Rodrigues parameters (also called Gibbs vector) can be expressed in terms of Euler axis and angle as follows:

mathbf{g} = hat{mathbf{e an( heta/2).

The Gibbs vector is undefined for 180^circ rotations, which is undesirable for global attitude representation.

Modified Rodriguez parameters (MRPs) can be expressed in terms of Euler axis and angle by:

mathbf{p} = hat{mathbf{e an( heta/4).

The modified Rodrigues parametrization shares many characteristics with the rotation vector parametrization, including the occurrence of discontinuous jumps in the parameter space when incrementing the rotation.

Cayley-Klein parameters

See definition at [ Wolfram Mathworld]

Higher dimensional analogues

Conversion formulae between representations

DCM → Euler angles

The Euler angles (phi, heta,psi) can be extracted from the rotation matrix mathbf{A} by inspecting the combined DCM (rotation matrix) in analytical form.

Using the x-convention, the 3-1-3 Euler angles phi, heta and psi (around the Z,X and again the Z-axis) can be obtained as follows:

egin{array}{lcl} phi &=& arctan(A_{31},A_{32}),\ heta &=& arccos(A_{33}),\ psi &=& -arctan(A_{13},A_{23}).end{array}

Note that arctan(a,b) is equivalent to arctan(a/b) where we also take into account the quadrant in which the point (a,b) is in.

DCM → Euler axis/angle

If the Euler angle heta is not a multiple of pi, the Euler axis hat{mathbf{e = [e_1 e_2 e_3] ^T and angle heta can be computed from the elements of the rotation matrix mathbf{A} as follow:

egin{array}{lcl} heta &=& arccosleft((A_{11}+A_{22}+A_{33}-1)/2 ight),\ e_1 &=& (A_{32}-A_{23})/(2sin heta),\ e_2 &=& (A_{13}-A_{31})/(2sin heta),\ e_3 &=& (A_{21}-A_{12})/(2sin heta).end{array}

Alternatively, the following method can be used:

Eigen-decomposition of the DCM yields the eigenvalues 1, and cos heta pm isin heta.The Euler axis is the eigenvector corresponding to the eigenvalue of 1, and the heta can be computed from the remaining eigenvalues.

The Euler axis can be also found using Singular Value Decomposition since it is the normalized vector spanning the null-space of the matrix I-A.

DCM → quaternion

When computing a quaternion from the DCM parametrization there is a sign ambiguity, since mathbf{q} and -mathbf{q} represent the same rotation.

One way of computing the quaternion mathbf{q} = [q_1 q_2 q_3 q_4] ^T from the rotation matrix mathbf{A} is as follows:

egin{array}{lcl} q_4 &=& pmfrac{1}{2}sqrt{1+A_{11}+A_{22}+A_{33,\ q_1 &=& frac{1}{4q_4}(A_{32}-A_{23}),\ q_2 &=& frac{1}{4q_4}(A_{13}-A_{31}),\ q_3 &=& frac{1}{4q_4}(A_{21}-A_{12}).end{array}

There are three other mathematically equivalent ways to compute mathbf{q}. Numerical inaccuracy can be reduced by avoiding situations in which the denominator (in this case q_4) is close to zero. For small angles q_4 approx 1. One of the other three methods looks as follows:

egin{array}{lcl} q_1 &=& pmfrac{1}{2}sqrt{1+A_{11}-A_{22}-A_{33,\ q_2 &=& frac{1}{4q_1}(A_{12}+A_{21}),\ q_3 &=& frac{1}{4q_1}(A_{13}+A_{31}),\ q_4 &=& frac{1}{4q_1}(A_{23}-A_{32}).end{array}

Euler angles → DCM

We will consider the Euler Angle x-convention for the following algorithm.

The DCM of the complete rotation, mathbf{A}, is the matrix product of the three matrices for the individual rotations. The first rotation's matrix is on the right and the last on the left, since we left-multiply the orientation vector by the rotation matrix.

mathbf{A} = mathbf{A}_3mathbf{A}_2mathbf{A}_1.

If we use the general convention instead of the x-convention, the order of multiplication is reversed (this can be proven by writing out the equations).

The axes of the rotation depend on the specific convention being used. For rotations about the X, Y and Z axes with angles phi, heta and psi, the individual matrices are as follows:

egin{array}{lcl}mathbf{A}_X &=& left [egin{array}{ccc} 1 & 0 & 0\ 0 & cosphi & sinphi\ 0 & -sinphi & cosphi end{array} ight] ,\mathbf{A}_Y &=& left [egin{array}{ccc} cos heta & 0 & -sin heta\ 0 & 1 & 0\ sin heta & 0 & cos heta end{array} ight] ,\mathbf{A}_Z &=& left [egin{array}{ccc} cospsi & sinpsi & 0\ -sinpsi & cospsi & 0\ 0 & 0 & 1 end{array} ight] .end{array}

Euler angles → quaternion

We will consider the x-convention 3-1-3 Euler Angles for the following algorithm.

We can compute the quaternion mathbf{q} = [q_1 q_2 q_3 q_4] ^T from the Euler angles (phi, heta,psi) as follows:

egin{array}{lcl} q_1 &=& -cosleft((phi-psi)/2 ight)sin( heta/2),\ q_2 &=& sinleft((phi-psi)/2 ight)sin( heta/2),\ q_3 &=& -sinleft((phi+psi)/2 ight)cos( heta/2),\ q_4 &=& cosleft((phi+psi)/2 ight)cos( heta/2).end{array}

Warning: The above formulae are wrong. Consider Euler angles rotation (0,0,phi). The above gives q_3 = -sinleft(phi/2 ight) instead of q_3 = sinleft(phi/2 ight)

Euler axis/angle → DCM

The DCM corresponding to an Euler axis hat{mathbf{e = [e_1 e_2 e_3] ^T and angle heta can be computed as follows:

mathbf{A} = mathbf{I}_3cos heta + (1-cos heta)hat{mathbf{ehat{mathbf{e^T - mathbf{mathcal{Esin heta

with mathbf{I}_3 the 3 imes3 identity matrix, and

mathbf{mathcal{E = left [egin{array}{ccc} 0 & -e_3 & e_2\ e_3 & 0 & -e_1\ -e_2 & e_1 & 0 end{array} ight] .

Euler axis/angle → quaternion

Given the Euler axis hat{mathbf{e and angle heta, the quaternion mathbf{q} = [q_1 q_2 q_3 q_4] ^T can be computed by

egin{array}{lcl} q_1 &=& hat{e}_1sin( heta/2),\ q_2 &=& hat{e}_2sin( heta/2),\ q_3 &=& hat{e}_3sin( heta/2),\ q_4 &=& cos( heta/2).end{array}

Quaternion → DCM

The DCM corresponding to the quaternion mathbf{q} = [q_1 q_2 q_3 q_4] ^T can be computed as follows:

mathbf{A} = (q_4^2 - check{mathbf{q^Tcheck{mathbf{q)mathbf{I}_3 + 2check{mathbf{qcheck{mathbf{q^T - 2q_4mathbf{mathcal{Q

with mathbf{I}_3 the 3 imes3 identity matrix, and

check{mathbf{q = left [egin{array}{c} q_1\q_2\q_3end{array} ight] , mathbf{mathcal{Q = left [egin{array}{ccc} 0 & -q_3 & q_2\ q_3 & 0 & -q_1\ -q_2 & q_1 & 0 end{array} ight]

which gives

mathbf{mathcal{A = left [egin{array}{ccc} 1-2q_2^2-2q_3^2 & 2(q_1*q_2-q_3*q_4) & 2(q_1*q_3+q_2*q_4)\ 2(q_1*q_2+q_3*q_4) & 1-2q_1^2-2q_3^2 & 2(q_2*q_3-q_1*q_4)\ 2(q_1*q_3-q_2*q_4) & 2(q_1*q_4+q_2*q_3) & 1-2q_1^2-2q_2^2 end{array} ight]

or equivelently

mathbf{mathcal{A = left [egin{array}{ccc} -1+2q_1^2+2q_4^2 & 2(q_1*q_2-q_3*q_4) & 2(q_1*q_3+q_2*q_4)\ 2(q_1*q_2+q_3*q_4) & -1+2q_2^2+2q_4^2 & 2(q_2*q_3-q_1*q_4)\ 2(q_1*q_3-q_2*q_4) & 2(q_1*q_4+q_2*q_3) & -1+2q_3^2+2q_4^2 end{array} ight] .

Quaternion → Euler angles

Given the quaternion mathbf{q} = [q_1 q_2 q_3 q_4] ^T, the x-convention 3-1-3 Euler angles (phi, heta,psi) can be computed by

egin{array}{lcl} phi &=& arctan((q_1q_3+q_2q_4),(q_2q_3-q_1q_4)),\ heta &=& arccos(-q_1^2-q_2^2+q_3^2+q_4^2),\ psi &=& -arctan((q_1q_3-q_2q_4),(q_2q_3+q_1q_4)).end{array}

Warning: The above formulae are wrong. Consider a rotation about the z-axis, i.e. q_1 = q_2 =0. Then we get phi = heta = psi = 0.

Quaternion → Euler axis/angle

Given the quaternion mathbf{q} = [q_1 q_2 q_3 q_4] ^T, define check{mathbf{q = [q_1 q_2 q_3] ^T. Then the Euler axis hat{mathbf{e and angle heta can be computed by

egin{array}{lcl} hat{mathbf{e &=& frac{check{mathbf{q}{|check{mathbf{q,\ heta &=& 2arccos(q_4).end{array}

ee also

*Charts on SO(3)
*Conversion between quaternions and Euler angles
*Euler angles
*Euler filter
*Euler's rotation theorem
*Euler-Rodrigues parameters
*Rotation around a fixed axis
*Rotation (mathematics)
*Rotation matrix
*Rotation operator (vector space)
*SO(4)#The Euler-Rodrigues formula for 3D rotations


*Evangelos A. Coutsias and Louis Romero, (1999) "The Quaternions with an application to Rigid Body Dynamics", Department of Mathematics and Statistics, University of New Mexico.
*F. Landis Markley, (2003) "Attitude Error Representations for Kalman Filtering", Journal of Guidance, Control and Dynamics.
*H. Goldstein, (1980) "Classical Mechanics", 2nd. ed., Addison-Wesley. ISBN 0-201-02918-9
*James R. Wertz, (1980) "Spacecraft Attitude Determination and Control", D Reidel Publishing Company. ISBN 90-277-1204-2
*J. Schmidt and H. Niemann, (2001) "Using Quaternions for Parametrizing 3-D Rotations in Unconstrained Nonlinear Optimization", Vision, Modeling and Visualization (VMV01).
*Lev D. Landau and E. M. Lifshitz, (1976) "Mechanics", 3rd. ed., Pergamon Press. ISBN 0-08-021022-8 (hardcover) and ISBN 0-08-029141-4 (softcover).
*Klumpp, A. R., "Singularity-Free Extraction of a Quaternion from a Direction-Cosine Matrix", Journal of Spacecraft and Rockets, vol. 13, Dec. 1976, p. 754, 755.

Wikimedia Foundation. 2010.

Look at other dictionaries:

  • Rotation matrix — In linear algebra, a rotation matrix is a matrix that is used to perform a rotation in Euclidean space. For example the matrix rotates points in the xy Cartesian plane counterclockwise through an angle θ about the origin of the Cartesian… …   Wikipedia

  • Rotation — This article is about movement of a physical body. For other uses, see Rotation (disambiguation). A polyhedron resembling a sphere rotating around an axis. A rotation is a circular movement of an object around a center (or point) of rotation. A… …   Wikipedia

  • Rotation group — This article is about rotations in three dimensional Euclidean space. For rotations in four dimensional Euclidean space, see SO(4). For rotations in higher dimensions, see orthogonal group. In mechanics and geometry, the rotation group is the… …   Wikipedia

  • Rotation (mathematics) — Rotation of an object in two dimensions around a point O. In geometry and linear algebra, a rotation is a transformation in a plane or in space that describes the motion of a rigid body around a fixed point. A rotation is different from a… …   Wikipedia

  • Mathematics and Physical Sciences — ▪ 2003 Introduction Mathematics       Mathematics in 2002 was marked by two discoveries in number theory. The first may have practical implications; the second satisfied a 150 year old curiosity.       Computer scientist Manindra Agrawal of the… …   Universalium

  • mathematics — /math euh mat iks/, n. 1. (used with a sing. v.) the systematic treatment of magnitude, relationships between figures and forms, and relations between quantities expressed symbolically. 2. (used with a sing. or pl. v.) mathematical procedures,… …   Universalium

  • Rotation system — In combinatorial mathematics, rotation systems encode embeddings of graphs onto orientable surfaces, by describing the circular ordering of a graph s edges around each vertex.A more formal definition of a rotation system involves pairs of… …   Wikipedia

  • MATHEMATICS — Bible The Bible does not deal directly with proper mathematical subjects; however there are some parts that do relate indirectly to different mathematical topics. These are widely discussed by the various commentators on the Bible and Talmud: the …   Encyclopedia of Judaism

  • Mathematics of Sudoku — The class of Sudoku puzzles consists of a partially completed row column grid of cells partitioned into N regions each of size N cells, to be filled in using a prescribed set of N distinct symbols (typically the numbers {1, ..., N}), so that each …   Wikipedia

  • List of mathematics articles (R) — NOTOC R R. A. Fisher Lectureship Rabdology Rabin automaton Rabin signature algorithm Rabinovich Fabrikant equations Rabinowitsch trick Racah polynomials Racah W coefficient Racetrack (game) Racks and quandles Radar chart Rademacher complexity… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”