1.1 Direction Cosine Matrices (DCMs)
The orientation of a rigid body can be described by how its body-fixed frame is rotated relative to some reference frame. Each frame is constructed from three mutually perpendicular, right-hand unit vectors.
Body frame \( B = \{\mathbf b_1, \mathbf b_2, \mathbf b_3\} \): fixed to the rigid body, usually aligned with its principal inertia axes.
Inertial (or navigation) frame \( I = \{\mathbf i_1, \mathbf i_2, \mathbf i_3\} \): a non-accelerating reference frame such as ECI.
A Direction Cosine Matrix is a \(3 \times 3\) orthonormal matrix that encodes how these two frames are rotated with respect to each other. Its entries are the cosines of the angles between the basis vectors of one frame and those of the other.
The DCM that transforms body-frame components into inertial components is written \( C_{B}^{I} \). It maps vector components as
\[ \mathbf v^I = C_{B}^{I}\,\mathbf v^B, \qquad \mathbf v^B = C_{I}^{B}\,\mathbf v^I . \]
Because the matrix is orthonormal, \[ C^{-1} = C^{T}, \qquad \det(C) = +1 \] for right-handed frames. Thus the inverse transformation is obtained simply by taking the transpose, and the matrix represents a proper rotation (no reflection).
1.1.1 Frame Transformations
Coordinate Frames
Inertial frame \( I \)
A non-accelerating reference frame (e.g. ECI) with basis vectors
\( \{ \mathbf i_1, \mathbf i_2, \mathbf i_3 \} \).
Body frame \( B \)
A frame rigidly attached to the spacecraft or aircraft, aligned with the vehicle’s
principal axes, with basis vectors \( \{ \mathbf b_1, \mathbf b_2, \mathbf b_3 \} \).
Both frames are right-handed and consist of three orthonormal unit vectors.
Direction Cosines
Consider the first body axis \( \mathbf b_1 \). Let \( \alpha_{1i} \) be the angle between \( \mathbf b_1 \) and the inertial axis \( \mathbf i_i \) (for \( i = 1,2,3 \)). The corresponding direction cosines are
\[ C_{1i} = \cos(\alpha_{1i}) = \mathbf b_1 \cdot \mathbf i_i . \]
Doing the same for \( \mathbf b_2 \) and \( \mathbf b_3 \) gives all entries of the DCM:
- Row 1: projections of \( \mathbf b_1 \) on \( \mathbf i_1, \mathbf i_2, \mathbf i_3 \)
- Row 2: projections of \( \mathbf b_2 \) on \( \mathbf i_1, \mathbf i_2, \mathbf i_3 \)
- Row 3: projections of \( \mathbf b_3 \) on \( \mathbf i_1, \mathbf i_2, \mathbf i_3 \)
Thus each element of the DCM is a dot product between a body axis and an inertial axis.
Transformation Convention
- \( C_{B}^{I} \): transforms body-frame components into inertial components.
- \( C_{I}^{B} \): transforms inertial-frame components into body components.
Because the matrix is orthonormal, \[ C_{I}^{B} = (C_{B}^{I})^{T}. \] So the forward and inverse projections between frames are performed using the same matrix and its transpose—no explicit matrix inversion is required.
1.1.2 Basic Rotation Matrices
Elementary rotations are single-axis rotations about the body \( x \), \( y \), and \( z \) axes. The corresponding DCMs are:
Rotation about the \( x \)–axis (roll)
\[ R_1(\phi) = \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos\phi & \sin\phi \\ 0 & -\sin\phi& \cos\phi \end{bmatrix}. \]
Rotation about the \( y \)–axis (pitch)
\[ R_2(\theta) = \begin{bmatrix} \cos\theta & 0 & -\sin\theta \\ 0 & 1 & 0 \\ \sin\theta & 0 & \cos\theta \end{bmatrix}. \]
Rotation about the \( z \)–axis (yaw)
\[ R_3(\psi) = \begin{bmatrix} \cos\psi & \sin\psi & 0 \\ -\sin\psi& \cos\psi & 0 \\ 0 & 0 & 1 \end{bmatrix}. \]
These matrices are themselves built from direction cosines: if \( \mathbf b_i \) and \( \mathbf i_j \) are unit vectors, then \[ C_{ij} = \mathbf b_i \cdot \mathbf i_j \] is the cosine of the angle between them. Every entry of a DCM has this geometric interpretation.
1.1.3 Composite Rotations
Rotation Sequence Multiplication
If a body undergoes several successive rotations, the overall DCM is found by multiplying the individual rotation matrices. For rotations with angles \( \alpha, \beta, \gamma \) about axes \( i, j, k \),
\[ C = R_k(\gamma)\, R_j(\beta)\, R_i(\alpha). \]
Matrix multiplication is not commutative, so the order of rotations matters.
Common Aerospace Sequence: 3–2–1 (Yaw–Pitch–Roll)
A widely used convention in flight dynamics is the \( 3\text{–}2\text{–}1 \) (yaw–pitch–roll) sequence:
\[ C = R_1(\phi)\, R_2(\theta)\, R_3(\psi), \]
corresponding to a rotation about the \( z \)–axis (yaw), then about the \( y \)–axis (pitch), then about the \( x \)–axis (roll), when viewed as passive frame rotations.
Active vs Passive Interpretation
- Active rotation: the physical vector is rotated relative to a fixed frame.
- Passive rotation: the coordinate frame rotates relative to a fixed vector.
In GNC, DCMs are usually interpreted passively: the inertial vector stays fixed while the body frame rotates relative to it.
Cascading Frame Transformations
Often more than two frames are involved, e.g. \( B \rightarrow R \rightarrow Q \rightarrow N \). If each relative orientation is known, the direct transformation from \( B \) to \( N \) is obtained by multiplying the relative DCMs in reverse order:
\[ C_{N\leftarrow B} = C_{N\leftarrow Q}\, C_{Q\leftarrow R}\, C_{R\leftarrow B}. \]
This idea is essential when chaining transformations such as:
- sensor frame → body frame → inertial frame
- LVLH frame → orbital frame → inertial frame
It replaces a long sequence of projections by a single DCM.
1.1.4 DCM Properties
1. Orthonormality
Rows and columns of a DCM form orthonormal triads: \[ C\,C^{T} = C^{T}C = I. \] This guarantees that lengths and angles are preserved—no stretching, shearing, or distortion of vectors.
2. Inverse Equals Transpose
From orthonormality, \[ C^{-1} = C^{T}. \] So transforming from frame \( I \) to \( B \) is simply the transpose of the transformation from \( B \) to \( I \).
3. Determinant
For right-handed frames, \[ \det(C) = +1. \] If the determinant were \(-1\), the matrix would represent a reflection combined with a rotation, which is not used for physical attitude descriptions.
4. Eigenvalue \( +1 \)
A proper rotation matrix in three dimensions has exactly one real eigenvalue equal to \( +1 \). The associated eigenvector is the axis about which the rotation occurs; this direction is unchanged by the rotation.
5. Membership in \( SO(3) \)
The set of all \( 3 \times 3 \) DCMs forms the special orthogonal group: \[ C \in SO(3) = \big\{ C \in \mathbb R^{3\times3} \,\big|\, C^{T}C = I,\; \det(C)=+1 \big\}. \] This group is closed under matrix multiplication and inversion, reflecting the fact that combining rotations yields another rotation.
6. Redundancy
A rigid body’s orientation has only three degrees of freedom, yet a DCM contains nine entries. The six extra numbers are constrained by the orthonormality conditions \[ C\,C^{T} = I \;\Rightarrow\; 6 \text{ independent constraints}. \]
Because of this redundancy, DCM elements are rarely used directly as state variables in simulations. Instead, more compact attitude parameterisations are preferred, such as:
- Euler angles (3 parameters)
- Quaternions (4 parameters with one unit-norm constraint)
- Modified Rodrigues Parameters (MRPs)
These alternatives store the same orientation information with fewer variables, while the DCM remains the fundamental tool for actual vector transformations between frames.