## Further Reading

DeRose, Goldman, and their collaborators have argued for an
elegant “coordinate-free” approach to describing vector geometry for
graphics, where the fact that positions and directions happen to be
represented by coordinates with respect to a particular
coordinate system is deemphasized and where points and vectors themselves
record which coordinate system they are expressed in terms of
(Goldman 1985; DeRose 1989; Mann
et al. 1997). This makes it possible
for a software layer to ensure that common errors like adding a vector in
one coordinate system to a point in another coordinate system are
transparently handled by transforming them to a common coordinate system
first. We have not followed this approach in `pbrt`, although the
principles behind this approach are well worth understanding and keeping in
mind when working with coordinate systems in computer graphics.

Schneider and Eberly’s *Geometric Tools for Computer Graphics* is
influenced by the coordinate-free approach and covers the topics of this
chapter in much greater depth (Schneider and Eberly 2003). It is also full
of useful geometric algorithms for graphics. A classic and more
traditional introduction to the topics of this chapter is
*Mathematical Elements for Computer Graphics* by Rogers and Adams (1990). Note that their book uses a row-vector representation of points
and vectors, however, which means that our matrices would be transposed
when expressed in their framework, and that they multiply points and
vectors by matrices to transform them , rather than
multiplying matrices by points as we do . Homogeneous
coordinates were only briefly mentioned in this chapter, although they are
the basis of projective geometry, where they are the foundation of many
elegant algorithms. Stolfi’s book is an excellent introduction to this
topic (Stolfi 1991).

There are many good books on linear algebra and vector geometry. We have
found Lang (1986) and Buck (1978) to be good references on these respective
topics. See also Akenine-Möller et al.’s *Real-Time Rendering*
book (2008) for a solid graphics-based introduction to linear algebra.

The subtleties of how normal vectors are transformed were first widely understood in the graphics community after articles by Wallis (1990) and Turkowski (1990b).

Shoemake (1985) introduced quaternions to graphics and showed their utility
for animating rotations. Using polar matrix decomposition for animating
transformations was described by Shoemake and Duff (1992); Higham (1986)
developed the algorithm for extracting the rotation from a composite
rotation and scale matrix by successively adding the matrix to its inverse
transpose. Shoemake’s chapters in *Graphics Gems* (1991,
1994, 1994)
respectively give more details on the derivation of the conversion from
matrices to quaternions and the implementation of polar matrix
decomposition.

We followed Blow’s derivation of spherical linear interpolation (2004) in
our exposition in this chapter. Bloom et al. (2004) discuss desirable
properties of interpolation of rotations for animation in computer graphics
and which approaches deliver which of these properties. See Eberly (2011)
for a more efficient implementation of a `Slerp()` function, based on
approximating the trigonometric functions involved with polynomials. For
more sophisticated approaches to rotation interpolation, see Ramamoorthi and Barr (1997) and Buss and Fillmore (2001).
A technique to efficiently compute a matrix to rotate one vector to another
was presented by Akenine-Möller and Hughes (1999).

Interval arithmetic is a tool that’s often useful in rendering; see Moore’s book (1966) for a well-written introduction.

### References

- Akenine-Möller, T., and J. Hughes. 1999.
Efficiently building a matrix to rotate one vector to another.
*Journal of Graphics Tools**4*(4), 1–4. - Akenine-Möller, T., E. Haines, and N. Hoffman. 2008.
*Real-Time Rendering*. Natick, MA: A. K. Peters. - Arvo, J. 1990.
Transforming axis-aligned bounding boxes.
In A. S. Glassner (Ed.),
*Graphics Gems I,*548–50. San Diego: Academic Press. - Bloom, C., J. Blow, and C. Muratori. 2004.
Errors and omissions in Marc Alexa’s “Linear combination of
transformations.”
*www.cbloom.com/3d/techdocs/lcot_errors.pdf* - Blow, J. 2004.
Understandling slerp, then not using it.
*Game Developer Magazine*. Also available from number-none.com/product/Understanding Slerp, Then Not Using It - Buck, R. C. 1978.
*Advanced Calculus*. New York: McGraw-Hill. - Buss, S., and J. Fillmore. 2001.
Spherical averages and applications to spherical splines and interpolation.
*ACM Transactions on Graphics**20*(2), 95–126. - DeRose, T. D. 1989.
*A Coordinate-Free Approach to Geometric Programming*.*Math for SIGGRAPH, SIGGRAPH Course Notes #23.*Also available as Technical Report No. 89-09-16, Department of Computer Science and Engineering, University of Washington, Seattle. - Eberly, D.
A fast and accurate algorithm for computing SLERP.
*Journal of Graphics, GPU, and Game Tools**15*(3), 161–76. - Goldman, R. 1985.
Illicit expressions in vector algebra.
*ACM Transactions on Graphics**4*(3), 223–43. - Higham, N. 1986.
Computing the polar decomposition—with applications.
*SIAM Journal of Scientific and Statistical Computing**7*(4), 1160–74. - Lang, S. 1986.
*An Introduction to Linear Algebra*. New York: Springer-Verlag. - Mann, S., N. Litke, and T. DeRose. 1997. A coordinate free geometry ADT. Research Report CS-97-15, Computer Science Department, University of Waterloo.
- Moore, R. E. 1966.
*Interval Analysis*. Englewood Cliffs, New Jersey: Prentice Hall. - Ramamoorthi, R., and A. Barr. 1997.
Fast construction of accurate quaternion splines.
In
*Proceedings of SIGGRAPH ’97,*Computer Graphics Proceedings, Annual Conference Series, Los Angeles, 287–92. - Rogers, D. F., and J. A. Adams. 1990.
*Mathematical Elements for Computer Graphics*. New York: McGraw-Hill. - Schneider, P. J., and D. H. Eberly. 2003.
*Geometric Tools for Computer Graphics*. San Francisco: Morgan Kaufmann. - Shoemake, K. 1985.
Animating rotation with quaternion curves,
*Computer Graphics (SIGGRAPH ’85 Proceedings),*Volume 19, 245–54. - Shoemake, K. 1991.
Quaternions and 4x4 matrices.
In J. Arvo (Ed.),
*Graphics Gems II,*351–54. San Diego: Academic Press. - Shoemake, K. 1994a.
Polar matrix decomposition.
In P. Heckbert (Ed.),
*Graphics Gems IV,*207–21. San Diego: Academic Press. - Shoemake, K. 1994b.
Euler angle conversion.
In P. Heckbert (Ed.),
*Graphics Gems IV,*222–29. San Diego: Academic Press. - Shoemake, K., and T. Duff. 1992.
Matrix animation and polar decomposition.
In
*Proceedings of Graphics Interface 1992*, 258–64. - Stolfi, J. 1991.
*Oriented Projective Geometry*. San Diego: Academic Press. - Turkowski, K. 1990b.
Properties of surface-normal transformations.
In A. S. Glassner (Ed.),
*Graphics Gems I,*539–47. San Diego: Academic Press. - Wallis, B. 1990.
Forms, vectors, and transforms.
In A. S. Glassner (Ed.),
*Graphics Gems I,*533–38. San Diego: Academic Press.