Nonsingular Efficient Modeling of
Rotations in 3space using
three components
Abstract.
This article introduces yet another representation of rotations in 3space. The rotations form a 3dimensional projective space, which fact has not been exploited in Computer Science. We use the four affine patches of this projective space to parametrize the rotations. This affine patch representation is more compact than quaternions (which require 4 components for calculations), encompasses the entire rotation group without singularities (unlike the Euler angles and rotation vector approaches), and requires only ratios of linear or quadratic polynomials for basic computations (unlike the Euler angles and rotation vector approaches which require transcendental functions).
As an example, we derive the differential equation for the integration of angular velocity using this affine patch representation of rotations. We remark that the complexity of this equation is the same as the corresponding quaternion equation, but has advantages over the quaternion approach e.g. renormalization to unit length is not required, and state space has no “dead” directions.
1. Introduction
This work was motivated by the need to have a practical and robust way to model rotations and projective spaces in the software that we write. These are applications in photogrammetry, remote sensing and simultaneous localization and mapping. Rotations are used in modeling the poses of the cameras, while the focal planes of the cameras are projective spaces. Although it is true that the imaging focal plane is contained in a single affine patch of , relevant vanishing points may lie on, or near, the line at infinity, so that the coordinates of the imaging affine patch are not appropriate for robustly describing and managing the vanishing points.
Traditionally, (unit) quaternions have been used to model rotations, as the quaternions have only 4 components – just one more parameter than the dimension of the space of rotations (see, for example [1, 2]). However, the extra component is bothersome, requiring extra storage, requiring extra work to manage the redundancy (renormalization to unit length), and likely affecting the convergence rate due to motion in the redundant length direction of the quaternion, when we are optimizing to find the best rotation for a particular problem.
Another approach to representing rotations is to use the three Eulerian angles, e.g.[3]. However, this approach suffers from not being everywhere invertible, so is not a global solution to representing the rotations. Moreover, the transcendental transformation between Eulerian angles and rotation matrices is not ideal for software implementation. A similar situation is to be found with the rotation vector representation of a rotation. The online article [4] discusses this and other representations of rotations.
In the following sections, we review the standard coordinates on projective space, and then derive the differential equation for the integration of angular velocity using the projective space manifold structure (affine patches) on the rotation group. We will see that with this novel representation of the rotations, the differential equation has the same complexity as the corresponding quaternion differential equation, and has other desirable properties over the quaternion case.
2. Notation
All vector spaces and projective spaces are over the real numbers. For a point in ndimensional projective space, , its homogeneous coordinates are denoted .
The traditional manifold structure on is given as

The affine patch, , on is defined to be the set

The coordinate chart for is
defined by the formula and throw away the 1 in the slot. This is seen to be a 11 map onto all of .
The following algorithm template illustrates how to use the manifold structure on to iteratively step along a sequence of points in projective nspace. For simplicity, we do not specify what it means to “iterate”, and we omit any stopping criteria.
Algorithm 2.1.
Iterate on Projective Space

An initial point, .

Let k be the index of the largest component, .

Represent in the affine patch. So, initially, all the coordinate components in this patch have magnitude at most 1.

Iterate to the next value of , in this patch.

If all coordinate components of have magnitude at most 2, go back to Step 3. Otherwise, proceed to Step 5.

Reconstruct the homogeneous coordinates, z, for the current point, and let k be the index of the the largest component .

Represent in the affine patch, and proceed to Step 3.
In Step 6, some bookkeeping may be required to keep the overall environment of the algorithm consistent when switching patches. The choice of the value, 2, in Step 4 is somewhat arbitrary, but has worked well for us. The point is to monitor when a particular patch is no longer appropriate for the current value of , and then to switch to a good patch. If begins to converge, the switching of patches will cease.
This algorithm may be used when optimizing for a “best” value of z, or when incrementally solving a differential equation on projective space. In the next section, we write down explicitly the differential equation for integrating angular velocity, using the projective space manifold structure of the rotations.
3. Integrating Angular Velocity
We use the convention that the components of a quaternion, , are indexed as and , with being the scalar component, and denoting the 3vector of the other (spatial) components.
The particular rotation matrix associated to q is
Where, is the identity 3x3 matrix, and is the usual 3x3 skew matrix defined by
Explicitly,
Our jumping off point for analyzing angular velocity is the wellknown ([1][2]) differential equation relating angular velocity, , and quaternions:
(3.1) 
This corresponds to the matrix equation
It is Equation 3.1 that we wish to translate to the four affine patches of the rotations. To that end, we make explicit the components of the matrix in Equation 3.1.
(3.2) 
We restrict attention to patch , , and let
be the 3 components parametrizing the rotations from this patch. The corresponding homogeneous coordinates, are obtained by forming the 4vector with a 1 in the slot. So, is a nonunit quaternion, and we define a timevarying scale factor, by the equation
where q is now a unit quaternion. Consequently, Equation 3.1 is valid for q, and we may write
which may be rewritten as
(3.3) 
where . To reduce this equation, further, we define the 3x4 matrix whose columns are the nonzero entries from the corresponding columns of H.
(3.4) 
We recall that the component of is identically 1, so its derivative is 0, and we conclude from the component of Equation 3.3 that
where is the row of . This can be rewritten as
(3.5) 
where is the column of W.
Extracting, now, the non components of Equation 3.3, we obtain
(3.6) 
where is the 3x3 matrix obtained from by deleting the row and the column. By inspecting the four cases, we see that
(3.7) 
Inserting Equations 3.5 and 3.7 into Equation 3.6, we obtain
(3.8)  
Equation 3.8 is the 3dimensional differential equation to integrate angular velocity using affine patches on the rotation group. The RHS contains 12 multiplications, excluding the scaling by 1/2. This is the same number of multiplications as in Equation 3.1, which is the corresponding quaternion differential equation.
3.1. Difference Equation
In practice, a difference equation is used to integrate angular velocity. This section shows how to obtain identical results to the quaternion solution, but by using the affine patch representation of the rotations. This has the advantage that explicit renormalization to unit length is not required, as it is inherent to the affine patch approach.
For a time step, of length , we wish to find the increment, , so that the two expressions, and , represent the same rotation i.e.
where denotes all the components except for the . Divide the top and bottom of the LHS by to obtain
(3.9) 
We recall from the derivation of Equation 3.8 that
so that Equation 3.9 simplifies to
(3.10) 
It is interesting to note that this value of is the same as dividing by the scale factor .
4. Conclusions
We have applied elementary manifold theory to construct a global, efficient, singularityfree parametrization for the rotation group. We have derived differential and difference equations for integrating angular velocity using this novel representation of the rotations, and have shown that the complexity of using these equations is on a par with the corresponding quaternion equations. On a theoretical basis, however, the difference equation derived in this article is more sound, as there are no renormalizations to unit length required.
References

[1]
C. E. Schultz, INS and GPS integration, MSc Thesis,
Technical University of Denmark,
Informatics and Mathematical Modeling (July 2006).
http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=4704
Last referenced October 29, 2009  [2] Robert M. Rogers, Applied Mathematics in Integrated Navigation Systems, Edition. American Institute of Aeronautics and Astronautics (2003).
 [3] H. Goldstein, Classical Mechanics, AddisonWesley, 1950.

[4]
Wikipedia, Rotation representation (mathematics)
http://en.wikipedia.org/wiki/Rotation_representation_(mathematics)
#Euler_axis_and_angle_.28rotation_vector.29
Last referenced October 29, 2009