Three-Dimensional Rotations

1
Three-Dimensional
Rotations
A rotation is a transformation that preserves the length, the volume (with sign), and
the angle between pairs of vectors. If vector a is rotated into vector b, then the
property of length preservation is expressed as
|a| = |b|.
(1.1)
Furthermore, if vectors a1 , a2 and a3 are transformed by the same identical rotation
into vectors b1 , b2 and b3 , respectively, by the property of volume preservation we
have
a1 · a2 × a3 = b1 · b2 × b3 .
(1.2)
Finally, by the property of angle preservation between vectors, we have
cos φa1 ,a2 = a1 · a2 = b1 · b2 = cos φb1 ,b2 ,
(1.3)
where φi,j indicates the angle between vector i and vector j. Because of these three
properties, a rotation is termed a rigid transformation.
In mechanics, rotations are used for expressing relationships between coordinate
systems. A rectangular coordinate system is defined by a frame. Each frame is
composed by a point, called the frame pole, and by a triad of orthogonal unit vectors
with origin in the pole. Since rotations are rigid transformations, given two triads I
and J , the latter can always be seen as obtained by a suitable rotation of the former.
Hence, rotations play a fundamental role whenever a problem is formulated in terms
of multiple coordinate systems in relative motion with respect to one another.
In the formulation of flight mechanics problems, rotations are routinely used for
transforming the components of vectors from one coordinate system to another. Furthermore, the motion of a vehicle with respect to a frame of reference is described
1
2
THREE-DIMENSIONAL ROTATIONS
in terms of the position and orientation of a body attached frame that is fixed to the
vehicle and moves with it. The position of the vehicle with respect to the reference
frame is given by the distance vector between the pole of the reference frame and the
pole of the vehicle attached frame. On the other hand, the orientation of the vehicle
with respect to the reference frame is given by the rotation that brings the reference
triad into the vehicle attached triad. When only the orientations are of interest, as in
most instances in the rest of this chapter, we can use triads rather than frames in order
to describe systems of coordinates.
In this chapter we study the problem of three-dimensional rotations, and we introduce the main instruments that are used for describing and manipulating rotations.
The concepts and tools here exposed will be used later on in the derivation of the
vehicle equations of motion, and in their analysis and solution. Furthermore, in this
chapter we show that rotations are characterized by special properties. In fact, as with
many other problems in mechanics, rotations can be described in terms of tensorial
quantities. In particular, the first order tensors, called rotation vectors, belong to special spaces whose properties imply that: a) the composition of successive rotations
can not be expressed by simply adding the corresponding rotation vectors, and b)
rotations do not commute, in the sense that changing the order in which two successive rotations are performed, changes the resulting composed rotation. These special
characteristics of rotations are found only in the three-dimensional case, while in
two spatial dimensions rotations can be added and commute, and are therefore much
simpler to analyze. The title of this chapter emphasizes the special nature of the
three-dimensional case. The treatment of the material presented herein is designed
to be self-contained, however the reader might wish to find further information and
additional details in classical references such as [5, 4].
We shall start the study of rotations by looking first at the problem of transforming
components between triads, which leads to the concept of direction cosine matrix.
1.1 THE DIRECTION COSINE MATRIX
Consider two orthonormal triads of unit vectors, I = (i1 , i2 , i3 ) and J = (j1 , j2 , j3 ),
as shown in figure 1.1. Each unit vector jk of J can be expressed in terms of the unit
vectors il of I as
jk = (i1 · jk ) i1 + (i2 · jk ) i2 + (i3 · jk ) i3 =
3
X
l=1
(il · jk ) il ,
(1.4)
where k = 1, 2, 3. This relationship between the vectors of two triads can be conveniently expressed by means of the direction cosine matrix [Λ], whose scalar components are
Λkl = ik · jl , k, l = 1, 2, 3.
(1.5)
The entries of this matrix represent the cosines of the angles between the unit vectors
of triad I and those of triad J ,
ik · jl = cos φik ,jl ,
(1.6)
THE DIRECTION COSINE MATRIX
3
j3
j2
i3
j1
i1
i2
Figure 1.1 Orthonormal triads of unit vectors, I = (i1 , i2 , i3 ) and J = (j1 , j2 , j3 ).
as the name of the matrix suggests.
The same matrix entries can also be interpreted in an alternative way. In fact, from
its definition, the columns of the direction cosine matrix are seen to represent the
components of the unit vectors jk measured in triad I. Indicating the components of
vector a in triad A with the notation aA , the direction cosine matrix can be partitioned
by columns as follows:
h i
[Λ] = j1I j2I j3I .
(1.7)
By a similar argument, the rows of the matrix are seen to represent the components
of the unit vectors ik measured in triad J :
 JT 
i1
 JT 
.
[Λ] = 
(1.8)
 i2

T
iJ
3
Using now equation (1.4) and the direction cosine matrix definition, equation (1.5),
it is readily verified that the direction cosine matrix transforms the components of the
unit vectors ik measured in I into the components of the unit vectors jk measured in
the same triad:
jkI = [Λ] iIk , k = 1, 2, 3.
(1.9)
We shall use this fact later on for developing the rule of transformation of components
of vectors and tensors in changing reference from one basis to another.
The direction cosine matrix is orthogonal, i.e. it enjoys the following fundamental
property:
[Λ][Λ]T = [Λ]T[Λ] = [I],
(1.10)
4
THREE-DIMENSIONAL ROTATIONS
where [I] is the 3 × 3 identity matrix. In fact, using equation (1.7) which expresses
the matrix partitioning by columns, we can immediately verify that
 IT 
j1
 I T  h I I Ii h I T Ii
T

[Λ] [Λ] = 
(1.11)
 j2  j1 j2 j3 = jk jl = [δkl ] = [I],
j3I T
where δkl is the Kronecker symbol, i.e. δkl = 1 if k = l, δkl = 0 if k 6= l. The
diagonal terms of the direction cosine matrix are equal to one because vectors jk are
of unit length, jk · jk = 1, while the off-diagonal terms of the matrix are equal to
zero because the triad vectors are mutually orthogonal, jk · jl = 0, k 6= l. Given
the orthogonality of the direction cosine matrix, its inverse is readily computed from
(1.10) as
[Λ]−1 = [Λ]T .
(1.12)
1.2 THE ANGULAR VELOCITY
Consider now [Λ] as a function of a scalar parameter t ∈ R+ , [Λ] = [Λ(t)]. This
would be the case whenever one of the two triads moves with respect to the other,
for example, because it is attached to a body that is in motion with respect to a fixed
frame. Differentiating the orthogonality condition (1.10) with respect to t yields
T
˙
˙ T = 0,
[Λ][Λ]
+ [Λ][Λ]
(1.13)
˙ = d · /dt was used to indicate differentiation with respect to
where the notation (·)
time. Setting now
T
˙
[A] = [Λ][Λ]
,
(1.14)
equation (1.13) implies that [A] is a skew symmetric matrix:
[A] = −[A]T .
(1.15)
Since a 3 × 3 skew symmetric matrix can depend on only three parameters, [A] can be
expressed in terms of the components of a vector ωJ /I , termed the angular velocity
vector of triad J with respect to triad I. When there are only two triads, and where
there is no possibility of confusion, in order to simplify the notation we will indicate
the angular velocity simply with the symbol ω, rather than with the more precise
ωJ /I . Indicating the components of ω in I with the notation ω I = (ω1 , ω2 , ω3 )T ,
the skew symmetric matrix [A] can be written as


0 −ω3
ω2
I
[A] = ω×
=  ω3
0 −ω1  .
(1.16)
−ω2
ω1
0
The symbol (·)× is here used to indicate a skew symmetric tensor, whose components in I are noted (·)I× . This notation reminds the fact that a skew symmetric
THE ANGULAR VELOCITY
5
matrix can be used for computing the components of the cross product between two
vectors. In fact, given two vectors a and b, their cross product is defined as
c = a × b = |a||b| sin φa,b n,
(1.17)
where n is a unit vector orthogonal to the plane formed by a and b, and φa,b the
angle between them. In components measured in I, equation (1.17) is expressed as


a2 b 3 − a3 b 2
(1.18)
c I =  a3 b 1 − a1 b 3  ,
a1 b 2 − a2 b 1
which can also be written as

0
cI = aI× bI =  a3
−a2
−a3
0
a1


