SO(3) Libration Visualizer Companion

Lunar Libration Formula Sheet

Canonical conversion formulas for libration angles, quaternions, Rodrigues vectors, rotation matrices, and axis–angle form, with a practical guide to reading the geometry directly.

Dan McGlaun DOI: 10.5281/zenodo.20724759
This standalone page accompanies the lunar libration visualizer and the archived preprint Lunar Libration Geometry, Part I: An Order-Free Geometric Framework in SO(3). It is intended as an implementation reference for the formulas; derivations will be found in the paper.

Canonical Libration Conversion Formulas

This section provides complete, self-contained formulas for converting among five equivalent representations of lunar orientation:

  1. Libration angles \((l,b,c)\)

  2. Quaternion \(q=(w,x,y,z)\)

  3. Rodrigues vector \(\mathbf r=(r_x,r_y,r_z)\)

  4. Rotation matrix \(M\in\mathbb{R}^{3\times 3}\)

  5. Axis–angle \((\hat n,\theta)\)

All formulas are order–free, explicit, numerical, and derive directly from the geometric definitions of the basis vectors \(\hat{\mathbf{X}},\hat{\mathbf{Y}},\hat{\mathbf{Z}}\). Any representation may be used as input, and all others recovered uniquely within their non-degenerate domains, subject to the usual angular branch conventions.

Here \(\phi\) denotes the great-circle tilt angle between the reference pole \(\hat{\mathbf{Z}}_0\) and the apparent pole \(\hat{\mathbf{Z}}_1\), defined by \(\cos\phi=\cos l\cos b\);
\(\hat{\boldsymbol{u}}\) is the corresponding tilt axis lying in the sky plane; and
\(\theta\) denotes a generic axis-angle rotation magnitude recovered from a rotation matrix or quaternion.

Notation

After the tilt is applied, all basis vectors are understood to refer to the apparent orientation. Accordingly, we write \(\hat Z \equiv \hat Z_1\), and define the apparent basis \((\hat X,\hat Y,\hat Z)\) with \(\hat Z\equiv\hat Z_1\). The rotation matrix is therefore \(M=[\,\hat X\ \hat Y\ \hat Z\,]\), with all three vectors representing the post–tilt (apparent) frame.

Interpretive notes

Although numerical implementations may internally construct the rotation via quaternions for stability or convenience, the defining orientation in this work is the geometric triad \((\hat X,\hat Y,\hat Z)\) derived directly from \((l,b,c)\). \(M\) is therefore primary, and the axis–angle and quaternion representations are exact, representation–equivalent encodings of the same rotation.

Also, in the special case \(\phi=0\) (no tilt), the apparent pole satisfies \(\hat Z_1=\hat Z_0\) and the tilt axis is not uniquely defined; in this limit the rotation reduces smoothly to a pure roll about \(\hat Z_0\), with all matrix and quaternion expressions remaining well defined and continuous.


How to Use the Conversion Formulas

Five equivalent representations of lunar orientation are used in this work:

  1. Libration parameters \((l,b,c)\)

  2. Quaternion

    1. Regular form: \(q=(w,x,y,z)\)

    2. Trigonometric form: \(q=\cos(\theta/2)+\hat n\sin(\theta/2)\)

  3. Rodrigues vector \(\mathbf r=(r_x,r_y,r_z)\)

  4. Rotation matrix \(M\in\mathbb{R}^{3\times 3}\)

  5. Axis–angle \((\hat n,\theta)\)

Any representation may be taken as input, and any other representation recovered by following the procedures below. The quaternion is the preferred intermediate representation; whenever practical, conversions may be performed through it.


1. Quaternion from libration angles

Tilt magnitude

\[\cos\phi = \cos l\,\cos b\] \[\sin\phi = \sqrt{1-\cos^2 l\,\cos^2 b}\]

Tilt axis

\[\hat v = \frac{1}{\sin\phi} \begin{pmatrix} \sin b\\ -\sin l\,\cos b\\ 0 \end{pmatrix}\]

Intermediate spin axis after tilt

\[\begin{aligned} y_{1,x} &= -\frac{\sin l\,\sin b\,\cos b}{1+\cos l\cos b} \\[6pt] y_{1,y} &= 1-\frac{\sin^2 b}{1+\cos l\cos b} \\[6pt] y_{1,z} &= \sin b \end{aligned}\]

