Interpolating quaternions
Quaternions can be interpolated in a similar fashion to vectors. Quaternion interpolation is used to animate rotation between two keyframes. Since most skeletal animation is achieved by rotating joints over time, interpolating between quaternions is going to be
a very common operation.
Neighborhood
A quaternion represents a rotation, not an orientation. Rotating from one part of a sphere to another can be achieved by one of two rotations. The rotation can take the shortest or the longest arc. Generally, having quaternions travel along the shortest arc is desirable. When interpolating between two quaternions, which path will be taken—the shortest arc or the longest?
This problem is called neighborhooding. To solve it, check the dot product of the quaternions being interpolated. If the dot product is positive, the shorter arc will be taken. If the dot product is negative, the longer arc will be taken.
If the dot product is negative, how...