a2
b1
−a1   b2  ,
0
b3
(1.19)
where the components of the various vectors are aI = (a1 , a2 , a3 )T , bI = (b1 , b2 , b3 )T ,
and cI = (c1 , c2 , c3 )T . Hence, the cross product between vectors a and b can be
regarded as the product between a skew symmetric second order tensor a× and vector
b:
c = a × b = a× b.
(1.20)
The skew symmetric second order tensor will be extensively used in the remaining of
this chapter. For future reference, we note that given a generic second order tensor T ,
its axial vector v is defined as v = axial(T ), such that v× = (T − T T )/2. Hence,
given the skew symmetric tensor a× above, vector a can be computed from tensor
a× as a = axial(a× ).
Returning to the problem of differentiating the orthogonality condition, using now
(1.16), equation (1.14) becomes
˙ = ω I [Λ].
[Λ]
×
(1.21)
Examined column by column, this matrix ordinary differential equation yields the
time derivatives of the components of the jk unit vectors measured in the I triad:
djkI
I I
= ω×
jk ,
dt
k = 1, 2, 3.
(1.22)
Since all components are referred to the same triad I, these equations can be expressed
in vector form as
djk
= ω × jk , k = 1, 2, 3.
(1.23)
dt
These equations express the time rates of change of the unit vectors of a moving triad,
and are known as Poisson’s relations.
6
THREE-DIMENSIONAL ROTATIONS
1.3 THE ROTATION TENSOR
So far, we have considered the problem of transforming vector components from one
basis to another. This has lead to the concept of a direction cosine matrix, and shown
its orthogonality property. Orthogonality has then lead to the concept of angular
velocity and shown the role of the skew symmetric second order tensor. These same
concepts can be derived by looking at the problem of rotating a vector a into a vector
b, a transformation that we will indicate symbolically as
b = Rot(a).
(1.24)
The analysis of the rotation problem shows that this transformation between vectors
is accomplished by a tensor, known as the rotation tensor. In this section we shall
therefore study the derivation of the rotation tensor as a function of its associated vectorial quantity, the rotation vector. This analysis will provide the basis for discussing
of the fundamental problem of how to describe finite rotations in terms of suitable
degrees of freedom, a problem that is known in the literature as the parameterization
of rotations.
The expression of the rotation tensor in terms of the rotation vector can be derived in
at least two alternative ways: using purely geometric arguments,or using a differential
approach. While both ways of looking at the problem clearly lead to the same results,
both have their interesting peculiarities and highlight different important properties
of rotations. Hence, both paths will be illustrated in the following pages. We shall
start by the most intuitive and simple one, which is the geometric approach.
1.3.1
Geometric Derivation of the Rotation Tensor
The geometric derivation of the rotation tensor can be based on the two fundamental theorems of Euler on rotations. Euler’s Displacement Theorem states that any
arbitrary displacement of a rigid body that leaves a point fixed is a rotation about a
unit vector k by an angle ϕ. In other words, any three-dimensional rotation can be
interpreted as a two-dimensional rotation that takes place in a plane orthogonal to
a suitably chosen direction. Furthermore, Euler’s Rotation Theorem states that any
rotation may be described in terms of only three parameters.
Consider in particular the rotation of vector a into vector b, as depicted in figure
1.2. According to Euler’s Displacement Theorem, the rotation of a into b can be seen
as produced by a rotation ϕ about the rotation axis k. The problem is now to compute
b, given a, k and ϕ. With this goal in mind, define first a triad of orthogonal unit
vectors i, j and k. Unit vector j is orthogonal to plane πa,k spanned by a and k,
j=
k×a
,
|a| sin α
(1.25)
α being the angle between k and a, while unit vector i completes a right-handed
triad,
i = j × k,
(1.26)
THE ROTATION TENSOR
7
d
c
j
k
e
a a
a
b
j
i
pa,k
Figure 1.2 Rotation of vector a into vector b through a rotation angle ϕ about unit vector
k.
and consequently lies in the plane πa,k . With reference to figure 1.2, vector b can
now be expressed as the sum of four vectors
b = a + c + d + e,
(1.27)
where c and e are parallel to i, while d is parallel to j. Each one of these vectors can
be readily expressed in terms of only a, k and ϕ:
(k × a) × k
= k × k × a,
(1.28)
|a| sin α
k×a
d = |a| sin α sin ϕ j = |a| sin α sin ϕ
= sin ϕ k × a,
(1.29)
|a| sin α
(k × a) × k
e = |a| sin α cos ϕ i = |a| sin α cos ϕ
= − cos ϕ k × k × a. (1.30)
|a| sin α
c = −|a| sin α i = −|a| sin α
Substituting these expressions into (1.27), vector b is now computed as
b = Ra,
(1.31)
R = I + sin ϕ k× + (1 − cos ϕ)k× k× ,
(1.32)
where
8
THREE-DIMENSIONAL ROTATIONS
is the rotation tensor that transforms a into b, and ψ = ϕk is termed the rotation
vector. Note that, coherently with Euler’s Rotation Theorem, R is characterized by
only three parameters: the rotation angle ϕ and the two independent parameters that
define unit vector k. Equation (1.32) is known as the Euler-Rodrigues formula.
For future reference and ease of notation, it is convenient to write R as
R=
2
X
Rk (ψ× )k ,
(1.33)
k=0
where the rotation tensor coefficients are given by
R0 = 1,
R1 =
sin ϕ
,
ϕ
R2 =
1 − cos ϕ
.
ϕ2
(1.34)
The coefficients are well defined for the rotation angle that tends to zero, and in fact
lim R1 = 1,
ϕ→0
lim R2 =
ϕ→0
1
.
2
(1.35)
Hence, as expected,
lim R = I,
ϕ→0
(1.36)
and b = a for ϕ = 0.
The rotation tensor enjoys some important properties. In fact, using its definition,
equation (1.33), it is readily verified that R is an orthogonal tensor:
RRT = RTR = I.
(1.37)
This could also be obtained by other means, for example by recalling that a rotation
is a length-preserving transformation, property (1.1). In fact, using (1.31), the length
of vector b is
√
√
|b| = b · b = a · RT Ra.
(1.38)
On the other hand, the length of a is
|a| =
√
a · a,
(1.39)
and the condition |b| = |a| requires R to be orthogonal, equation (1.37).
A second property of the rotation tensor is obtained by multiplication with the
rotation vector:
R ψ = ψ.
(1.40)
This indicates that ψ is unaffected by the rotation, as in fact expected since the rotation
takes place about k that is indeed parallel to ψ. This property is closely related to the
eigen analysis of R. In fact, the eigenvalue problem for R is written as
(R − λi I) xi = 0,
i = 1, 2, 3,
(1.41)
THE ROTATION TENSOR
9
where λi is the ith eigenvalue and xi its associated eigenvector. Rearranging (1.40)
as
(R − I)ψ = 0,
(1.42)
and comparing this expression with (1.41), we conclude that the axis of rotation k can
be regarded as the (normalized to one) eigenvector of the rotation tensor corresponding
to the eigenvalue λ = 1. Orthogonal tensors that have a positive unit eigenvalue are
termed proper orthogonal tensors.
1.3.1.1 Virtual Variation and Angular Velocity We have already seen when
discussing of the direction cosine matrix that time derivatives of the orthogonality
property lead to the definition of the angular velocity. Here we shall take a similar
path but, having now derived the expression of the rotation tensor in terms of the
rotation vector, we will be able to derive the expression of the angular velocity as a
function of the rotation vector and of its time derivatives. This is useful in practical
flight mechanics applications, for example in the simulation of the vehicle response,or
for computing the vehicle orientation based on measurements of the angular velocity
obtained by onboard gyros.
Before starting, it should be noted that instead of considering derivatives with
respect to time, one could consider virtual variations. While time derivatives will
lead to the definition of the the angular velocity, virtual variations will lead to the
definition of the virtual rotation.
To illustrate this point, let us start by taking a virtual variation of the orthogonality
condition, equation (1.37). By the same argument used for the direction cosine matrix,
it is clear that this virtual variation leads to the definition of a skew symmetric tensor:
ψδ× = δRRT .
(1.43)
The vector associated with this tensor is noted ψδ = axial(ψδ× ), and it is termed
virtual rotation. We anticipate, and it will become clear in the following, that the
virtual rotation can not be interpreted as the virtual variation of the rotation vector,
δψ. The notation (·)δ , where the symbol of variation δ is used as a subscript, is a
reminder of this important fact.
Computing δR from (1.33), one obtains
δR = δR1 ψ× + R1 δψ× + δR2 ψ× ψ× + R2 δψ× ψ× + ψ× δψ× .
(1.44)
Inserting into (1.43) and rearranging the terms, one gets the relationship between the
virtual rotation and the variation of the rotation vector as
ψδ = Sδψ,
(1.45)
where the following property was used for eliminating the powers of ψ× higher than
two:
(ψ× )3 + |ψ|ψ× = 0.
(1.46)
Tensor S has the following expression
S=
2
X
k=0
Sk (ψ× )k ,
(1.47)
10
THREE-DIMENSIONAL ROTATIONS
where the coefficients Sk are found as
S0 = 1,
1 − cos ϕ
,
ϕ2
S1 = R2 =
S2 =
1
ϕ2
sin ϕ
1−
.
ϕ
(1.48)
These coefficients are well defined for the rotation angle that tends to zero:
lim S1 =
ϕ→0
1
,
2
lim S2 =
ϕ→0
1
.
6
(1.49)
Notice further that
lim S = I.
ϕ→0
(1.50)
Using its definition, the determinant of S can be readily computed as
det(S) =
2
(1 − cos ϕ).
ϕ2
(1.51)
Therefore, tensor S is singular for ϕ = 2kπ, k = (1, ∞). This means that the
description of rotations based on the rotation vector has only a finite range of validity:
−2π < ϕ < 2π. We shall come back to this problem later on when discussing of the
parameterization of rotations.
From equation (1.45) and the expression for S that we have just derived, it can be
observed that, unless ϕ = 0 or δψ is parallel to ψ (two-dimensional rotation), the
virtual rotation differs from the virtual variation of the rotation vector, i.e.
ψδ 6= δψ,
(1.52)
as previously anticipated.
The variation of the rotation vector can be computed as a function of the virtual
rotation by inverting equation (1.45), which gives
δψ = S −1 ψδ .
(1.53)
Due to the singularity of S, this relationship is not defined for ϕ = 2kπ, k = (1, ∞),
and it will be ill conditioned in the close neighborhood of these values. Setting
S −1 =
2
X
Ŝk (ψ× )k ,
(1.54)
k=0
and inserting the coefficients of S given in (1.48) into the identity SS −1 = I, one
can readily find the coefficients of S −1 , which write
1
1
sin ϕ
Ŝ0 = 1, Ŝ1 = − , Ŝ2 = 3 ϕ −
.
(1.55)
2
ϕ
det(S)
Tensors R and S are closely related. The following expressions of R in terms of
S and S −T can be easily verified using the definitions of the two tensors:
R = SS −T = S −TS.
(1.56)
11
THE ROTATION TENSOR
Another property between the two tensors will emerge from the differential approach
presented later on.
The same identical procedure that has been followed so far and that has led to the
expression between virtual rotation and variation of the rotation vector, can now be
repeated by replacing variations with derivatives. This will yield the expression of the
angular velocity in terms of the time rate of change of the rotation vector. Considering
R as a function of the scalar parameter t ∈ R+ , and differentiating the orthogonality
condition (1.37), yields a skew symmetric tensor
ω× = ṘRT ,
(1.57)
whose associated axial vector ω can be interpreted as the angular velocity. Computing
Ṙ from (1.33) and inserting into the previous expression, the angular velocity can be
written as
ω = S ψ̇.
(1.58)
Here again, notice that the angular velocity can not in general be interpreted as the
time rate of change of the rotation vector, unless the problem is two-dimensional or
we are at the origin, i.e. ϕ = 0. The inverse relationship is then
ψ̇ = S −1 ω,
(1.59)
which however will be undefined or ill conditioned in the neighborhood of the singular
points of S.
1.3.2
Differential Approach to the Derivation of the Rotation Tensor
In the previous section, the rotation tensor was derived based solely on geometric
considerations. Here it will be derived using a differential approach that highlights
some other important characteristics of this tensor.
To begin with, it is necessary to establish the functional form of the relation between
a generic vector a and its rotated vector b, equation (1.24). In the previous section
this relationship was found to be b = Ra, based on the geometry of the problem.
Here, we will derive this same result based on a different argument. With reference
to figure 1.3, consider two vectors a1 and a2 and their sum a = a1 + a2 . Given the
length, volume and angle preserving characteristics of rotations, equations (1.1-1.3),
the triangle formed by vectors a, a1 and a2 is rigidly rotated into the triangle formed
by vectors b, b1 and b2 . This means that it is possible to rotate the sum a of vectors
a1 and a2 into b, or rotate a1 into b1 and a2 into b2 and then sum the rotated vectors
to yield b = b1 + b2 , obtaining the same resulting vector b in both cases. This
establishes the fact that a rotation is a linear transformation:
Rot(a1 + a2 ) = Rot(a1 ) + Rot(a2 ).
(1.60)
Consequently, the operator Rot(·) must have the following form
Rot(·) = R · +r,
(1.61)
12
THREE-DIMENSIONAL ROTATIONS
k
a
b
a2
a1
b1
b2
Figure 1.3 The rotation of the sum of two vectors is equivalent to the sum of the rotated
vectors.
where R is some tensor and r some vector, both yet to be determined. However, a
rotation is a length-preserving operation, i.e.
p
|a| = |b| = |Ra + r| = a · RTRa + a · RTr + r · Ra + r · r,
(1.62)
a fact that leads to conclude that r = 0 and R is orthogonal, RRT = I. This
establishes the fact that the rotation of vector a into vector b can be expressed as
b = Ra,
(1.63)
as previously derived by a different argument. However, the functional form of tensor
R remains yet to be determined.
With the goal of determining R, consider now a scalar parameter ξ ∈ [0, 1], such
that
bξ = Rξ a.
(1.64)
For each ξ, Rξ is a rotation, so that |bξ | = |a|. Furthermore, each rotation Rξ has the
same rotation axis k. This way we have defined a family of parallel rotations, whose
parameter is ξ; for increasing values of ξ, bξ is progressively rotated from a until the
total rotation from a to b is achieved for ξ = 1, i.e. R = Rξ=1 . This situation is
depicted in figure 1.4.
Tensor Rξ represents a rotation only if it is orthogonal. Hence, we must have
Rξ RTξ = I.
(1.65)
Differentiating this orthogonality condition with respect to the parameter ξ yields
R′ξ = ψ× Rξ ,
(1.66)
where the following notation was used (·)′ = d · /dξ to indicate differentiation with
respect to ξ, and where ψ is a yet unknown constant (with respect to ξ) vector.
13
THE ROTATION TENSOR
k
xj
a
x=1
bx
b
Figure 1.4 Family of parallel rotations, with parameter 0 ≤ ξ ≤ 1 and rotation axis k, such
that bξ=0 = a, bξ=1 = b.
Equation (1.66) can be regarded as a first order tensor ordinary differential equation,
subjected to the initial conditions
Rξ=0 = I,
(1.67)
that ensure that the rotation is null at the origin, i.e. bξ=0 = a. Using the fact that this
ordinary differential equation has constant coefficients, the solution is readily found
in the form of an exponential
Rξ = eξψ× ,
(1.68)
where the exponential of a tensor is defined through the following infinite series
eA =
∞
X
Ak
k=0
k!
.
(1.69)
Evaluating (1.68) for ξ = 1 gives
R = eψ× ,
(1.70)
which shows that the rotation tensor can be regarded as the exponential of the skew
symmetric tensor ψ× , a property that was not immediately apparent in the geometric
derivation of the tensor pursued in the previous section.
Furthermore, using the definition of the tensor exponential in terms of infinite
series of powers of ψ× , it is immediate to verify that
eψ× ψ = ψ.
(1.71)
This condition states that ψ is unaffected by the rotation, and hence vector ψ can be
interpreted as the rotation vector, i.e. that vector about which a rotates to go into b.
Although here we have arrived to the expression of the rotation tensor from a
different point of view than in the previous section, equations (1.70) and (1.33) must
clearly be identical:
R = eψ× =
∞
X
(ψ× )k
k=0
k!
=
2
X
k=0
Rk (ψ× )k .
(1.72)
14
THREE-DIMENSIONAL ROTATIONS
This is in fact the case, as it can be readily shown using property (1.46) of skew
symmetric tensors to eliminate powers of ψ× higher than two in the infinite series of
the exponential.
1.3.2.1 Virtual Variation and Angular Velocity It is possible to derive the
expression for the angular velocity, or the virtual rotation, using the same approach
that we used above, that is integrating the governing differential equations. To this
effect, take now a virtual variation of (1.66), that gives the following first order tensor
ordinary differential equation in the unknown tensor δRξ :
δR′ξ = ψ× δRξ + δψ× Rξ .
(1.73)
Since Rξ satisfies initial conditions at ξ = 0, equation (1.67), the corresponding
virtual variations must vanish:
δRξ=0 = 0.
(1.74)
These represent the initial conditions for the tensor ordinary differential equation.
Integrating now (1.73) subjected to (1.74), one finds
Z ξ
δRξ = eξψ×
e−ζψ× δψ× Rζ dζ,
= Rξ
Z
0
ξ
RTζ δψ× Rζ dζ.
(1.75)
0
Taking now a variation of the orthogonality condition (1.65), gives a second form of
the unknown tensor δRξ , which writes
δRξ = ψδ× Rξ ,
(1.76)
where ψδ is the virtual rotation. Eliminating δRξ between (1.76) and (1.75), the
following expression is found
Z ξ
ψδ× =
(Rζ δψ)× dζ,
(1.77)
0
which implies, by taking the axial of both sides of the equation,
Z ξ
ψδ =
Rζ dζ δψ.
(1.78)
0
The integral on the right hand side of this expression is readily computed using the
definition of the exponential of a tensor
Z ξ
Z ξX
∞
∞
X
(ζψ× )k
(ξψ× )k
Rζ dζ =
dζ = ξ
,
(1.79)
k!
(k + 1)!
0
0
k=0
k=0
Finally, evaluating this expression for ξ = 1 and inserting the result into (1.78), gives
ψδ in terms of the virtual variation of the rotation vector δψ,
ψδ = Sδψ,
(1.80)
RELATIONSHIP BETWEEN DIRECTION COSINE MATRIXAND ROTATION TENSOR
where
S=
∞
X
(ψ× )k
.
(k + 1)!
15
(1.81)
k=0
Equation (1.79) shows that tensor S can be interpreted as the integral of the rotation
tensor R, when this is expressed in terms of the rotation vector ψ, a property that was
not immediately apparent in the derivations of the previous section. Clearly, the new
expression of tensor S, equation (1.81), must be identical to the one given previously
in (1.47),
2
∞
X
X
(ψ× )k
=
Sk (ψ× )k ,
(1.82)
S=
(k + 1)!
k=0
k=0
as it is readily shown using here again property (1.46) to eliminate powers of ψ×
higher than two from the infinite series.
Replacing variations with time derivatives, the expression for the angular velocity
as a function of the time rate of change of the rotation vector is found by exactly the
same arguments:
ω = S ψ̇.
(1.83)
1.4 RELATIONSHIP BETWEEN DIRECTION COSINE MATRIX
AND ROTATION TENSOR
Up to this point, we have analyzed the transformation of components between two
triads and the rotation of one vector into another. The first problem has lead to the
definition of the direction cosine matrix, while the second has lead to the expression
of the rotation tensor in terms of the rotation vector. Since any triad can always
be seen as obtained by the rotation of another triad, these two seemingly different
concepts must be related. This is in fact the case, as it can be readily shown by a
simple argument.
Consider the orthonormal triads of unit vectors I = (i1 , i2 , i3 ), and rotate it to
bring it into triad J = (j1 , j2 , j3 ). Using (1.31), the rotation of the unit vectors is
expressed as
jk = R ik , k = 1, 2, 3.
(1.84)
This relationship can be expressed in terms of components measured in I:
jkI = RI iIk ,
k = 1, 2, 3.
(1.85)
Comparing now (1.85) with (1.9), leads to the conclusion that
[Λ] = RI ,
(1.86)
and hence the elements of the direction cosine matrix correspond to the components
of the rotation tensor measured in I.
16
THREE-DIMENSIONAL ROTATIONS
1.5 CHANGE OF BASIS
In practical applications, it is often necessary to express the components of vectors and
second order tensors in different systems of axes. For example, in flight mechanics
it is common to have the necessity of transferring quantities between inertial and
body axes, or between different sets of body axes. This is easily accomplished using
direction cosine matrices or, which is exactly the same as just shown, using the
components of rotation tensors.
j3
j2
i3
R
b
j1
i1
a
i2
Figure 1.5 Rotation of triad I = (i1 , i2 , i3 ) into triad J = (j1 , j2 , j3 ) by R, and of vector
a into b by the same rotation.
Consider again triads I and J , where the latter triad was obtained from the former
through a rotation ψ corresponding to a rotation tensor R. Consider further a vector
a, and rotate it by R to bring it into b:
b = R a,
(1.87)
as shown in figure 1.5. In components measured in I, this vector rotation is expressed
as
bI = RI aI .
(1.88)
Clearly, the components of a in I, aI , and of b in J , bJ , are identical,
aI = bJ ,
(1.89)
17
CHANGE OF BASIS
since both I and a underwent the same identical rotation R to bring them into J and
b, respectively. Consequently, inserting (1.89) into (1.88), one finds
bI = RI bJ .
(1.90)
This relationship expresses the transformation of the components of vector b changing
basis from J to I. Recalling the orthogonality of R, R−1 = RT , the transformation
of components from I to J writes
bJ = RIT bI .
(1.91)
Recalling now the unit eigenvalue property, R ψ = ψ, and setting b = ψ in
(1.91), one has
ψ J = RIT ψ I = ψ I ,
(1.92)
which expresses the fact that ψ has identical components in both systems of axes I
and J . This was expected, being ψ unaffected by the rotation. Since R is a sole
function of ψ, R = R(ψ), as shown by equations (1.33) and (1.70), it is concluded
that R also has identical components in both bases I and J :
RI = RJ .
(1.93)
Example 1.5.1 Consider the spinning aircraft depicted in figure 1.6. Frame FC,B
with origin in C and triad B = (b1 , b2 , b3 ) is rigidly attached to the vehicle and
moves with it, while the fixed inertial frame is FO,I , with origin in O and triad
I = (i1 , i2 , i3 ). The orientation of B with respect to I is characterized by a rotation
vector with components in I given by
ψ I = (0, θ, 0)T ,
θ = 30 deg.
If the components of the angular velocity ω of the vehicle in I are
ω I = Ω(0, sin γ, cos γ)T ,
Ω = 45 deg/sec,
γ = 15 deg,
what are the components of ω in B?
Solution. The components of the unit vectors bk , k = 1, 2, 3, in the I triad are
b1 = (cos θ, 0, − sin θ)T ,
b2 = (0, 1, 0)T ,
b3 = (sin θ, 0, cos θ)T .
Using equation (1.7), the direction cosine matrix is readily obtained as
RII→B

