① Find a more efficient way to transform axis-aligned bounding
boxes by taking advantage of the symmetries of the problem: because the
eight corner points are linear combinations of three axis-aligned basis
vectors and a single corner point, their transformed bounding box can be
found much more efficiently than by the method we presented
(Arvo 1990).
② Instead of boxes, tighter bounds around objects could be
computed by using the intersections of many nonorthogonal slabs. Extend
the bounding box representation in pbrt to allow the user to specify a
bound comprised of arbitrary slabs.
① Change pbrt so that it transforms Normal3fs just like
Vector3fs, and create a scene that gives a clearly incorrect image due
to this bug. (Don’t forget to eliminate this change from your copy of the
source code when you’re done!)
② If only the translation components of a transformation
are time varying, for example, then the AnimatedTransform
implementation does unnecessary computation in interpolating between two
rotations that are the same. Modify the AnimatedTransform
implementation so that it avoids this work in cases where the full
generality of its current implementation isn’t necessary. How much of
a performance difference do you observe for scenes where your optimizations
are applicable?