Projection into observer sky plane \(\Pi_0\)

\[\begin{aligned} y_{1,\Pi_0,x} &= y_{1,x} \\[2pt] y_{1,\Pi_0,y} &= y_{1,y} \\[2pt] y_{1,\Pi_0,z} &= 0 \end{aligned}\]

For \(l=b=0\), the tilt quaternion is the identity and the axis is arbitrary.

Tilt quaternion

\[q_t = \left( \cos\frac{\phi}{2},\; \hat v_x\sin\frac{\phi}{2},\; \hat v_y\sin\frac{\phi}{2},\; 0 \right)\]

Tilt-induced azimuth

The tilt alone gives the projected lunar north direction an intermediate sky-plane azimuth:

\[ \phi_{\mathrm{tilt}} = \operatorname{atan2}\!\left( -\,y_{1,\Pi_0,x}, \; y_{1,\Pi_0,y} \right) \]

Azimuthal roll

\[ \Delta c = c-\phi_{\mathrm{tilt}} \]

Roll quaternion

\[q_r = \left( \cos\frac{\Delta c}{2},\; 0,\; 0,\; \sin\frac{\Delta c}{2} \right)\]

Full libration quaternion

\[\begin{aligned} w &= w_t w_r - x_t x_r - y_t y_r - z_t z_r\\ x &= w_t x_r + x_t w_r + y_t z_r - z_t y_r\\ y &= w_t y_r - x_t z_r + y_t w_r + z_t x_r\\ z &= w_t z_r + x_t y_r - y_t x_r + z_t w_r \end{aligned}\]


2. Rotation matrix from quaternion

\[M= \begin{pmatrix} 1-2(y^2+z^2) & 2(xy-wz) & 2(xz+wy)\\ 2(xy+wz) & 1-2(x^2+z^2) & 2(yz-wx)\\ 2(xz-wy) & 2(yz+wx) & 1-2(x^2+y^2) \end{pmatrix}\]


3. Axis–angle from quaternion

\[\theta = 2\arccos\!\bigl(\operatorname{clamp}(w,-1,1)\bigr)\]

\[\hat n = \frac{1}{\sin(\theta/2)} \begin{pmatrix} x\\y\\z \end{pmatrix}\]

If \(\theta=0\), then \(q=(1,0,0,0)\) and the axis is arbitrary.


4. Rodrigues vector from quaternion

\[\mathbf r = (r_x,r_y,r_z) = \frac{(x,y,z)}{w}, \qquad w\neq0\]

Equivalently, \[\mathbf r = \hat n \tan\frac{\theta}{2}\]

with magnitude \[\|\mathbf r\| = \tan\frac{\theta}{2}\]


5. Quaternion from Axis–angle

\[q = \left( \cos\frac{\theta}{2},\; \hat n_x\sin\frac{\theta}{2},\; \hat n_y\sin\frac{\theta}{2},\; \hat n_z\sin\frac{\theta}{2} \right)\]


6. Quaternion from Rodrigues vector

Given \[\mathbf r=(r_x,r_y,r_z), \qquad \rho=\|\mathbf r\|\] the quaternion is

\[(q_0,q_1,q_2,q_3) = \frac{1}{\sqrt{1+\rho^2}} \left( 1,\; r_x,\; r_y,\; r_z \right)\]


7. Quaternion from rotation matrix (simple form)

\[w = \tfrac{1}{2}\sqrt{1+M_{11}+M_{22}+M_{33}}\]

\[\begin{pmatrix} x\\y\\z \end{pmatrix} = \frac{1}{4w} \begin{pmatrix} M_{32}-M_{23}\\ M_{13}-M_{31}\\ M_{21}-M_{12} \end{pmatrix}\]


7a. Quaternion from rotation matrix (globally valid)

Let \[t = M_{11}+M_{22}+M_{33}\]

Case 1: \(t>0\)

\[w=\tfrac12\sqrt{1+t}\] \[x=\frac{M_{32}-M_{23}}{4w},\quad y=\frac{M_{13}-M_{31}}{4w},\quad z=\frac{M_{21}-M_{12}}{4w}\]

Case 2: \(t\le 0\) and \(M_{11}\) is the largest diagonal element