cos θ
0
=
− sin θ

0 sin θ
1
0 ,
0 cos θ
18
THREE-DIMENSIONAL ROTATIONS
w
b1
i1
q
i2 ,b2
O,C
q
b3
i3
Figure 1.6 Spinning aircraft. The fixed inertial frame is FO,I , with origin in O and triad
I = (i1 , i2 , i3 ). The body attached frame is FC,B , with origin in C and triad B = (b1 , b2 , b3 ).
where RI→B denotes the rotation that brings I into B. Using (1.91), the components
of ω in B are

 

cos θ 0 − sin θ
0
I
 0
1
0  Ω  sin γ  ,
ω B = RIT
I→B ω =
sin θ 0
cos θ
cos γ


− sin θ cos γ
.
= Ω
sin γ
cos θ cos γ
Denoting the components of ω in B as ω B = (p, q, r)T , the result is found as
p = −21.7333 deg/sec,
q = 11.6569 deg/sec,
r = 37.6432 deg/sec.
The rules of transformation of the components of tensors are derived next. Consider
a vector c that is rotated into d through a rotation characterized by the rotation tensor
T,
d = T c.
(1.94)
This vector rotation can be expressed in terms of components measured in I
or in J
dI = T I cI ,
(1.95)
dJ = T J cJ .
(1.96)
19
CHANGE OF BASIS
Using (1.91), the components of c and d in J are
cJ = RIT cI ,
dJ = RIT dI .
(1.97)
Inserting these expressions into (1.96) yields
RIT dI = T J RIT cI ,
(1.98)
and therefore, multiplying from the left by RI ,
dI = RI T J RIT cI = T I cI ,
(1.99)
T I = RI T J RIT .
(1.100)
that gives
This relationship expresses the transformation of the components of tensor T changing
basis from J to I. The transformation from components measured in I to components
expressed in J is readily obtained by recalling the orthogonality of R as
T J = RIT T I RI .
(1.101)
Example 1.5.2 With reference to the spinning aircraft of example 1.5.1, consider a
frame FR,R with origin at point R and triad R = (r1 , r2 , r3 ), that is rigidly attached
to the rudder. Triad R is parallel to triad B in the undeflected rudder position, and
the rudder hinge is parallel to r3 .
b1
i1
i2 ,b2
O,C
b3
i3
r1
R
r2
r3
Figure 1.7 Rudder attached frame FR,R , with origin in R and triad R = (r1 , r2 , r3 ).
20
THREE-DIMENSIONAL ROTATIONS
After the pitching rotation RI→B of example 1.5.1, the rudder of the aircraft
is deflected of an angle δr = −25 deg about its hinge r3 , as shown in figure 1.7.
Noting as T the rotation tensor corresponding to the rudder deflection, what are the
components of T in I?
Solution. The components of T measured in B are easily obtained as


