Graphics Reference
In-Depth Information
10.14 Transformations versus Interpolation
When you rotate a book on your desk by 30 counterclockwise, the topic is rotated
by each intermediate amount between zero and 30 . But when we “rotate” the
house in our diagram by 30 , we simply compute the final position of each point
of the house. In no sense has it passed through any intermediate positions. In the
more extreme case of rotation by 180 , the resultant transformation is exactly the
same as the “uniform scale by
1” transformation. And in the case of rotation by
360 , the resultant transformation is the identity.
This reflects a limitation in modeling. The use of matrix transformations to
model transformations of ordinary objects captures only the relationship between
initial and final positions, and not the means by which the object got from the
initial to the final position.
Much of the time, this distinction is unimportant: We want to put an object
into a particular pose, so we apply some sequence of transformations to it (or its
parts). But sometimes it can be quite significant: We might instead want to show
the object being transformed from its initial state to its final state. An easy, but
rarely useful, approach is to linearly interpolate each point of the object from its
initial to its final position. If we do this for the “rotation by 180 ” example, at the
halfway point the entire object is collapsed to a single point; if we do it from the
“rotation by 360 ” example, the object never appears to move at all! The problem
is that what we really want is to find interpolated versions of our descriptions
of the transformation rather than of the transformations themselves. (Thus, to go
from the initial state to “rotated by 360” we'd apply “rotate by s ” to the initial
state, for each value of s from 0 to 360.)
But sometimes students confuse a transformation like “multiplication by the
identity matrix” with the way it was specified, “rotate by 360 ,” and they can be
frustrated with the impossibility of “dividing by two” to get a rotation by 180 ,
for instance. This is particularly annoying when one has access only to the matrix
form of the transformation, rather than the initial specification; in that case, as the
examples show, there's no hope for a general solution to the problem of “doing a
transformation partway.” On the other hand, there is a solution that often gives rea-
sonable results in practice, especially for the problem of interpolating two rather
similar transformations (e.g., interpolating between rotating by 20 and rotating
by 30 ), which often arises. We'll discuss this in Chapter 11.
10.15 Discussion and Further Reading
We've introduced three classes of basic transformations: linear, which you've
already encountered in linear algebra; affine, which includes translations and can
be seen as a subset of the linear transformations in xyw -space, restricted to the
w = 1 plane; and projective, which arises from general linear transformations on
xyw -space, restricted to the w = 1 plane and then followed by the homogenization
operation that divides through by w . We've shown how to represent each kind of
transformation by matrix multiplication, but we urge you to separate the idea of a
transformation from the matrix that represents it.
For each category, there's a theorem about uniqueness: A linear transforma-
tion on the plane is determined by its values on two independent vectors; an
affine transformation is determined by its values on any three noncollinear points;
 
 
 
Search WWH ::




Custom Search