\[x=\tfrac12\sqrt{1+M_{11}-M_{22}-M_{33}}\] \[w=\frac{M_{32}-M_{23}}{4x},\quad y=\frac{M_{12}+M_{21}}{4x},\quad z=\frac{M_{13}+M_{31}}{4x}\]

Case 3: \(t\le 0\) and \(M_{22}\) is the largest diagonal element

\[y=\tfrac12\sqrt{1-M_{11}+M_{22}-M_{33}}\] \[w=\frac{M_{13}-M_{31}}{4y},\quad x=\frac{M_{12}+M_{21}}{4y},\quad z=\frac{M_{23}+M_{32}}{4y}\]

Case 4: \(t\le 0\) and \(M_{33}\) is the largest diagonal element

\[z=\tfrac12\sqrt{1-M_{11}-M_{22}+M_{33}}\] \[w=\frac{M_{21}-M_{12}}{4z},\quad x=\frac{M_{13}+M_{31}}{4z},\quad y=\frac{M_{23}+M_{32}}{4z}\]


8. Rotation matrix from axis–angle

Define

\[K= \begin{pmatrix} 0 & -n_z & n_y\\ n_z & 0 & -n_x\\ -n_y & n_x & 0 \end{pmatrix}\]

Then

\[M = I+\sin\theta\,K+(1-\cos\theta)K^2\]


9. Rotation matrix from Rodrigues vector

Given \[\mathbf r=(r_x,r_y,r_z), \qquad \rho^2=\mathbf r\cdot\mathbf r\] extract the quaternion from (6) above. Then, \[M= \begin{pmatrix} 1-2(y^2+z^2) & 2(xy-wz) & 2(xz+wy)\\ 2(xy+wz) & 1-2(x^2+z^2) & 2(yz-wx)\\ 2(xz-wy) & 2(yz+wx) & 1-2(x^2+y^2) \end{pmatrix}\]


10. Rodrigues vector from rotation matrix

\[\theta = \arccos\!\left( \frac{\operatorname{tr}(M)-1}{2} \right)\]

Find

\[\hat n = \frac{1}{2\sin\theta} \begin{pmatrix} M_{32}-M_{23}\\ M_{13}-M_{31}\\ M_{21}-M_{12} \end{pmatrix}, \qquad \theta\neq0,\pi\]

The Rodrigues vector is then

\[\mathbf r = \hat n \tan\frac{\theta}{2}\]


11. Axis–angle from rotation matrix

\[\theta = \arccos\!\left( \frac{\operatorname{tr}(M)-1}{2} \right)\]

and for \(\theta\neq0\),

\[\hat n = \frac{1}{2\sin\theta} \begin{pmatrix} M_{32}-M_{23}\\ M_{13}-M_{31}\\ M_{21}-M_{12} \end{pmatrix}\]


12. Rodrigues vector from Axis–angle

\[\mathbf r = \hat n\tan\frac{\theta}{2}\]


13. Axis–angle from Rodrigues vector

\[\theta = 2\tan^{-1}(\|\mathbf r\|)\]

\[\hat n = \frac{\mathbf r}{\|\mathbf r\|}, \qquad \mathbf r\neq0\]


14. Libration angles from rotation matrix

\[ \begin{aligned} l &= \operatorname{atan2}(-M_{13},M_{33})\\ b &= \arcsin(-M_{23})\\ c &= \operatorname{atan2}(-M_{12},M_{22}) \end{aligned} \]


15. Libration angles from quaternion

Compute \(M(q)\), then use the formulas above.


16. Rodrigues vector from libration angles

Compute the libration quaternion \(q=(w,x,y,z)\) from \((l,b,c)\), then

\[\mathbf r = \frac{(x,y,z)}{w}\]


17. Axis–angle from libration angles

Compute the libration quaternion \(q=(w,x,y,z)\), then

\[\theta = 2\arccos(w)\]

\[\hat n = \frac{1}{\sin(\theta/2)} \begin{pmatrix} x\\y\\z \end{pmatrix}, \qquad \theta\neq0\]


18. Rotation matrix from libration angles

Compute the libration quaternion \(q=(w,x,y,z)\), then

\[M= \begin{pmatrix} 1-2(y^2+z^2) & 2(xy-wz) & 2(xz+wy)\\ 2(xy+wz) & 1-2(x^2+z^2) & 2(yz-wx)\\ 2(xz-wy) & 2(yz+wx) & 1-2(x^2+y^2) \end{pmatrix}\]