cos δr − sin δr 0
cos δr 0  .
T B =  sin δr
0
0
1
Using (1.100), the components of T in I are computed as
T I = RII→B T B RIT
I→B ,




cos θ 0 sin θ
cos δr − sin δr 0
cos θ 0 − sin θ
0
1
0   sin δr
cos δr 0   0
1
0 ,
=
− sin θ 0 cos θ
0
0
1
sin θ 0
cos θ


2
2
cos θ cos δr + sin θ − cos θ sin δr sin θ cos θ(1 − cos δr )
,
cos θ sin δr
cos δr
− sin θ sin δr
=
2
2
sin θ cos θ(1 − cos δr )
sin θ sin δr
sin θ cos δr + cos θ


0.9297
0.3660 0.0406
0.9063 0.2113  .
=  −0.3660
0.0406 −0.2113 0.9766
Alternatively, we could also note that
r3I = bI3 = RII→B iI3 ,
where iI3 = (0, 0, 1)T . Hence, r3I is just the third column of matrix RII→B . Then,
the components of T in I are simply the components of the rotation tensor, equation
(1.33), computed from the rotation vector ψ = δr r3 , where the components of r3
are given above.
1.6 COMPOSITION OF ROTATIONS
We have previously anticipated that rotations do not commute and that rotations
vectors can not be added together. We have now the tools for illustrating these points.
Consider a rotation denoted by a rotation vector ψA = ϕA kA and rotation tensor
RA , that brings triad I = (i1 , i2 , i3 ) into triad J = (j1 , j2 , j3 ). This first rotation
is followed by a second rotation, characterized by a rotation vector ψB = ϕB kB and
rotation tensor RB , that brings J into K = (k1 , k2 , k3 ).
We have
jk = RA ik , kk = RB jk , k = 1, 2, 3,
(1.102)
and hence, eliminating the intermediate configuration J ,
kk = RB RA ik ,
k = 1, 2, 3.
(1.103)
COMPOSITION OF ROTATIONS
j3
21
k3
j2
i3
k2
RA
RB
k1
j1
i1
i2
Figure 1.8 Rotation of triad I into triad J , followed by rotation of J into K.
The total rotation from I to K is given by
R = RB RA .
(1.104)
This product of rotations tensors is called composition of rotations. This formula
can be used recursively to compose as many successive rotations as necessary. The
word “composition” used when combining rotations, stresses the fact that successive
rotations can not be obtained by simply adding their corresponding rotations vectors.
In fact, if ψ = ϕk is the rotation vector corresponding to the composed rotation R,
then
ψ 6= ψA + ψB .
(1.105)
This fact can be shown by a self-evident geometric example, as the one of figure 1.9
that considers successive rotations with orthogonal axes.
Expressing the composition of rotations (1.104) using the definition of the rotation
tensor, equation (1.33), it can be shown that the relationship between ψ = ϕk,
ψA = ϕA kA and ψB = ϕB kB is considerably more complicated than an addition,
and it is in fact as follows:
ϕ
ϕA
ϕB
ϕA
ϕB
cos = cos
cos
− sin
sin
kA · kB ,
(1.106)
2
2
2
2
2
ϕ
ϕA
ϕB
ϕA
ϕB
sin k = sin
cos
kA + cos
sin
kB
2
2
2
2
2
ϕA
ϕB
+ sin
sin
kB × kA .
(1.107)
2
2
Using the first equation one can compute the rotation angle ϕ, while the second
equation can be used to determine the rotation axis k.
22
THREE-DIMENSIONAL ROTATIONS
pkA
pkB
pkA+pkB
Figure 1.9 At left, rotation πkA , followed by rotation πkB , kB orthogonal to kA . At right,
rotation about π(kA + kB ).
Using again the definition of the rotation tensor, it is readily verified that
RB RA 6= RA RB ,
(1.108)
and hence rotations do not commute. Furthermore, we note that the order of the
matrix products that appear in the composition of successive rotations depends on the
bases in which the components of the various rotations tensors are measured. In fact,
the transformation from the I to the K triad, equation (1.103), can be expressed in
terms of components in the I, J or K bases:
kkI = RIB RIA iIk ,
(1.109)
kkJ
kkK
(1.110)
=
=
J J
RJ
B RA ik ,
K K
RK
B RA ik .
(1.111)
However, RB can, for example, be measured in the J triad rather than the I triad.
This is achieved using the transformation of tensor components, equation (1.100),
which gives
IT
RIB = RIA RJ
(1.112)
B RA .
Inserting this expression for RIB into (1.109), gives now
IT I I
I
J I
kkI = RIB RIA iIk = RIA RJ
B RA RA ik = RA RB ik .
(1.113)
Hence, we have found that
RI = RIB RIA = RIA RJ
B,
(1.114)
which shows that the order of multiplication of the tensor components indeed is
affected by the bases used for measuring them.
23
COMPOSITION OF ROTATIONS
b1
i1
i1
i2
i3 b3
i3
i2 ,b2
r2
r3
Figure 1.10 At left, rotation of triad R by T . At right, subsequent rotation by RI→B .
Example 1.6.1 With reference to example 1.5.2, the components of the rudder
triad R in I are obtained as
h i
[Λ]rudder = r1I r2I r3I = T I RII→B .
This corresponds to having first rotated the vehicle using RI→B , and then having
deflected the rudder using the rotation of components T I .
Now, try inverting the order of the composition of rotations, computing RII→B T I .
After rotation T , the aircraft is as in figure 1.10, at left, where we have left the lower
hinge point of the rudder fixed. After rotation RI→B , the aircraft is as in figure 1.10,
at right. Clearly, rotations do not commute!
Example 1.6.2 Consider again the spinning aircraft of example 1.5.1, and apply
now a rotation of B into B0 , obtained through a rotation vector
ψ B = (φ, 0, 0)T ,
φ = 25 deg.
What are the components of ω in B0 ?
Solution. The rotation from B to B0 can be expressed in components measured in
B as


