# 2 Geometry and Transformations

Almost all nontrivial graphics programs are built on a foundation of
geometric classes. These classes represent mathematical constructs like
points, vectors, and rays. Because these classes are ubiquitous throughout
the system, good abstractions and efficient implementations are critical.
This chapter presents the interface to and implementation of `pbrt`’s
geometric foundation. Note that these are not the classes that represent
the actual scene geometry (triangles, spheres, etc.); those classes are the
topic of Chapter 3.

The geometric classes in this chapter are defined in the files
`core/geometry.h` and
`core/geometry.cpp` in the
`pbrt` distribution, and the implementations of transformation matrices
(Section 2.7) are in the files
`core/transform.h` and
`core/transform.cpp`.