Practical
Algorithms For 3D Computer Graphics
Author:
R. Stuart Ferguson
Publisher: A.K. Peters
ISBN: 1568811543
Purchasing: [Amazon.Com]
 RRP US$49
Reviewed: 6th August 2002
Front
Cover Shot:
Overview
3D
computer graphics programming, be it CAD design or
interactive games, is made up of two main parts:
firstly is the core math and algorithms, secondly
is learning and usage of a 3D renderer/hardware
interface to display the image.
To
become a master of computer graphics it is
necessary to learn both areas  you can learn all
you like about Direct3D or OpenGL (as two
examples) but without the fundamental math and
programming algorithms you won't go the full
distance. This book deals with those algorithms
and mathematical equations you will need to
satisfy this relationship.
Anyone
who's spent much time on/around game development
message boards will be aware that you regularly
(maybe you've even posted similar questions) get
people asking how to do some theoretical graphics
function  eg, terrain following for heightmapped
terrain. You'll then get someone reply who says
you need to use ... equation(s)/Algorithm(s). The
original poster may well then say
"What?" or "How?"... This book
goes a long way to answering these sorts of
questions  you want to know how to implement
boolean modeling? an introduction to Inverse
Kinematics...
As
another example  many of you may be familiar with
the Game Programming Gems series of books (so far
up to volume 3). This book is of a similar nature
 but far more advanced, and far more
theoretical/math orientated. You can use this book
to look up specific algorithms, equations or
techniques  or you can read it from cover to
cover and try to retain a general knowledge of the
various algorithms presented.
Wouldn't
a searching algorithm be useful?
The
book itself is just over 530 pages in length, not
huge by other technicalmanual/text standards.
However, it manages to fit no less than 70
sections. While not every single one presents a
totally new algorithm, it does make for a very
impressive and complete coverage of the most
common algorithms at use in 3D graphics.
All
of the algorithms/sections can be subclassed into
3 main areas:
• foundation/fundamental mathematics (vectors,
planes, lines, transformations)
• generalized graphics algorithms (polygonal
modeling, procedural textures, ray tracing,
animation)
• applied algorithms (Graphics rendering with
OpenGL and Direct3D)
This
book, as mentioned, is an advanced text  you need
some foundation in graphics (preferably 3D) to
make much use of it, and to understand it you
really need to have a good allround understanding
of pure mathematics (to a preuniversity level
should do). The beginning of the book covers much
of the foundation necessary for the book  it will
serve as a good reminder or refresher course, but
it won't properly teach you the fundamentals.
Academic
level text
This
book would probably quite easily find itself on
the recommended reading list for university
courses in computer science, and it is definitely
written in this style. It is a good book to read 
unlike many textbook like resources which are
full of complex equations and diagrams. There are
a lot of diagrams and equations in this book, but
there is also plenty of normal writing and
explanation.
As
mentioned, it helps to have reasonable experience
of working with computer graphics (even if it is
only simple level stuff), but you don't
necessarily need to even know what Boolean
Modeling is before reading the chapter that covers
it.
The
only area that really does let the book down is
it's last chapter on Direct3D; whilst it's a nice
gesture (there is one for OpenGL as well) it uses
the really quite ancient Retained Mode
interfaces. These were fairly old when it came to
Direct3D6, and had were only left in Direct3D7 for
compatibility (they weren't changed) and come
Direct3D8 they're completely gone (and aren't
coming back). Retained Mode did have it's uses 
but not many once you've learnt/used the Immediate
Mode variation. I appreciate, it would possibly
have been the best choice when the book was
written  but as of now, it's not much use to
anyone.
An Additional Resource
As
with many other books reviewed on this website, a
CD is included. This is particularly useful for
this type of book  many of the applications are
very generalized (they have to be), and seeing
some working code is often helpful. Very few of
them have properly working examples, most are just
source code files.
However,
they are all in C/C++  which doesn't matter
hugely, as this sort of source code is easily
portable to any language (VB, Java, C# etc...).
In
Conclusion
This
book would make a great resource for someone who's
been roundtheblock with 3D graphics, know's what
they're doing. It isn't a book for beginners,
apart from being too complicated for a 3D graphics
"newbie" the general content is of
little use  there are many algorithms here that
only an experienced programmer would know what to
do with, and why they need them.
Good
Things 
Bad
Things 
•
Nicely segmented and divided up into
chapters. 
•
An advanced text with only a few
realworld examples. 
•
Works brilliantly as a reference book, and
also as a general reading book. 
•
Quite a high level of math/programming
skill required as a prerequisite. 
•
Covers pretty much all the major
"areas" of 3D graphics
algorithms 
•
Applied Direct3D section is not
particularly relevant anymore. 
•
A good reference list at the end of
chapters for those wishing to read
further. 

•
A good CD included to back up the text. 

