The book:
title: Graphics Gems IV
editor: Paul S. Heckbert
published: AP Professional (Academic Press), Boston, 1994
price: $49.95
575 pages, comes with either MAC or IBM floppy disk
ISBN 0-12-336156-7 with MAC floppy
ISBN 0-12-336155-9 with IBM (DOS) floppy (5.25")
Below are two things:
* the preface to the book, to explain what it is about
* the table of contents
======================================================================
PREFACE
This book is a cookbook for computer graphics programmers, a kind of
``Numerical Recipes'' for graphics. It contains practical techniques
that can help you do 2D and 3D modeling, animation, rendering, and
image processing. The 52 articles, written by 54 authors worldwide,
have been selected for their usefulness, novelty, and simplicity. Each
article, or ``Gem'', presents a technique in words and formulas, and
also, for most of the articles, in C or C++ code as well. The code is
available in electronic form on the IBM or Macintosh floppy disk in the
back pocket of the book, and is available on the Internet via FTP (see
address below). The floppy disk also contains all of the code from the
previous volumes: Graphics Gems I, II, and III. You are free to use
and modify this code in any way you like.
A few of the Gems in this book deserve special mention because they
provide implementations of particularly useful, but non-trivial
algorithms. Gems IV.6 and IV.8 give very general, modular code to
polygonize parametric and implicit surfaces, respectively. With these
two and a polygon renderer, you could probably display 95% of all
computer graphics models! Gem I.5 finds 2D Voronoi diagrams or
Delaunay triangulations. These data structures are very widely used
for mesh generation and other geometric operations. In the area of
interaction, Gem III.1 provides code for control of orientation in
3-D. This could be used in interactive 3-D modelers. Finally, Gem I.8
gives code to find collisions of polyhedra, an important task in
physically-based modeling and animation.
This book, like the previous three volumes in the Graphics Gems series,
lies somewhere between the media of textbook, journal, and computer
bulletin board. Textbooks explain algorithms very well, but if you are
doing computer graphics programming, then they may not provide what you
need: an implementation. Similarly, technical journals seldom present
implementations, and they are often much more theoretical than a
programmer cares for. The third alternative, computer bulletin boards
such as the USENET news group comp.graphics.algorithms, occasionally
contain good code, but because they are unmoderated and unedited, they
are so flooded with queries that it is tedious to find useful
information. The Graphics Gems series is an attempt at a middle
ground, where programmers worldwide can contribute graphics techniques
that they have found useful, and the best of these get published. Most
of the articles are written by the inventors of the techniques, so you
will learn their motivations and see their programming techniques
firsthand. Also, the implementations have been selected for their
portability; they are not limited to UNIX, IBM, or Macintosh systems.
Most of them will compile and run, perhaps with minor modifications, on
any computer with a C or C++ compiler.
Assembling this book has been a collaborative process involving many
people. In the Spring of 1993, a call for contributions was
distributed worldwide via electronic mail and word of mouth.
Submissions arrived in the Summer of 1993. These were read by me and
many were also read by one or more of my outside reviewers: Eric
Haines, Andrew Glassner, Chandrajit Bajaj, Tom Duff, Ron Goldman, Tom
Sederberg, David Baraff, Jules Bloomenthal, Ken Shoemake, Mike Kass,
Don Mitchell, and Greg Ward.
Of the 155 articles submitted, 52 were accepted for publication. These
were revised and, in most cases, formatted into Latex by the authors.
Coordinating the project at Academic Press in Cambridge, Massachusetts,
were Jenifer Niles and Brian Miller. Book composition was done by Rena
Wells at Rosenlaui Publishing Services in Houston, Texas, and the cover
image was made by Eben Ostby of Pixar, in Richmond, California. I am
very thankful to all of these people and to the others who worked on
this book for helping to make it a reality. Great thanks also to the
"Graphics Gems" series editor, Andrew Glassner, for inviting me to be
editor for this volume, and to my wife, Bridget Johnson-Heckbert, for
her patience.
There are a few differences between this book and the previous volumes
of the series. Organizationally, the code and bibliographies are not
collected at the back of the book, but appear with the text of the
corresponding article. These changes make each Gem more
self-contained. The book also differs in emphasis. Relative to the
previous volumes, I have probably stressed novelty more, and simplicity
less, preferring an implementation of a complex computer graphics
algorithm over formulas from analytic geometry, for example.
In addition to the "Graphics Gems" series, there are several other good
sources for practical computer graphics techniques. One of these is
the column ``Jim Blinn's Corner'' that appears in the journal "IEEE
Computer Graphics and Applications". Another is the book "A
Programmer's Geometry", by Adrian Bowyer and John Woodwark
(Butterworth's, London, 1983), which is full of analytic geometry
formulas. A mix of analytic geometry and basic computer graphics
formulas is contained in the book "Computer Graphics Handbook:
Geometry and Mathematics" by Michael E. Mortensen (Industrial Press,
New York, 1990). Another excellent source is, of course, graphics
textbooks.
Code in this book is available on the World Wide Web at
ftp://ftp.princeton.edu/pub/Graphics/GraphicsGems/GemsIV/ .
Or by anonymous FTP from ftp.princeton.edu in the directory
pub/Graphics/GraphicsGems/GemsIV. [Note: in 1994 the correct ftp
machine was princeton.edu]. The code for other "Graphics Gems" books
is also available nearby. Bug reports should be submitted as described
in the README file there.
Paul Heckbert, March 1994, updated May 1998.
======================================================================
TABLE OF CONTENTS
Below is the table of contents for "Graphics Gems IV". This table also
serves as an index to the code in the FTP collection. Note that every
article has text that appears in the book but not in the FTP archive,
and some articles contain no C or C++ code.
file or book chapter title and author
directory chapter
------------------------------------------------------------
I POLYGONS AND POLYHEDRA
centroid.c I.1 Centroid of a Polygon
Gerard Bashein and Paul R. Detmer
convex_test/ I.2 Testing the Convexity of a Polygon
Peter Schorn and Frederick Fisher
ptpoly_weiler/ I.3 An Incremental Angle Point in Polygon Test
Kevin Weiler
ptpoly_haines/ I.4 Point in Polygon Strategies
Eric Haines
delaunay/ I.5 Incremental Delaunay Triangulation
Dani Lischinski
vert_norm/ I.6 Building Vertex Normals from an Unstructured Polygon
List
Andrew Glassner
I.7 Detecting Intersection of a Rectangular Solid and a
Convex Polyhedron
Ned Greene
collide.c I.8 Fast Collision Detection of Moving Convex Polyhedra
Rich Rabbitz
------------------------------------------------------------
II GEOMETRY
II.1 Distance to an Ellipsoid
John C. Hart
dist_fast.c II.2 Fast Linear Approximations of Euclidean Distance in
Higher Dimensions
Yoshikazu Ohashi
outcode/ II.3 Direct Outcode Calculation for Faster Clip Testing
Walt Donovan and Tim Van Hook
sph_poly.c II.4 Computing the Area of a Spherical Polygon
Robert D. Miller
II.5 The Pleasures of `Perp Dot' Products
F. S. Hill, Jr.
II.6 Geometry for N-Dimensional Graphics
Andrew J. Hanson
------------------------------------------------------------
III TRANSFORMATIONS
arcball/ III.1 Arcball Rotation Control
Ken Shoemake
III.2 Efficient Eigenvalues for Visualization
Robert L. Cromwell
inv_fast.c III.3 Fast Inversion of Length- and Angle-Preserving Matrices
Kevin Wu
polar_decomp/ III.4 Polar Matrix Decomposition
Ken Shoemake
euler_angle/ III.5 Euler Angle Conversion
Ken Shoemake
III.6 Fiber Bundle Twist Reduction
Ken Shoemake
------------------------------------------------------------
IV CURVES AND SURFACES
data_smooth/ IV.1 Smoothing and Interpolation with Finite Differences
Paul H. C. Eilers
IV.2 Knot Insertion using Forward Differences
Phillip Barry and Ron Goldman
IV.3 Converting a Rational Curve to a Standard Rational
Bernstein-Bezier Representation
Chandrajit Bajaj and Guoliang Xu
curve_isect/ IV.4 Intersecting Parametric Cubic Curves by Midpoint
Subdivision
R. Victor Klassen
patch_conv.C IV.5 Converting Rectangular Patches into Bezier Triangles
Dani Lischinski
nurb_polyg/ IV.6 Tessellation of NURB Surfaces
John W. Peterson
IV.7 Equations of Cylinders and Cones
Ching-Kuang Shene
implicit.c IV.8 An Implicit Surface Polygonizer
Jules Bloomenthal
------------------------------------------------------------
V RAY TRACING
V.1 Computing the Intersection of a Line and a Cylinder
Ching-Kuang Shene
ray_cyl.c V.2 Intersecting a Ray with a Cylinder
Joseph M. Cychosz and Warren N. Waggenspack, Jr.
vox_traverse.c V.3 Voxel Traversal along a 3D Line
Daniel Cohen
multi_jitter/ V.4 Multi-Jittered Sampling
Kenneth Chiu, Peter Shirley, and Changyaw Wang
minray/ V.5 A Minimal Ray Tracer
Paul S. Heckbert
------------------------------------------------------------
VI SHADING
VI.1 A Fast Alternative to Phong's Specular Model
Christophe Schlick
VI.2 R.E versus N.H Specular Highlights
Frederick Fisher and Andrew Woo
VI.3 Fast Alternatives to Perlin's Bias and Gain Functions
Christophe Schlick
VI.4 Fence Shading
Uwe Behrens
------------------------------------------------------------
VII FRAME BUFFER TECHNIQUES
VII.1 XOR-Drawing with Guaranteed Contrast
Manfred Kopp and Michael Gervautz
VII.2 A Contrast-Based Scalefactor for Luminance Display
Greg Ward
dyn_range/ VII.3 High Dynamic Range Pixels
Christophe Schlick
------------------------------------------------------------
VIII IMAGE PROCESSING
emboss.c VIII.1 Fast Embossing Effects on Raster Image Data
John Schlag
coons_warp.c VIII.2 Bilinear Coons Patch Image Warping
Paul S. Heckbert
convolve.c VIII.3 Fast Convolution with Packed Lookup Tables
George Wolberg and Henry Massalin
thin_image.c VIII.4 Efficient Binary Image Thinning using Neighborhood Maps
Joseph M. Cychosz
clahe.c VIII.5 Contrast Limited Adaptive Histogram Equalization
Karel Zuiderveld
mrsfoley.im VIII.6 Ideal Tiles for Shading and Halftoning
Alan Wm Paeth
------------------------------------------------------------
IX GRAPHIC DESIGN
IX.1 Placing Text Labels on Maps and Diagrams
Jon Christensen, Joe Marks, and Stuart Shieber
graph_layout/ IX.2 Dynamic Layout Algorithm to Display General Graphs
Laszlo Szirmay-Kalos
------------------------------------------------------------
X UTILITIES
trilerp.c X.1 Tri-linear Interpolation
Steve Hill
interp_fast.c X.2 Faster Linear Interpolation
Steven Eker
vec_mat/ X.3 C++ Vector and Matrix Algebra Routines
Jean-Francois Doue
GraphicsGems.c X.4 C Header File and Vector Library
GraphicsGems.h Andrew Glassner and Eric Haines
======================================================================
Paul Heckbert ph@cs.cmu.edu
Computer Science Dept., Carnegie Mellon University
5000 Forbes Ave, Pittsburgh PA 15213-3891, USA
more about Graphics Gems IV book