Exercises 06: Rotations I

An Exponentially Better Representation of Rotations

How can you smoothly interpolate rotations? And what does it mean to "average" a bunch of rotations? Many problems in visual computing require you to answer these kinds of questions. For instance, suppose you have many noisy estimates of a camera pose, and want to average these out to get a more reliable estimate. Or suppose you want to interpolate between known coordinate frames at several points on a surface, to get a smoothly-varying frame. These tasks are hard to perform directly because rotation matrices don't form a vector space---for instance, adding two rotation matrices doesn't give you another rotation matrix!

However, we can convert rotation matrices into an axis-angle form where rotations are represented by ordinary vectors. The direction of the vector gives the axis of rotation, and the magnitude of the vector gives the angle of the rotation. These vectors can be added, scaled, and averaged just like normal vectors---and then we can convert back to matrices in order to perform rotations.

The next set of lectures, on the log and exponential map for rotations, can be found in this PDF.

Since there is a lot to say here (and because you'll get plenty of practice with sampling in A1) we'll cover the first part of these exercises (2D) in class for Lecture 06, and the second part (3D) in class for Lecture 07, in lieu of exercises on perspective projection and texture mapping.