19. Great–circle tilt angle from rotation matrix

\[\phi=\arccos(\operatorname{clamp}(M_{33},-1,1))\]


20. Basis vectors

\[M=(\hat X\;\hat Y\;\hat Z)\]

\[\hat X = \begin{pmatrix} M_{11}\\M_{21}\\M_{31} \end{pmatrix}, \quad \hat Y = \begin{pmatrix} M_{12}\\M_{22}\\M_{32} \end{pmatrix}, \quad \hat Z = \begin{pmatrix} M_{13}\\M_{23}\\M_{33} \end{pmatrix}\]


Supplement: Rapid Visual Interpretation of Rotations

Purpose

Axis–angle notation clearly communicates geometric meaning: it names an axis in space and an angle through which a body is rotated about that axis. For this reason, it is often treated as the most intuitive representation of a rotation.

Rotation matrices and quaternions, by contrast, are frequently introduced as computational tools. They are efficient, algebraically convenient, and numerically stable—but they are often perceived as opaque objects whose geometric meaning is hidden.

This perception is misleading. A rotation matrix or a unit quaternion contains exactly the same geometric information as an axis–angle pair. The information is simply distributed differently. The purpose of this supplement is to teach the reader where that information lives and how to read it directly, without converting representations or privileging one formalism over another.

After reading this section, the reader should be able to look at a rotation matrix or quaternion and immediately infer:

  • whether the rotation is small or large,

  • which direction is approximately invariant,

  • the sense of rotation,

  • which geometric features are fixed,

  • and how small changes propagate.

This section does not introduce new theory. It is a practical reading guide designed to make the geometric content of rotation matrices and quaternions immediately visible once the concepts in the previous supplement are understood.


1. What every rotation representation contains

Every proper rotation in three–dimensional space, regardless of how it is represented, encodes three pieces of geometric information:

  • A direction that remains fixed (the rotation axis),

  • A magnitude describing how far the rotation turns about that axis,

  • A handed sense determining the direction of rotation.

Axis–angle notation makes these explicit by construction. Rotation matrices and quaternions do not hide this information—they simply embed it into algebraic structure.

Understanding how to read that structure is the key to fluency.


2. Reading a rotation matrix \(M\)

A rotation matrix \[M = [\hat X\;\hat Y\;\hat Z] \in \mathrm{SO}(3)\] should never be thought of as “nine numbers in a grid.” It is a compact geometric object whose columns have immediate physical meaning.

2.1 The columns describe orientation

Each column of \(M\) answers a concrete geometric question:

  • \(\hat X\) / \(\hat Y\) / \(\hat Z\): Where does the original \(x\)–axis / \(y\)–axis / \(z\)–axis point after the rotation?

This interpretation is fundamental; a rotation matrix does not act on space abstractly—it maps old basis vectors to new ones.

How to use this in practice

To understand the orientation quickly:

  • Look at \(\hat Z\) first.

  • If it is close to \((0,0,1)\), the rotation is small.

  • If it lies near the equatorial plane, the rotation includes a large tilt.

  • The relative orientation of \(\hat X\) and \(\hat Y\) then tells you how the body is rotated about that tilt.

This alone often gives enough intuition to understand the rotation qualitatively.


2.2 How to read the columns of a rotation matrix (what each one means)

The \(\hat Z\) column: global orientation and tilt

The third column, \[\hat Z = m_{\cdot 3}\] is always the most informative place to begin. It answers the question:

“Where did the original reference pole end up?”

In the libration geometry of this work, \(\hat Z\) is the apparent pole direction. It tells you:

  • how far the body has tilted away from the reference axis,

  • in which direction that tilt occurred,

  • and whether the rotation is small or large in a global sense.

Examples

  • If \(\hat Z \approx (0,0,1)\), the rotation is close to identity.

  • If \(\hat Z\) lies near the equatorial plane, the body is strongly tilted.

  • If \(\hat Z\) points roughly toward \(+x\), the tilt occurred primarily in the \(x\) direction.

This information is independent of roll. No matter how much the body rotates about the line of sight, \(\hat Z\) remains fixed; therefore, it must always be examined first.

The \(\hat X\) and \(\hat Y\) columns: orientation about the tilt

Once \(\hat Z\) is understood, the remaining columns must be interpreted relative to it.

