Projective Geometry

Eric Bainville - Oct 2007

In these pages, I present an introduction to projective geometry, from the point of view of the 3D graphics programmer. 3D projective geometry is the underlying model of many 3D graphics libraries, such as OpenGL or DirectX, because it provides an unified way of handling all Euclidean, affine, and projective transformations, including the perspective projection. It also handles well the case of objects at infinity.

The projective space can be defined in various ways. The book of J.G. Semple and G. T. Kneebone (Algebraic Projective Geometry, Oxford Classic Texts) provides a definition based on coordinates. The book of H. S. M. Coxeter (Projective Geometry, Springer) provides an axiomatic definition, and makes the link to coordinates only at the end of the book. These two approaches define the same projective space. I recommend taking the time to read these books.

For the 3D programmer, the coordinates based approach is obviously the one to use, and it will be presented in the following chapters. The reader is supposed to have a basic knowledge of linear algebra. I won't give formal proofs of the various properties exposed here. What I describe here is the real projective space of dimension 3.