Graphics Reference
In-Depth Information
M 1 and M 2 and a fraction t by which to interpolate them, what should happen
when M 1 arises from the operation “rotate not at all” and so does M 2 ? Obviously,
the interpolated rotation will not rotate at all (i.e., it'll be the identity rotation).
But what if M 1 comes from “rotate not at all” and M 2 comes from “rotate 360
about the z -axis”? We know that we want the halfway interpolation ( t = 0. 5) to
be “rotate 180 about the z -axis,” but there's no way for our procedure to compute
this: In both our cases, the matrices M 1 and M 2 are the identity!
In many situations, the underlying desire is not to interpolate rotation matrices
or rotation transformations, but to interpolate the rotation specifications and then
compute the transformation associated to the interpolated specification. Unfortu-
nately, interpolating specifications is not so easy. In the case of axis-angle spec-
ifications, it's easy when the axis doesn't change: One simply interpolates the
angle. But interpolating the axis is a trickier matter. And suppose we consider two
instances of the problem.
1. Rotation 1: Rotate by 0 about the x -axis. Rotation 2: Rotate by 90 about
the x -axis.
2. Rotation 1: Rotate by 0 about the y -axis. Rotation 2: Rotate by 90 about
the x -axis.
Should the halfway interpolated rotation in these two cases be the same or
different? The initial and final rotations are identical in the two cases. The only
difference is in the specification of the irrelevant direction in the no-angle rotation.
Should that make a difference?
Yahia and Gagalowicz [YG89] describe a method for axis-angle interpolation
in which the axis always has an effect, even when the angle is a multiple of 2
π
;
aside from this artifact, the method is quite reasonable.
11.5 Interpolating Matrix Transformations
Despite the claim of the preceding section that, in general, we want to interpolate
rotation specifications rather than the transformations themselves, there are several
circumstances in which directly acting on the transformations makes sense. For
instance, if we've written a physics simulator that computes the orientations and
positions of bodies at certain times, but we'd like to fill in orientations and posi-
tions at intermediate times, we can ensure that the values provided at the key times
by the simulator will be fairly close to the neighboring values (i.e., an object isn't
going to spin 720 between key times) by working with small enough time steps.
Given two such “nearby” transformations, can we interpolate between them?
Alexa et al. [Ale02] describe a method for interpolating transformations and
more generally for forming linear combinations of transformations, provided that
the transformations being combined are “near enough.” The web material for this
chapter describes this method, but since it involves the matrix exponential and
other mathematical topics we don't wish to delve into, we omit it here.
11.6 Virtual Trackball and Arcball
As an application of our study of the space of rotations, we'll now examine two
methods for controlling the attitude of a 3D object that we're viewing. These two
 
 
 
Search WWH ::




Custom Search