The columns \(\hat X\) and \(\hat Y\) describe how the body is oriented about the direction \(\hat Z\). They answer the fundamentally different question: “Given this tilt, how is the body rotated around that direction?”

Why \(\hat X\) and \(\hat Y\) must be compared

Individually, \(\hat X\) and \(\hat Y\) can be misleading. Their geometric meaning comes from their relative orientation.

Key facts:

  • \(\hat X\) and \(\hat Y\) always lie in the plane perpendicular to \(\hat Z\).

  • Their relative rotation within that plane encodes the roll.

  • Rotating \(\hat X\) and \(\hat Y\) about \(\hat Z\) changes nothing about the tilt.

  • Roll cannot be inferred from \(\hat Z\) alone.

Example

Suppose two rotation matrices share the same \[\hat Z=(0.707,0,0.707)\]

Consider \[M_A= \begin{pmatrix} 0.707 & 0 & 0.707\\ 0 & 1 & 0\\ -0.707 & 0 & 0.707 \end{pmatrix}\] and \[M_B= \begin{pmatrix} 0 & -0.707 & 0.707\\ 1 & 0 & 0\\ 0 & 0.707 & 0.707 \end{pmatrix}\]

Both matrices share the same \[\hat Z=(0.707,0,0.707)\] so both describe the same tilt.

Now compare their \(\hat X\) columns:

  • In Case A, \[\hat X=(0.707,0,-0.707)\] which points primarily toward increasing \(x\).

  • In Case B, \[\hat X=(0,1,0)\] which points primarily toward increasing \(y\).

Thus the tilt is unchanged, while the orientation about \(\hat Z\) differs.

This difference is invisible if one examines \(\hat Z\) alone. It becomes obvious only when \(\hat X\) and \(\hat Y\) are compared.

Practical reading rule

When inspecting a rotation matrix:

  1. Examine \(\hat Z\) first to determine tilt magnitude and direction.

  2. Project \(\hat X\) and \(\hat Y\) into the plane perpendicular to \(\hat Z\).

  3. Examine their relative orientation in that plane to determine roll.

This mirrors exactly how the libration angles \((l,b,c)\) are defined.

Connection to axis–angle intuition

Axis–angle notation gives the invariant rotation axis and the total rotation angle directly. A rotation matrix encodes the same total rotation information, but not by making any one column equal to the invariant axis.

In the libration construction, the column \(\hat Z\) is the image of the reference pole: \[\hat Z = M\hat Z_0.\] It tells where the lunar pole has gone, not generally the invariant axis of the full rotation.

The invariant rotation axis is instead recovered from the antisymmetric part of the matrix: \[\hat n = \frac{1}{2\sin\theta} \begin{pmatrix} M_{32}-M_{23}\\ M_{13}-M_{31}\\ M_{21}-M_{12} \end{pmatrix}\] for \(\theta\neq0,\pi\).

Thus a matrix gives two complementary kinds of information:

  • its columns show where the reference axes went,

  • its antisymmetric part recovers the invariant axis of the total rotation.

Once this distinction is understood, reading a matrix becomes as immediate as reading an axis–angle pair.


3. Reading a quaternion

\[q=(w,x,y,z)\]

A unit quaternion is not an abstract algebraic object—it is a compressed axis–angle representation living on a four–dimensional unit sphere.

3.1 Where the rotation magnitude lives

The scalar part \(w\) determines the rotation angle: \[\theta = 2\arccos(w)\]

How to read it

  • \(w \approx 1\): very small rotation,

  • \(w \approx 0\): near \(180^\circ\) rotation.

This single number already tells you whether the orientation change is minor or dramatic.

3.2 Where the rotation axis lives

Provided \(\sin(\theta/2) \neq 0\), \[\hat u = \frac{1}{\sin(\theta/2)}(x,y,z)\]

The vector part always points along the rotation axis.

Key insight

The quaternion does not hide the axis—it stores it directly in the direction of its vector part. The magnitude of that vector part encodes the rotation angle.

3.3 The meaning of the \(q\sim -q\) ambiguity

The quaternions \(q\) and \(-q\) represent the same physical rotation. This redundancy reflects the fact that quaternions form a double cover of \(\mathrm{SO}(3)\).

This does not destroy geometric meaning:

  • the axis direction is still encoded consistently,

  • continuous motion fixes the sign automatically,

  • physical orientation is never ambiguous.

