The
Geometry Toolbox For Graphics And Modeling
Author:
Gerald Farin & Dianne Hansford
Publisher: A.K. Peters
ISBN: 1568810741
Purchasing: [Amazon.Com]
 RRP US$49
Reviewed: 10th August 2002
Front
Cover Shot:
Overview
Geometry,
and it's related math, is the basic principle
behind the majority of computer graphics  2D and
3D. When you (or an artist) created a 3D mesh the
tools used have the basis in manipulating
geometric shapes (typically triangles); this mesh
then gets loaded into your D3D or OpenGL program
where you send it to be rendered as a list of
triangles. These triangles are then taken and
transformed using matrices from model space to
screen space  again, geometric mathematics.
Looking
from another point of view, letting your users
interact with your 3D environments  object
picking, collision detection and ray tracing. All
are pure mathematics, but because 3D worlds are
(typically) made up of triangles the problem(s)
become more of a geometry problem.
This
is where this book is intended to fit in 
covering the geometric mathematics involved in
computer graphics.
The
sharpest tool in the box
The
book, as the title suggests, is intended to be a
toolbox of useful formulae, algorithms and theory
for a programmer (or designer) working with 2D and
3D geometry.
The
first 9 chapters cover the fundamental
mathematical theory behind 2D geometry  for a
beginner it's far easier to learn the concepts in
a 2D world before jumping into 3D. The
later chapters move into 3D geometry  in some
cases reiterating the content of the earlier 2D
sections, but for 3D. There are several equations
and algorithms that have little, if no meaning in
2D space (likewise with some that mean nothing in
3D space) so there is plenty of fresh content
either side of this small divider.
The
organization throughout the actual text is very
clear  sketches appear in the outside margin, and
mathematical equations are obviously separate from
the main text body. There are no color plates
included in this book, but there are plenty of
blackandwhite pictures/renders that are used to
further illustrate ideas presented in the main
text.
Content
This
book is heavily orientated towards firstyear
undergraduate software engineers/computer
scientists. It is not necessary to be at this
level  but you definitely need to be close.
Studying math up to preuniversity level is a
definite must. Whilst transformations and vectors
are well covered early on in the book, it will
really help you if you at least know the basics of
what a matrix is, what it does, and how it works.
The
text is fairly fast paced and doesn't waste time (unnecessarily)
covering content from earlier in the book. It is
quite common to follow a proof for a formula and
one (or more) steps to be based on previous work
with a note "see section  for more
details"; which, unless you're on top of the
game you may find yourself flicking backandforth
through the book to understand one particular
topic. The majority of algorithms and/or equations
to sum up to a usable set of equations  which you
can use regardless of whether you fully understand
how you got there.
Monkey
see, monkey do
This
book is, as mentioned, a universitylevel text 
and they are rarely as enjoyable to read as
nonacademic ("normal"!) books. The one
area where this becomes irritating is in the lack
of practical/applied examples.
As
good as the theory is, and the final summary is
always usable, it would be so much easier to learn
from if there was a worked example to go with the
summary (or in the proof). Obviously, this is
either rather difficult or longwinded for some of
the topics covered  but there are plenty of
missed opportunities where it would not have been
difficult to add.
In
some respects it is a good thing that few examples
are included, given the nature of the book it
would probably have required the authors to adopt
a programming language with which to demonstrate
(for some, not all of the topics). As it currently
stands, there is a small section on using
PostScript for a teaching aid/resource, but the
rest of the book remains languageindependent. Any
decent programming language can handle the math
covered here  VB, C, C++ and Java developers
alike can use the content of this book.
In
Conclusion
This
book is definitely for advanced multimedia
programmers  apart from the prerequisite
knowledge for understanding the content, a
beginner is unlikely to know how/where to apply
the tools presented in this toolbox. For those
advanced programmers out there, this is a solid
book that will prove to be a very useful resource
timeandtime again.
Good
Things 
Bad
Things 
•
Programming language independent 
•
Reasonable bibliography, but no
substantial reference list. 
•
Very thorough coverage of the field. 
•
A few more worked examples would have been
nice 
•
Covers both 2D and 3D geometric
mathematics. 
•
Quite heavy on mathematical notation, if
you aren't familiar with mathematical
symbols you might get lost. 
•
Works well as a reference book, and as a
normal covertocover reading book. 

•
Answers lots of questions you regularly
see on multimedia programming message
boards. 

•
Well presented  page layout and writing
style. 

