** CRANS ** The core of the CRANS algorithm analyzes the set of rotation
differences to identify finite
sets of rotations that satisfy the subgroup axioms. Given a set of *w*
cross-rotation peaks (rotations)
*C* = {*r*_{1}, r_{2}, . . . , r_{w}},
where *r*_{i} is an element of the group of three-dimensional
rotations *SO*(3),
CRANS examines the *w*^{2} rotation differences *d*_{ij}
where *d*_{ij} = *r*_{i}^{−1} r_{j}
and *r*_{i}^{−1} is the inverse of *r*_{i}
(such
that *r*_{i}^{−1} *r*_{i} is the identity).
Conceptually, the rotation difference *d*_{ij} is the rotation that
rotates the
model oriented by *r*_{j} into the model oriented by *r*_{i}
(Figure). We can test the NCS consistency of a set of cross-rotation peaks by examining their rotation differences and
verifying that they form
a finite subgroup of *SO*(3). In the event of missing rotations, the
CRANS algorithm completes each
partial set of identified NCS-consistent rotations by generating missing
rotations with quaternions.
Although rotation differences can be computed using a number of rotation
representations, we chose
to use quaternions because they have a single compact representation with
explicit axis and angle
components, are easily composed, are free of singularities, and represent a
uniform parameterization
of rotation space. |