3.4 Fixed directions and intuition

A vector \(v\) remains unchanged under the rotation if \[q\,v\,q^{-1} = v\] This occurs exactly when \(v\) is parallel to the rotation axis \(\hat u\).

3.5 Why quaternions are numerically stable

For small rotations, \[q \approx (1,\;\tfrac{\theta}{2}\hat u)\]

This means:

  • the vector part lives in the tangent space of rotations,

  • small rotations add linearly,

  • normalization is trivial and robust.


4. Worked intuition examples

Example: Near–identity quaternion

\[q = (0.9999,\;0.005,\;0.002,\;0)\]

Interpretation:

  • Because \(w\approx1\), the rotation angle must be very small: \[\theta=2\arccos(w)\approx0.02\ \text{radians}.\]

  • The vector part \[(0.005,0.002,0)\] therefore points approximately along the rotation axis.

  • Normalizing that vector gives \[\hat u \approx (0.93,0.37,0)\] showing that the rotation occurs primarily about the \(+x\) direction with a smaller \(+y\) component.


5. Application to libration geometry

In the libration framework of this work:

  • the apparent pole \(\hat Z\) fixes the tilt,

  • the angle \(c\) fixes the sky–plane meridian,

  • the rotation axis and magnitude are determined implicitly.

Matrices and quaternions encode all of this simultaneously, without any notion of rotation order.


6. Final takeaway

Axis–angle notation explains how to do the rotation.

Rotation matrices show where everything ended up.

Quaternions encode how the rotation behaves numerically.

Rodrigues vectors compress the same rotation into three unconstrained coordinates through stereographic projection.

All four representations are complete, exact, and equivalent. Fluency comes from knowing where the geometry lives in each one.


Supplement: Libration Geometry at a Glance

The previous supplement explained how geometric information is encoded in rotation matrices, quaternions, and Rodrigues vectors in general. The present section specializes those ideas to the libration geometry of this work.

Its purpose is practical: given a rotation matrix, quaternion, or Rodrigues vector describing a lunar orientation, the reader should be able to infer the qualitative libration state immediately — which direction the pole has tilted, whether the libration is small or large, and how the sky–plane roll behaves — often without carrying out a full symbolic conversion to \((l,b,c)\).


1. What to look at first (always the same order)

Regardless of representation, the geometric information is read in the same conceptual sequence:

  1. Tilt direction and magnitude (controlled by \(l\) and \(b\)),

  2. Rotation about that direction (controlled by \(c\)),

  3. Overall scale (small vs. large rotation).

This ordering is not arbitrary. It reflects the geometry of the libration construction itself and is common to matrices, quaternions, and axis–angle form.


2. Reading libration constants from a rotation matrix

Let \[M = [\hat X\;\hat Y\;\hat Z]\]

2.1 Tilt \((l,b)\): read \(\hat Z\) only

The third column \(\hat Z\) is the apparent pole direction. It encodes all information about \((l,b)\) and none about \(c\).

Rules of thumb

  • \(\hat Z \approx (0,0,1)\) \(\Rightarrow\) \(l\approx 0\), \(b\approx 0\) (near–identity).

  • \(\hat Z\) near the equatorial plane \(\Rightarrow\) large tilt.

  • Sign of \(\hat Z_y\) \(\Rightarrow\) sign of \(b\).

  • Projection of \(\hat Z\) onto the \(xz\) plane \(\Rightarrow\) longitude \(l\).

Key point

No amount of roll changes \(\hat Z\). If two matrices have the same \(\hat Z\), they have the same \((l,b)\).

2.2 Roll \(c\): read \(\hat X\) relative to \(\hat Y\)

Once \(\hat Z\) is known, the remaining columns must be read relative to it, never in isolation.

Correct mental model

  • \(\hat X\) and \(\hat Y\) lie in the plane perpendicular to \(\hat Z\).

  • Their relative rotation in that plane is the roll \(c\).

  • Rotating \(\hat X\) and \(\hat Y\) together about \(\hat Z\) changes \(c\) but leaves \((l,b)\) unchanged.

Practical procedure

  1. Project \(\hat X\) (or \(\hat Y\)) into the sky plane.

  2. Measure its azimuth relative to the sky–plane reference direction.

  3. That azimuth is \(c\) (up to the fixed sign convention).

Critical warning

