Euler Angles

The triplet of Euler angles (α, β, γ) is useful to describe rotations or
relative orientations of orthogonal coordinate systems. Unfortunately, their definition is not unique
and in the literature there are as many different conventions as authors. The convention employed here
is one of the more common ones [1]. All rotations are in a counter-clockwise
fashion (right-handed,
mathematically positive sense).

Another account detailing some of the "pleasures" of dealing with Euler angles is provided by David Drascic, including
some code snippets from Graphics Gems.

The Euler angles (α, β, γ) relate two orthogonal coordinate
systems having a common origin. The transition from one coordinate system to the other is achieved by
a series of two-dimensional rotations. The rotations are performed about coordinate system axes
generated by the previous rotation step (the step-by-step procedure is illustrated in the
topic Rotation Matrices). The convention used here is that
α is a rotation about the Z axis of the initial coordinate
system. About the y' axis of this newly generated coordinate system a rotation by β
is performed, followed by a rotation by γ about the new z axis.

Given the Euler angles, the step-by-step procedure illustrates how to move from one
coordinate system to the other. However, given the two coordinate systems, how can we
determine the Euler angles relating them? This is described in the topic Determining Euler
Angles.

The usual ranges for α, β, γ are:

0 <= α <= 360

0 <= β <= 180

0 <= γ <= 360

Rotation Matrices

Rotations or transformations from one coordinate system into another are conveniently
described by the triplet of Euler angles. Using the Euler angles, this three-dimensional
problem can be dissected into a sequence of two-dimensional rotations, whereby
in each rotation one axis remains invariant.

2D Analogy:

In order to simplify the problem, let us start with a two-dimensional rotation:

Suppose the coordinates, (x,y), of a point in the two-dimensional XY system are known,
but we are actually interested in knowing the coordinates of this point in another coordinate
system, X'Y', which is related to the XY system by a counter-clockwise rotation by an angle
φ.

As the figure indicates, the coordinates of the given point in the new coordinate system will
be:

x' = x cos φ + y sin φ

y' = -x sin φ + y cos φ

or, in matrix notation:

(Problems seeing how those transformations are obtained? Have a look at my page on
rotations.)

Start: Coincidence

Now, transferred to a three-dimensional problem, the goal will be to describe
the coordinates in a final rotated system (x,y,z) which is related to some initial coordinate
system (X,Y,Z) by the Euler angles. The final system is developed in three steps, each step
involving a rotation described by one Euler angle. At the start, both coordinate systems,
(X,Y,Z) and (x(1), y(1), z(1)), shall be coincident.

1st Rotation

The first rotation involves the Euler angle α. The x(1), y(1), z(1)
axis system is rotated about the Z axis through an angle α
counterclockwise relative to X,Y,Z to give the new system x(2), y(2), z(2). It is clear from the
figure that this rotation mixes the coordinates along X and Y, completely analogous to the
two-dimensional rotation described above, while the coordinate along Z remains unaffected.
The rotation matrix to describe this operation is given by:

2nd Rotation

The second rotation involves the Euler angle β. The x(2), y(2), z(2)
axis system is rotated about the y(2) axis through an angle β
counterclockwise to generate the new coordinate system x(3), y(3), z(3). Analogous to the first
Euler rotation, this mixes the coordinates along x(2) and z(2), while the coordinate along y(2)
remains unaffected. This operation also generates a line of nodes parallel to the direction
of y(2). The rotation matrix to describe this operation is given by:

3rd Rotation

The last rotation involves the Euler angle γ. The x(3), y(3), z(3)
axis system is rotated about the z(3) axis through an angle γ
counterclockwise to generate the final coordinate system x, y, z. Analogous to the first Euler
rotation, this mixes the coordinates along x(3) and y(3), while the coordinate along z(3) remains
unaffected. The rotation matrix to describe this operation is given by:

The combined effect of these three rotations is given by this transformation matrix:

Determining Euler Angles

Given the relative orientations of two coordinate systems, how do we go about determining
the Euler angles relating them?

First, we need to decide which coordinate system to take as the reference coordinate
system, X,Y,Z, and which one as derived coordinate system, x,y,z. Because the Euler
transformations allow to switch between coordinate systems easily, it does not really matter which
one is selected.

The angle β is simply the angle between the z axes of both coordinate systems.
The angle α is the angle between the X axis of the reference coordinate system and
the projection of z into the X,Y plane. Finally, γ is the angle between the y
axis and the line of nodes.

Computationally, we can work your way backwards from the components of the above transformation matrix:
- the zz component gives us cos(β)
- use that β to get α from components zx and zy
- use that β to get γ from components xz and yz

Conventions

Unfortunately, there are different conventions for the Euler angles relating two coordinate systems:

the ZXZ order is used by Stauss [8], Baugher and coworkers [9],
Goldstein [10], Power et al. [11]

in addition, we need to distinguish between active and passive transformations, we can think of it as
bringing the reference system into coincidence with the derived system or bringing the derived system into
coincidence with the reference system by applying the Euler rotations [3b].

Note that rotation about sequentially newly generated axes produces the same result
as rotations by the same angles about the fixed original axes, if the order of angles is reversed:
RZ(α) RY(β)
RZ(γ) (cf. Mehring's book, appendix [4]).

The problem of different Euler angle conventions has also been addressed by Mulliken in his
Report on Notation for the Spectra of Polyatomic Molecules [12]:

»It has been suggested by several people that it would be desirable, in the theoretical discussion of rigid rotor
functions, to agree on a single standard way of choosing Eulerian angles. However, since any such standardization
should have the agreement of other groups in addition to the spectroscopists, it is proposed that such a
cooperative agreement be sought at a later date.«