and copying blocks of pixels are
nice, but they’re kind of limiting. Oftentimes, you
must take pixels and scale them, rotate them, and move them around.
Of course, if you’ve worked with
Java 2D, you know this as the
, which maps one set of pixels
to another set of pixels, keeping straight lines straight and
parallel lines parallel.
If you’ve really worked with Java 2D’s affine transformations, you probably know that they’re represented as a linear algebra matrix, with coordinates mapped from source to destination by multiplying and/or adding pixel values against coefficients of the matrix. By changing the coefficients in the matrix to interesting values (or trigonometric functions), you can define different kinds of transformations.
QuickTime does exactly the same thing, with the minor exception that
rather than hiding the matrix in a wrapper (like
class), it puts the matrix front-and-center throughout the API. One
reason for this is that it’s also a major part of
the file format—tracks in a movie all have a matrix in their
metadata to determine how they’re rendered at
QuickTime matrix manipulation can basically do three things for you:
Move a block of pixels from one location to another
Rotate pixels around a given point
Make block bigger or smaller, or change its shape
This is a lab, not a lecture, so you don’t get the all-singing, all-dancing, all-algebra ...