1
0
0
 0 cos φ − sin φ  .
RB
B→B0 =
0 sin φ
cos φ
24
THREE-DIMENSIONAL ROTATIONS
Hence, using the change of basis rule, equation (1.91), and the composition of rotations rule, equation (1.113), we find
IT
I
ω B0 = RBT
B→B0 RI→B ω ,


 

1
0
0
cos θ 0 − sin θ
0
= 0
cos φ sin φ   0
1
0  Ω  sin γ  ,
0 − sin φ cos φ
sin θ 0
cos θ
cos γ


− sin θ cos γ
= Ω  cos φ sin γ + cos θ sin φ cos γ  ,
− sin φ sin γ + cos θ cos φ cos γ


−21.7333
=  26.4644  deg/sec.
29.1942
1.7 THE INVERSE PROBLEM
The term inverse problem indicates the process of obtaining the rotation vector ψ
based on the knowledge of the rotation tensor R. We use the following notation to
indicate this operation:
ψ = R−1 (R).
(1.115)
Recalling that the rotation tensor, equation (1.32), writes
R = I + sin ϕ k× + (1 − cos ϕ)k× k× ,
(1.116)
and that the rotation vector is ψ = ϕk, the procedure for computing ψ from R is as
follows:
1. Noting that trace(k× ) = 0, and that trace(k× k× ) = −2 when k is a unit
vector, we have
trace(R) = 1 + 2 cos ϕ.
(1.117)
Hence, the cosine of the rotation angle can be computed as
cos ϕ =
1
(trace(R) − 1).
2
(1.118)
2. Next, it is necessary to distinguish between the case cos ϕ > 0 and the case
cos ϕ ≤ 0:
(a) If cos ϕ > 0, we first compute
1
(R − RT ) = sin ϕ k× = z× .
2
(1.119)
THE INVERSE PROBLEM
25
The sine of the rotation angle is then readily obtained as the length of
vector z:
√
(1.120)
sin ϕ = z · z.
The angle of rotation follows immediately as
ϕ = atan2(sin ϕ, cos ϕ),
(1.121)
where atan2(·, ·) is the four-quadrant arc-tangent operation. Finally, the
rotation vector is obtained as
ψ=
ϕ
z.
sin ϕ
(1.122)
If ϕ is small, say ϕ < 0.01, the sine of the angle should be replaced
with its Taylor series expansion at the origin, which yields the following
alternative expression for ψ:
ψ=
1
z.
1 2
1 2
1− ϕ 1−
ϕ
6
20
(1.123)
(b) If on the other hand cos ϕ ≤ 0, we begin by computing
1
1
R + RT − cos ϕ I =
1 − cos ϕ 2
I + k× k× = kkT . (1.124)
Next, vector k is extracted from kkT noticing that
h
i
kkT = k1 kk2 kk3 k .
(1.125)
This is best accomplished by selecting the largest component of k, i.e.
ki2max = max diag kkT , imax = 1, 2 or 3,
(1.126)
k=
1
colimax kkT ,
kimax
(1.127)
where coli (·) extracts the ith column from a matrix. Noticing then that
trace(k× k× k× ) = 0, we compute the sine of the rotation angle as
−
1
trace(k× R) =
2
1
− trace k× + sin ϕk× k× + (1 − cos ϕ)k× k× k× =
2
sin ϕ, (1.128)
26
THREE-DIMENSIONAL ROTATIONS
and obtain the rotation angle from sin ϕ and cos ϕ as in the previous case:
ϕ = atan2(sin ϕ, cos ϕ).
(1.129)
Finally, the rotation vector is computed as
ψ = ϕ k.
(1.130)
Example 1.7.1 With reference to example 1.6.2, compute the rotation vector ψ0
that corresponds to the rotation R0 from I to B0 .
Solution. The components of R0 in I are

cos θ sin θ sin φ

0
cos φ
=
RI0 = RII→B RB
B→B0
− sin θ cos θ sin φ

