Rigid body motions are the set of motions preserving the distance between points on a body, which means they don’t account for any kind of elastic or relativistic deformations. All rigid body motions can be described by a combination of translations and rotations, forming a group of transformations called the Special Euclidean group SE(n). In mechanics and robotics, much of the theory of rigid body motions falls under Screw Theory, which describes rigid body motions by a rotation and a translation along the axis of rotation.

In computer graphics, rigid body transformations are typically represented by a 4×4 matrix representing the 3D rotation as a 3×3 matrix and the translation as the 4th column vector. Often, quaternions are used to represent and generate the 3×3 rotation sub-matrix because they have better algebraic properties and don’t suffer from gimbal lock, however quaternions do not represent the full SE(n) group since they don’t incorporate translations into their algebra. Interestingly, quaternions are an element in Geometric Algebra (GA), so we might ask what modifications to the quaternions might be required to create an object that can represent **both** rotations and translations.

## Rotors and Quaternions

In GA, the geometric elements are both objects and operators. For example, in Euclidean space vectors represent both a familiar vector object as well as a reflection operation. Given a vector **v **and an object** a**, the operation \(vav^{-1}\) will reflect **a** through **v**. Where the multiplication operation between elements is understood to be the geometric product.

If we add a second vector **w** to the mix, we can produce rotations since rotations are nothing more than double reflections \(vwaw^{-1}v^{-1}\). In the rotation diagram, the blue line is the same as the second pink line in the reflection diagram, while the second pink line is the reflection of the blue line though the additional black line. Notice how the angle between the two pink lines is twice that of the angle between the black lines.

We now observe that this last operation defined by the geometric product of 2 vectors performs the exact same operation as a quaternion: it rotates objects. In fact, this is precisely what a quaternion is. The only caveat is that quaternions are usually defined in terms of left-handed coordinates while the product of 2 vectors is in right-handed coordinates. In GA, the product of 2 vectors is known as a rotor in this specific case and a versor in the general case. A versor is simple the geometric product of set of vectors.

Like complex numbers, a rotor can be written in exponential form and once something is in exponential form, it’s trivial to interpolate it. Complex numbers can be expressed as \(a+{i}b = re^{{i}\Theta}\). Rotors can be expressed as \(R=e^{-B\phi/2} = cos(\phi) + B sin(\phi).\) Interpolating in this instance requires finding the differential rotor **dR** such that given two rotors **R1** and **R2**, we can apply the differential rotor N times to **R1** and arrive at **R2**, giving N-1 intermediary poses between **R1** and **R2**. Finding the differential rotor thus boils down to finding the Nth root of \(R{_2}/R{_1} = e^{-(B{_1}\phi{_1}-B{_2}\phi{_2})/2}\). The Nth root of any function \(f(x) = e^{g(x)}\) satisfies \(\sqrt[n]{f(x)} = e^{g(x)/n}\) since \( (e^{g(x)/n})^n = e^{g(x)}\). The reason we want the Nth root is that we’re multiplying by the differential N times, so the value we multiply by is the Nth root of the differential.

## Rotations and Translations

While the 3D Euclidean model doesn’t combine translations with rotations into a single versor, there are a number of GA models that do. How might this happen? Rotations move an object about an axis. If we plot out the movement of an object while applying a succession of incremental rotations, the object will mark out a circle. This is due to the planar nature of rotations in 3D where the axis of rotation defines the plane of rotation. If instead of rotation around a finite circle, we choose a circle of infinite radius, the circle transforms into a line at the limit. Thus, translations can be thought of a simply a special case of rotations where the plane of rotation defines a circular path of infinite radius. The question now is how to express such object incorporating infinity.

In the conformal model of GA, 2 extra dimensions are added to the usual 3. These extra dimensions are the origin \(o\) and the point at infinity \(\infty\). I won’t go into the details about the derivation of the conformal model, but will mention a few properties:

- Distance between elements is expressed through the inner product
- The point at infinity is left invariant by all Euclidean transformations
- In addition to vectors, planes, etc. there are circles, spheres, and other objects
- Directions are expressed as bivectors with the infinite point e.g. \(e_{1}\wedge\infty\)

With translations and rotations incorporated into the model, we can now express versors that both translate and rotate. Translations in the conformal model are given by \(T = e^{-\boldsymbol{t}/(2\infty)}\) where **t** is a point describing the amount of translation. To create a combined translation-rotation versor, all that needs to be done is multiply **T** by **R** \(V=TR\) with one major caveat: **T** must be along the axis of rotation for it to be commutative and thus for the sandwich product \(VxV^{-1}\) to work properly. For an arbitrary translation, **t** must first be decomposed into a vector along the screw axis (axis of rotation) and a vector in the rotation plane. There’s an excellent paper entitled The Representation of Rigid Body Motions in the Conformal Model of Geometric Algebra by Leo Dorst for further details.

In the end, it can be shown that a rigid body motion (rotation and translation) is fully described lines in the conformal model. Intuitively, we know that two points define a line and thus a position in space and a direction. We can imagine, then, that the position in space is the translation versor and the direction the rotation versor. If we then define a second line, the operation of transforming the first line into the second line will incorporate a translation and rotation. In fact, the ratio of two lines describes the squared versor representing such an operation. To get the actual versor, we have to take the square root. The square root can also be performed via logarithms such that given lines L1 and L2 \(V = \sqrt{L2/L1} = e^{log(L2/L1)/2}\).

The above rigid body pose interpolations are generated by the following bivectors where the x-axis is Red, the y-axis is Green, and the z-axis is Blue:

- \(e1\wedge{}e2\pi – e3\wedge{}\infty\)
- \(e1\wedge{}e3\pi – e3\wedge{}\infty\)
- \(e2\wedge{}e3\pi – e3\wedge{}\infty\)