xiv PREFACE
transformations. This text lls in those gaps and looks behind the results enough to
understand how they t into the rest of mathematics. It does not rely on the rigor-
ous theorem/proof format, and instead uses intuition and example to develop careful
results. Although the mathematics is interesting in its own right, the text hopefully
does not lose sight of the ultimate goal which is to produce interesting and useful
images.
There are plenty of examples and exercises to help x the ideas and several sug-
gestions of other directions to investigate. At the end of each chapter (except the last),
there is a section titled Complements and Details that collects a few historical notes,
several calculation details, and occasionally some ideas which may lead to interest-
ing tangents. The text is independent of any particular graphics system, but it does
have OpenGL in mind when presenting details of the viewing frustum in the chapter
on visibility. Otherwise, there are programming exercises throughout, which can be
done with almost any language and graphics interface.
Chapters 1–3 carefully develop vector geometry assuming very little background.
They highlight the difference between vectors and points and emphasize the connec-
tion between geometry and algebra. Coordinate-free expressions and homogeneous
coordinates are both introduced.
Chapters 4 and 5 examine transformations, both linear and afne. Along the way,
they develop basic matrix algebra, construct various transformations including the
perspective transformation, examine coordinate systems (world, local, and camera),
unravel Euler angles and quaternions, and consider alternate coordinate systems.
Chapters 6 and 7 develop modeling techniques through an exploration of poly-
gons (particularly triangles), polyhedra, parametric description of curves, Lagrange
interpolation, Bézier curves, splines, nonuniform rational B-splines (NURBS), and
surface construction.
Rendering is covered in Chapters 8 and 9, starting with a look at the view frus-
tum, hidden surface algorithms, and simple ray tracing. Then an elementary lighting
model is examined in detail before introducing shading, shadows, the bidirectional
reectance distribution function (BRDF), the basics of radiosity, and texture mapping.
The nal chapter collects three separate mathematical techniques that repre-
sent arguably different paradigms. Bresenham’s algorithm starts a discussion of
pixel-based mathematics, Perlin’s noise prompts a visit to random distributions, and
L-systems offer an alternative algebraic description of organic forms.
When used as a course text, the rst ve chapters as well as selections from the
last ve could serve to cover an appropriate amount of material. The idea is to rely
on the text for the mathematics and supplement it with algorithms perhaps specic
to the available graphics systems. There are both mathematical and programming
exercises in each chapter. Throughout the examples in the text, the calculation results
are rounded to two or three decimal places. This still leads to round-off error, and
a good exercise for the student is to reconcile any perceived discrepancies in the
results.
In the way of acknowledgement, rst note that most of the gures in the text
were prepared using Mathematica
®
. Second, many thanks go to my graphics stu-
dents over the years who prompted me to learn the nuances of the subject and who