sin θ cos φ
− sin φ  .
cos θ cos φ
Inserting the values θ = 30 deg, φ = 25 deg, and applying the procedure just
described, we obtain
ψ0I = ψ0B = (0.4263, 0.5152, −0.1142)T ,
and ϕ0 = |ψ0 | = 38.8666 deg. Note that the components of ψ0 do not correspond
to the angles of the two successive rotations I → B and B → B0 !
1.8 PARAMETERIZATION OF ROTATIONS
In the previous sections, the rotation tensor was derived in terms of the rotation
vector ψ. The three components of this vector were used to parameterize the rotation,
according to Euler’s Rotation Theorem. However, rotations can be expressed in terms
of parameters other than the rotation vector. The choice of a parameterization is
usually made by considering the characteristics of a specific application, for example
for avoiding singularities or for reducing the computational cost of certain operations.
More often than not, the choice is also based on personal taste. Two main families of
parameterizations exist: vectorial and non-vectorial. In this section, we shall illustrate
the main features of both families.
However, before studying the possible forms of parameterizations, it should be
mentioned that one could also avoid the use of parameterizations altogether, and work
directly with the components of the direction cosine matrix. Using this approach, the
components of [Λ] play the role of nine parameters that obey the ordinary differential
matrix equation (1.21), here reported for convenience,
˙ = ω I [Λ].
[Λ]
×
(1.131)
These nine parameters are subjected to the orthogonality constraints
[Λ][Λ]T = [I].
(1.132)
PARAMETERIZATION OF ROTATIONS
27
Notice that, due to the symmetry of (1.132), only six of these constraint conditions
are independent. Taking the upper triangle of this matrix equation, the independent
constraints write
3
X
Λkn Λln = δkl ,
k = (1, 3),
l = (k, 3),
(1.133)
n=1
leaving a total of three degrees of freedom, in accordance with Euler’s Theorem of
Rotations.
The increase in the number of unknowns and equations, together with the need of
introducing Lagrange multipliers to enforce the satisfaction of the constraints (1.133),
makes this approach not commonly used in practical applications. On the other hand,
a possible advantage of this method is that it is free from singularities for arbitrarily
large rotations, while methods based on a minimal set of parameters have only a finite
range of validity, as we have already seen for the rotation vector and as it will be
illustrated in the following for other parameterizations.
Let us start then by considering the case of vectorial parameterizations.
1.8.1
Vectorial Parameterizations
Vectorial descriptions of rotations use as parameters the components of vectors that
are parallel to the rotation vector. The general form of such vectors is
p = f k,
(1.134)
where p is termed the generalized rotation vector [2, 3], f = f (ϕ) is some yet
unspecified function of the angle of rotation ϕ, termed generating function, and k is
the axis of rotation. A part for an obvious requirement on regularity, the generating
function f must obey certain conditions. First, we must have
f (0) = 0,
(1.135)
which means that the magnitude of the generalized rotation vector must be null for a
null rotation angle ϕ. This ensures that if b = Ra and ϕ = 0, then b = a. Taking
now the time derivative of p in the origin
ṗ(0) = f,ϕ (0)ϕ̇k + f (0)k̇,
(1.136)
we recognize that the generating function f must be such that
f,ϕ (0) 6= 0,
(1.137)
in order for ṗ(0) to be different from zero when ϕ̇is different from zero. The following
notation was used to indicate derivatives with respect to ϕ, (·),ϕ = d · /dϕ. Some
common parameterizations are characterized by having f,ϕ (0) = 1 which, although
not necessary, ensures that the behavior of the vectorial parameters matches the one
of the rotation vector in the limiting case of vanishing rotation, i.e.
lim p = lim ψ.
ϕ→0
ϕ→0
(1.138)
28
THREE-DIMENSIONAL ROTATIONS
In fact, expanding in Taylor series at the origin, we have
f = f (0) + f,ϕ (0)ϕ +
1
f,ϕϕ (0)ϕ2 + . . . ,
2!
(1.139)
whose leading term is ϕ if f,ϕ (0) = 1.
Recalling the expression for the rotation vector, ψ = ϕk, the relationship between
p and ψ is readily found as
f
(1.140)
p = ψ.
ϕ
Having established the expressions of the rotation and angular velocity tensors in
terms of ψ, it is now a simple matter to derive the corresponding expressions in terms
of p using (1.140). Starting with the rotation tensor, equation (1.33), we get
R=
2
X
Rkp (p× )k ,
(1.141)
k=0
where
R0p = 1,
R1p =
sin ϕ
,
f
R2p =
1 − cos ϕ
.
f2
(1.142)
It is readily verified that, thanks to condition (1.137), the limits of R1p and R2p for
ϕ → 0 are well defined.
To express the angular velocity ω in terms of the generalized rotation vector p and
its time rates ṗ, one can proceed as follows. First, note that
ψ̇ · kk = ϕ̇k = (I + k× k× )ψ̇,
and hence
ψ̇ =
ϕ̇
1
ψ − 2 ψ× ψ× ψ̇.
ϕ
ϕ
(1.143)
(1.144)
Inserting into the expression of the angular velocity, equation (1.47), we get
ω=
2
X
k=0
Sk (ψ× )k ψ̇ =
1 ϕ̇
ψ + S1 ψ× ψ̇ + S2 − 2 ψ× ψ× ψ̇.
ϕ
ϕ
(1.145)
Next, we seek coefficients Skp , k = 0, 1, 2, such that
p
ω = S ṗ =
2
X
Skp (p× )k ṗ.
(1.146)
k=0
To determine these coefficients, take the time derivative of p
ṗ =
f˙ϕ − f ϕ̇
f
ψ + ψ̇,
ϕ2
ϕ
(1.147)
PARAMETERIZATION OF ROTATIONS
29
replace into (1.146) and, using (1.144), write
ω = S0p
f2
f˙
f ψ + S1p ψ× ψ̇ + 3 S2p f 2 − S0p ψ× ψ× ψ̇.
ϕ
ϕ
ϕ
(1.148)
Matching now the various terms in (1.145) and (1.148), we get
S0p =
1
,
f,ϕ
S1p = R2p =
1 − cos ϕ
,
f2
S2p =
1 1
sin ϕ −
.
f 2 f,ϕ
f
(1.149)
Here again it is readily verified that the limits of Skp , k = 0, 1, 2, are all well defined
for ϕ → 0, based on the sole condition f,ϕ (0) 6= 0. The determinant of S p is
det(S p ) =
2(1 − cos ϕ)
.
f 2 f,ϕ
(1.150)
The inverse of S p is easily computed as
S
p−1
=
2
X
Ŝkp (p× )k ,
(1.151)
k=0
whose coefficients are
Ŝ0p
= f,ϕ ,
Ŝ1p
1
=− ,
2
Ŝ2p
1
= 3
f f,ϕ
1
sin ϕ
−
2
f f,ϕ
det(S p )
.
(1.152)
The range of validity in terms of magnitude of the rotation angle ϕ for each specific
choice of the generating function f can be determined by verifying the following
conditions:
• f 6= ∞ in equation (1.134);
• Rkp 6= ∞, k = 1, 2, in the coefficient expressions (1.142);
• Skp 6= ∞, k = 0, 1, 2, in the coefficient expressions (1.149);
• Skp 6= 0, k = 0, 1, in equation (1.150).
Table 1.1 Commonly used vectorial parameterizations of three-dimensional rotations.
Name
Finite rotation vector, or exponential map or
natural parameters
Linear parameters
Euler-Rodrigues, or reduced Euler parameters
Cayley-Gibbs-Rodrigues parameters
Wiener-Milenkovich, or conformal rotation
f
Range
ϕ
−2π < ϕ < 2π
sin ϕ
2 sin(ϕ/2)
2 tan(ϕ/2)
4 tan(ϕ/4)
−π < ϕ < π
−π < ϕ < π
−π < ϕ < π
−2π < ϕ < 2π
30
THREE-DIMENSIONAL ROTATIONS
The choices for the generating function f that are well established in the literature
are given in table 1.1. Other choices are possible, such as for example
f = k sin
ϕ
,
k
k = (1, ∞),
(1.153)
or
ϕ
, k = (1, ∞).
(1.154)
k
In any case, the maximum range that is achievable by a generalized rotation vector of
the form (1.134) is always limited between −2π and 2π at the most. This means that
no vectorial parameterization, or more in general, no parameterization based on only
three parameters, can be global, i.e. well defined for any value of the rotation angle.
f = k tan
Example 1.8.1 With reference to the spinning aircraft of example 1.6.2, consider
that the vehicle angular velocity ω has a processing motions about i3 with angular
velocity µ = −270 deg/sec, and that at t = 0, ω has the value given in example 1.5.1,
i.e.
ω I (0) = ω0I = Ω(0, sin γ, cos γ)T ,
Ω = 45 deg/sec,
γ = 15 deg.
Compute the orientation of the aircraft in terms of the components of its rotation
tensor in the fixed I basis for t ∈ [0, T ], T = 20 sec, using the Euler-Rodrigues
rotation parameters. At time t = 0, the orientation of the aircraft is given by triad B0
as computed in example 1.6.2.
Solution. The components of the Euler-Rodrigues rotation vector in I can be
computed integrating the ordinary differential equations
ṗI = S pI
−1
ωI ,
for t ∈ [0, T ]. The components of the vehicle angular velocity are computed as
ω I = RIt ω0I ,
where Rt is the rotation tensor that corresponds to the precession rotation vector ψt
evaluated at the generic time instant t,
ψt = µti3 .
−1
The coefficients of S p for the Euler-Rodrigues parameterization are found by setting
f = 2 sin(ϕ/2), f,ϕ = cos(ϕ/2) in (1.151), which gives
Ŝ0p
ϕ
= cos =
2
r
1−
1
p · p,
4
1
Ŝ1p = − ,
2
−1
Notice the particularly simple expression of S p
the p× p× term.
Ŝ2p = 0.
in this case, due to the absence of
PARAMETERIZATION OF ROTATIONS
31
Due to the finite range of vectorial parameterizations, which is in particular −π <
ϕ < π in the case of the Euler-Rodrigues parameters, we use an incremental approach.
To illustrate the procedure, consider a partition of the time range
0 ≡ t0 < t1 < t2 < . . . < tn−1 < tn ≡ T,
composed of n ≥ 1 intervals T i = [ti , ti+1 ] of size hi = ti+1 − ti , i = (0, n− 1). On
each interval, the ordinary differential problem is solved with null initial conditions
using a numerical method. In this example we have used the variable order explicit
Runge-Kutta scheme implemented in the odeset Matlab [1] routines. The solution
at the end of the generic ith interval, time ti+1 , is labelled pIincr,i+1 . This solution
represents the incremental rotation from time ti to time ti+1 . By selecting the size
hi of the increments, the incremental rotation can be made suitably small and hence
within the parameterization range. In particular one could choose hi to coincide
with the time step size used by the time integration scheme, which will be small
for accuracy and/or stability requirements. For this example, we have simply set
hi = h = 1 sec, which ensures incremental rotations of about 150 deg, and hence
within the validity range.
Next, the total rotation from t0 is updated using the composition of rotations,
equation (1.104), which in this case writes in terms of components in the fixed basis
RIi+1 = RIincr,i+1 RIi ,
where RIincr,i+1 are the components of the incremental rotation tensor that corresponds
to pIincr,i+1 . Using the Euler-Rodrigues parameters, this incremental rotation tensor
is computed in terms of the coefficients Rkp of equation (1.141), which are
R0p = 1,
R1p = cos
ϕ
,
2
R2p =
1
.
2
The initial rotation tensor at time t = 0, R0 , is set equal to the value of example 1.7.1,
which corresponds to the rotation from triad I to triad B0 .
From each rotation tensor Ri , the corresponding rotation vector ψi can be computed using the inverse problem:
ψi = R−1 (Ri ).
The resulting components ψiI of the total rotation vector measured from I are plotted
versus time in figure 1.11. Notice the switching of the rotation vector components
due to the solution of the inverse problem, every time the total rotation magnitude
goes past the value of π.
32
THREE-DIMENSIONAL ROTATIONS
3
2
ψI [rad]
1
0
−1
−2
−3
0
2
4
6
8
10
12
14
16
18
20
Time [sec]
Figure 1.11 Time history plot of the components of the total rotation vector from I, measured in I, ψ I .
1.8.2
Non-Vectorial Parameterizations
1.8.2.1 Euler Parameters or Quaternions Euler parameters or quaternions
are redundant parameters defined as
q0 = cos
ϕ
,
2
q = sin
ϕ
k,
2
(1.155)
where q0 is the scalar component of the quaternion,while q is the vectorial component.
The vectorial component q can be regarded as a special case of the generalized
vectorial parameterization discussed in the previous section, with generating function
f = sin ϕ/2. The scalar and vector components are related by a constraint:
q02 + q · q = 1.
(1.156)
A quaternion that satisfies this constraint is called a unit quaternion and can be used
for the parameterization of rotations.
The complication of working with four parameters and a constraint equation, instead of three free parameters as with the vectorial parameterizations discussed above,
can be offset in certain applications by the fact that this parameterization is singularity
free, in the sense that it is well defined for −∞ < ϕ < ∞.
It is customary to use a four-dimensional notation when working with quaternions,
since this allows for a compact expression of most relations. In particular, the following four-dimensional array is defined by stacking the scalar and vector components
of the quaternion:
q̄ = (q0 , q T )T .
(1.157)
PARAMETERIZATION OF ROTATIONS
33
The unit quaternion condition becomes in this case
q̄ T q̄ = 1.
(1.158)
The developments of the generalized vectorial parameterization discussed in the
previous section can be readily used for the case of the Euler parameters. The coefficients R1p , R2p of the rotation tensor, equation (1.141), are found by simply setting
f = sin ϕ/2 into (1.142), obtaining
R1p = 2q0 ,
R2p = 2,
(1.159)
so that the rotation tensor has the following simple form
R = I + 2qo q× + 2q× q× .
(1.160)
The four-dimensional rotation operator associated with the rotation tensor is defined
as
1 0T
R̄ =
.
(1.161)
0 R
Notice that here again
R̄q̄ = q̄,
(1.162)
which shows that q̄ is the (normalized to one) eigenvalue of R̄ that corresponds to the
unitary eigenvalue, in close analogy with the generalized vectorial parameterizations.
Similarly, the coefficients Skp , k = 0, 1, 2, of the angular velocity tensor, equation
(1.146), are
2
2
(1.163)
S0p = , S1p = 2, S2p = ,
q0
q0
so that the angular velocity can be written as
ω=
2
2
+ 2q× +
q× q× q̇.
q0
q0
(1.164)
This expression can be given a more convenient form. To this purpose, note that
q̇ · kk = (I + k× k× )q̇,
(1.165)
and, differentiating the unit quaternion constraint, equation (1.156), that
q̇ · q = −q̇0 q0 .
(1.166)
q× q× q̇ = −q̇0 q0 q − (1 − q0 )q̇.
(1.167)
Inserting into (1.165), we get
Substituting into (1.164), we find
ω = 2 q0 q̇ − q q̇0 + q× q̇ .
(1.168)
34
THREE-DIMENSIONAL ROTATIONS
Next, a scalar angular velocity is defined as the time derivative of the unit quaternion
constraint:
ω0 = 2 q0 q̇0 + q · q̇ .
(1.169)
This quantity is clearly zero for a unit quaternion. Using even in this case a fourdimensional notation, the scalar and vectorial parts of the angular velocity are stacked
in a single array:
ω̄ = (ω0 , ω T )T .
(1.170)
This way equations (1.168) and (1.169) can be written in compact form as
˙
ω̄ = S̄ q̄,
(1.171)
which closely resembles the analogous expression of the angular velocity found for
the vectorial parameterizations, and where matrix S̄ is defined as
q0
qT
S̄ = 2
.
(1.172)
−q q0 I + q×
Note that for a unit quaternion, we have
det(S̄) = 16,
(1.173)
so that the inverse transformation q̄˙ = S̄ −1 ω̄ is singularity free. Furthermore, we
have
S̄ S̄ T = S̄ TS̄ = 4I,
(1.174)
and therefore the inverse of S̄ is readily computed as
1 q0
−q T
−1
S̄ =
.
q q0 I − q×
2
(1.175)
Noting that f , R̄, S̄ and S̄ −1 are well defined for all values of ϕ, we conclude that
the Euler parameterization is singularity free for −∞ < ϕ < ∞. For this reason, it
is termed a global parameterization.
The inverse problem for quaternions amounts to computing the quaternion q̄ given
the rotation vector R:
q̄ = Rq−1 (R).
(1.176)
The problem can be solved by noticing that
q02 =
1
trace(R) + 1 ,
4
(1.177)
1
axial(R).
2
(1.178)
and
q0 q =
Furthermore, we also note that
1
qq T =
1 − trace(R) I + R + RT .
4
(1.179)
PARAMETERIZATION OF ROTATIONS
Hence, in order to derive q̄ from R, one can first compute the matrix
1 trace(R) + 1
2 axial(R)T
= q̄ q̄ T ,
2 axial(R)
(1 − trace R)I + R + RT
4
35
(1.180)
and then extract q̄ from q̄ q̄ T as
qi2max = max(diag(q̄ q̄ T )),
q̄ =
1
qimax
imax = 1, 2, 3 or 4,
colimax q̄ q̄ T .
(1.181)
(1.182)
1.8.2.2 Euler Angles Finite rotations can be described through a sequence of
three planar rotations about three different axes. This is yet another consequence of
Euler’s Theorem of Rotations. In this case, the angles of the three planar rotations
will play the role of the rotation parameters.
To describe the Euler angles, let us start by defining a planar rotation. Let us consider a rotation ψ = ϕk, that brings triad I = (i1 , i2 , i3 ) into triad J = (j1 , j2 , j3 ),
jk = Rik ,
k = 1, 2, 3,
(1.183)
or, in components expressed in I
jkI = RI iIk ,
k = 1, 2, 3.
(1.184)
If k = il , l = 1, 2 or 3, which means that the rotation vector is parallel to one of the
unit base vectors of I, than R is a planar rotation with respect to I. The components
in I of the three possible planar rotations are, as shown in figure 1.12,