Looking at \(\hat X\) or \(\hat Y\) without first fixing \(\hat Z\) leads to misinterpretation. Roll is a relative quantity.

2.3 Small vs. large rotations

The trace provides an immediate scale estimate: \[\operatorname{tr}(M) \approx \begin{cases} 3 & \text{small rotation}\\ 1 & \text{moderate rotation}\\ -1 & \text{near }180^\circ \end{cases}\]

3. Reading libration constants from a quaternion

\[q=(w,x,y,z)\]

3.1 Rotation size: read \(w\)

  • \(w \approx 1\) \(\Rightarrow\) very small libration.

  • \(w \approx 0\) \(\Rightarrow\) near \(180^\circ\) rotation.

This immediately tells you whether the libration is subtle or extreme.

3.2 Tilt axis: read \((x,y,z)\) direction

For nontrivial rotations, the vector part \((x,y,z)\) points along the rotation axis. Its direction tells you:

  • which spatial direction is approximately invariant,

  • where the apparent pole lies.

3.3 Roll intuition in quaternions

The roll \(c\) is not stored in a single quaternion component. Instead, it appears as a redistribution of weight among \((x,y,z)\) once the axis direction is fixed.

Reading trick

  • Fix the axis direction from \((x,y,z)\).

  • Changes in roll rotate the projection of \((x,y,z)\) within the plane orthogonal to the line of sight.

  • Comparing two quaternions with the same \(w\) and axis magnitude but different component ratios reveals roll differences immediately.

3.4 The \(q\sim -q\) ambiguity (at a glance)

If all components flip sign, nothing physical changed. This is simply topological redundancy; continuity in time fixes the sign automatically.


4. Reading libration constants from a Rodrigues vector

Let \[\mathbf r=(r_x,r_y,r_z)\]

4.1 Rotation size: read \(\|\mathbf r\|\)

The Rodrigues vector satisfies \[\mathbf r = \hat{\mathbf n}\tan\frac{\theta}{2}\] so its norm determines the total rotation angle: \[\|\mathbf r\| = \tan\frac{\theta}{2}\]

  • \(\|\mathbf r\| \approx 0\) \(\Rightarrow\) very small libration.

  • Large \(\|\mathbf r\|\) \(\Rightarrow\) rotation approaching \(180^\circ\).

4.2 Orientation information

Although the Rodrigues vector is fundamentally a stereographic coordinate chart on \(\mathrm{SO}(3)\) rather than an explicit axis–angle pair, the rotation axis may be recovered from \[\hat{\mathbf n} = \frac{\mathbf r}{\|\mathbf r\|}\]

Thus the Rodrigues vector encodes both rotational orientation and rotation size within a single three-dimensional coordinate.

4.3 Geometric interpretation

The Rodrigues vector is obtained from the quaternion representation through stereographic projection from the quaternion sphere \(S^3\) into \(\mathbb R^3\).

It therefore compresses the same rigid-body rotation encoded by the quaternion, axis–angle pair, and rotation matrix into only three unconstrained coordinates.

4.4 Important limitation

The Rodrigues representation becomes unbounded as \(\phi \rightarrow \pi\) because \[\tan\frac{\phi}{2}\rightarrow\infty\]

For this reason, quaternions remain the preferred globally stable representation for numerical propagation and interpolation.


5. Matrix vs. quaternion vs. Rodrigues: when to use each

Rotation matrices

  • Best for visualizing orientation.

  • Columns show where axes went.

  • Ideal for diagnosing tilt vs. roll geometrically.

Quaternions

  • Best for numerical behavior.

  • Scalar part gives angle immediately.

  • Vector part gives axis immediately.

  • Excellent for interpolation and accumulation.

Rodrigues vectors

  • Best for compact geometric intuition.

  • Direction gives rotation axis immediately.

  • Magnitude gives \(\tan(\phi/2)\).

  • Encodes the full rotation in only three coordinates.

All encode the same geometry. Fluency comes from knowing what to read.


6. One–sentence decoding rules

  • Matrix: Look at \(\hat Z\) for tilt, compare \(\hat X\) and \(\hat Y\) for roll.

  • Quaternion: Look at \(w\) for size, \((x,y,z)\) for axis.

  • Axis–angle: Everything is explicit.

  • Rodrigues vector: A compact stereographic coordinate chart (rotation representation) on \(\mathrm{SO}(3)\).