1
0
0
RI1 =  0 cos ϕ1 − sin ϕ1  ,
(1.185)
0 sin ϕ1
cos ϕ1


cos ϕ2 0 sin ϕ2
,
0
1
0
RI2 = 
(1.186)
− sin ϕ2 0 cos ϕ2
and

cos ϕ3
RI3 =  sin ϕ3
0
− sin ϕ3
cos ϕ3
0

0
0 .
1
(1.187)
Let us now consider three successive planar rotations:
A. Rotation RA is characterized by a rotation vector ψA = ϕA iA , A = 1, 2 or
3, and brings triad I = (i1 , i2 , i3 ) into triad J = (j1 , j2 , j3 ), jk = RA ik ,
k = 1, 2, 3.
B. Rotation RB is characterized by a rotation vector ψB = ϕB jB , B = 1, 2
or 3, B 6= A, and brings triad J into triad K = (k1 , k2 , k3 ), kk = RB jk ,
k = 1, 2, 3.
36
THREE-DIMENSIONAL ROTATIONS
j3
i3
i3
j2
j3
i2
j1
j2
j3
j1
i2
i1
i
j1
j2 1
Figure 1.12 The three possible planar rotations about i1 (left), i2 (center), and i3 (right).
C. Finally, rotation RC is characterized by a rotation vector ψC = ϕC kC , C =
1, 2 or 3, C 6= B, and brings triad K into triad L = (l1 , l2 , l3 ), lk = RC kk ,
k = 1, 2, 3.
In order to avoid ambiguities, the range of the various rotations is customarily limited
between −π and π, and hence −π ≤ ϕA , ϕB , ϕC ≤ π, unless this condition leads to
crossing a singular point in the parameterization. We shall come back to this problem
shortly.
The total rotation from I to L can be expressed by eliminating the intermediate
configurations as
lk = RABC ik , k = 1, 2, 3,
(1.188)
with
RABC = RC RB RA .
(1.189)
Expressed in I, the components of the total rotation tensor are
RIABC = RIC RIB RIA .
(1.190)
Recalling the transformation of components of a tensor due to a change of basis,
equation (1.100), we have
IT
RIB = RIA RJ
B RA ,
J
K JT
RJ
C = RB RC RB ,
IT
RIC = RIA RJ
C RA .
(1.191)
Inserting in (1.190), we obtain the following composed rotation
K
RIABC = RIA RJ
B RC .
(1.192)
All three matrices on the right hand side of this expression represent the components
of a planar rotation. The angles ϕA , ϕB and ϕC are called the Euler angles, and the
sequence ABC is called the Euler sequence. Since the possible rotations are
A, B, C = 1, 2 or 3,
A 6= B,
B 6= C,
(1.193)
there are twelve possible Euler sequences and twelve associated triples of Euler angles.
PARAMETERIZATION OF ROTATIONS
37
In order to compute the components of the angular velocity vector in terms of the
Euler angles, we differentiate (1.192) with respect to time, to yield
K
I
J
K
I
J
K
ṘIABC = ṘIA RJ
B RC + RA ṘB RC + RA RB ṘC .
(1.194)
Next, using the orthogonality of the rotation tensors, we introduce the angular velocities of the planar rotations:
I
I
ṘIA = ωJ
/I × RA ,
J
J
ṘJ
B = ωK/J × RB ,
K
K
ṘK
C = ωL/K × RC ,
(1.195)
where we recall that the notation ωP/Q indicates the angular velocity of triad P with
respect to triad Q. Inserting into (1.194) and multiplying from the right by RIT
ABC
we have
I
J K
I
I J
(1.196)
ṘIABC RIT
ABC = ωJ /I × + RA ωK/J × + RA RB ωL/K × .
Introducing the angular velocity ωL/I of triad L with respect to triad I,
ṘABC RTABC = ωL/I × ,
(1.197)
we can compute its expression as a function of the angular velocities of the single
planar rotations:
I
I
I J
I
J K
ωL/I
= ωJ
/I + RA ωK/J + RA RB ωL/K .
(1.198)
Notice that ωL/I is an intrinsic property of the motion of triad L with respect to
triad I, and hence does not depend on the Euler sequence, and this is reflected in the
notation.
In the mechanics of flight, the most commonly used sequence is ABC = 321.
The corresponding angles are indicated as ϕ3 = ψ, termed heading, ϕ2 = θ, termed
pitch, and ϕ1 = φ, termed bank. The 321 Euler sequence is illustrated in figure 1.13.
Using (1.192), the components of the rotation tensor for this sequence are readily
computed as
K
RI321 = RI3 (ψ)RJ
2 (θ)R1 (φ),


cψcθ cψsθsφ − sψcφ cψsθcφ + sψsφ
=  sψcθ sψsθsφ + cψcφ sψsθ cφ − cψsφ ,
−sθ
cθsφ
cθcφ
(1.199)
where here s(·) = sin(·) and c(·) = cos(·).
The components of the angular velocity in the I triad for the 321 sequence are,
using (1.198),
I
I
I
J
I
J
K
ωL/I
= ωJ
/I + R3 (ψ)ωK/J + R3 (ψ)R2 (θ)ωL/K ,
(1.200)
J
ωK/J
= (0, θ̇, 0)T ,
(1.201)
where
I
T
ωJ
/I = (0, 0, ψ̇) ,
K
ωL/K
= (φ̇, 0, 0)T .
38
THREE-DIMENSIONAL ROTATIONS
i1 j 1
i2
i1
R3(y)
i3
k1 l1
k1
i2
y
k2 j
2
f
l2
l3
k3
R2(q)
i3 j3
j1
k2
R1(f)
j2
q
k3
j3
Figure 1.13 Euler sequence 321: triad I is rotated by R3 (ψ) into J ; J is rotated by R2 (θ)
into K; finally, K is rotated by R1 (φ) into L.
This gives
I
I
ωL/I
= S321
ė321 ,
(1.202)
where e321 = (φ, θ, ψ)T is a column vector made with the three Euler angles, and
I
S321
= I + RI3 (ψ)(I + RJ
2 (θ)),


cos ψ cos θ − sin ψ 0
cos ψ 0  .
=  sin ψ cos θ
− sin θ
0
1
(1.203)
The components of the angular velocity in the L triad are defined as
L
ωL/I
= (p, q, r)T ,
(1.204)
PARAMETERIZATION OF ROTATIONS
39
and are readily obtained as
L
I
L
ωL/I
= RIT
321 ωL/I = S321 ė321 ,
(1.205)
where
L
I
S321
= RIT
321 S321 ,


1
0
− sin θ
cos φ cos θ sin φ  .
= 0
0 − sin φ cos θ cos φ
(1.206)
The inverse relationship gives the time rates of the 321 Euler sequence angles as a
function of the angular velocity components in the rotated triad L, a problem often
encountered in the applications, and writes
−1
L
L
ė321 = S321
ωL/I
,
where
−1
L
S321
Notice that

1 tan θ sin φ
cos φ
= 0
0 sec θ sin φ

tan θ cos φ
− sin φ  .
sec θ cos φ
I
L
det(S321
) = det(S321
) = cos θ.
(1.207)
(1.208)
(1.209)
Hence, the Euler sequence 321 is singular for
k
π,
2
θ=
k = (1, ∞).
(1.210)
To avoid crossing a singular point in the parameterization, the pitch angle θ of the
321 sequence is customarily limited within the range −π/2 ≤ θ ≤ π/2, while
the other two angles have the usual ranges −π ≤ φ ≤ π, and −π ≤ ψ ≤ π.
Since the pitch angle experienced in the flight envelope of most typical airplanes is
usually limited, the sequence 321 is often the most convenient for flight mechanics
applications. However, it should be stressed that each Euler sequence has its own
range of validity, and this justifies the fact that different Euler sequences are used for
different applications.
The inverse problem for the Euler sequence 321,
e321 = Re−1 (RI321 ),
(1.211)
is easily solved using equation (1.199). Setting for convenience RI321 = [Rkl ],
k, l = 1, 2, 3, one first computes
θ = asin R31 .
(1.212)
Then the bank angle is obtained as
φ = asin
R32
,
cos θ
(1.213)
40
THREE-DIMENSIONAL ROTATIONS
and finally the heading is computed as
ψ = asin
R21
.
cos θ
(1.214)
Example 1.8.2 Solve example 1.8.1 using the Euler angles corresponding to the
321 sequence.
Solution. The problem is solved by integrating the ordinary differential equations
−1
I
ė321 = S321
ωI ,
starting from the initial conditions at t = 0 as given in examples 1.5.1 and 1.6.2:
e3210 = (25, 30, 0)T deg.
The time history of the angles are given in figure 1.14. The heading angle ψ was
divided by a factor of 10 in the plot, since it is substantially larger than the other two
due to the predominant spinning motion of the aircraft. The values of the Euler angles
at t = T are
e321T = (29.7012, 30.8612, 876.0238)T deg.
The corresponding rotation tensor components in I are computed using (1.199) as


−0.7843 −0.5852 −0.2058
0.6338  .
RII→T =  0.3488 −0.6904
−0.5130
0.4253
0.7456
90
80
Euler angles 321: φ,θ,ψ/10 [deg]
70
60
50
40
30
20
10
0
0
2
4
6
8
10
12
14
16
18
20
Time [sec]
Figure 1.14 Time history plot of the Euler angles corresponding to the sequence 321.
PROBLEMS
41
Alternatively, one could start from null initial conditions at time t = 0,
e3210 = (0, 0, 0)T deg,
finding the following values of the Euler angles at time t = T :
e321T = (4.0349, 0.9440, 873.6749)T deg.
Using these values into (1.199) gives the components of the rotation tensor that brings
B0 into the body attached triad in the final configuration, RI0→T . Combining this
rotation with the one that brings I into B0 , matrix RI0 of example 1.6.2, we have
RII→T = RI0→T RI0 ,
which clearly yields the same values as given above starting from non-null initial
conditions.
1.9 PROBLEMS
1.1 Consider the composition of rotations expressed by equations (1.106) and (1.107).
Which one of the classical vectorial parameterizations of table 1.1 will lead to the
simplest formula for the composed rotation?
1.2 Find a vectorial parameterization such that tensor S has no term in p× p× , i.e.
S2p = 0 in (1.149).
1.3 Consider a launcher whose body attached triad has the unit vector b1 along the
main axis of the vehicle. Since the launcher will operate for values of the pitch angle
θ in close proximity of the value π/2, the Euler sequence 321 is not a convenient
choice in this case. Derive a more convenient Euler sequence for this problem.
1.4 Compute the singular points for the Euler sequence 323.
1.5 Solve example 1.8.1 using the finite rotation vector. From your results, compute
the corresponding Euler angles 321.
1.6 Prove the following property between tensors R and S expressed in terms of
the rotation vector (equations (1.33), (1.47), (1.54)): R = SS −T = S −TS.
1.7 With reference to problem 1.6, is there an analogous property between tensors
R and S p expressed in terms of the generalized vectorial parameters p?
REFERENCES
1. MATLAB, Product Documentation, The MathWorks, Inc., 3 Apple Hill Drive,
Natick, MA.
42
THREE-DIMENSIONAL ROTATIONS
2. O.A. Bauchau, C.L. Bottasso, “On the Design of Energy Preserving and Decaying
Schemes for Flexible, Nonlinear Multibody Systems,” Computer Methods in
Applied Mechanics and Engineering, 169, 61–79 (1999).
3. O.A. Bauchau, L. Trainelli, “The Vectorial Parameterization of Rotation,” Nonlinear Dynamics, 32, 71–92 (2003).
4. H. Goldstein, Classical Mechanics, 2nd ed., Addison-Wesley, Reading, MA,
1980.
5. J. Stuelpnagel, “On the Parameterization of the Three-Dimensional Rotation
Group,” SIAM Review, 6, 422–430 (1964).