[This archive last updated Wed Dec 12 20:45:32 EST 1990]
This directory contains the most up-to-date source to all of the Graphics
Gems. All known bugs fixes have been applied, and a number of formatting
problems have be fixed.
Many of the files have been renamed to accomodate those of you who work
on systems that require file names less than 15 characters in length.
In addition, those gems that consist of more than one source file have
been split off into their own subdirectories.
The files Part??.Z are compressed "shar" files that collectively contain
all of the gems. To unpack them, you will need "uncompress" and the UN*X
Gems.zoo is a "zoo" archive containing all of the gems. To unpack,
you will need the "zoo" utility.
Makefiles are provided that create stand-alone programs, many object
files, and "gemlib.a". This Graphics Gem Library is created for
compilation-testing only, and is not intended to be a usable library
(although it may become so in the future). Indeed, many of the Gems
will not compile or run properly without additional source code.
See the Makefile for more details.
16 Aug 1990
Each Gem is made available on an as-is basis; although considerable effort
has been expended to check the programs as originally designed and their
release in electronic form, neither the authors nor the publisher make any
guarantee or warrantee as to the correctness of any of these programs or
The authors and the publisher hold no copyright on any of these files; this
source code is public domain, and is freely available to the entire
computer graphics community for study, use, and modification. We do
request that the comment at the top of each file, identifying the
original author and its original publication in the book Graphics
Gems, be retained in all programs that use these files.
Additional submissions (bug fixes, skeleton programs, auxiliary routines,
etc.) may be directed to the site administrator, Craig Kolb ([email protected]).
He will determine on a case-by-case basis if a particular submission should
be included in this archive. If accepted, these routines will be made
available in a companion directory.
The table below gives the correspondence between each source
file in this directory and the name of the Gem it implements.
Each implementation illustrates one way to realize the
techniques described by the accompanying Gem in the book.
The files here contain only the source code for that
realization. For a more complete description of the
algorithms and their applications see the Gems of the same
name in the first 11 Chapters of the book.
---------- header files ----------
GraphicsGems.h / Graphics Gems C Header File
---------- C code ----------
2DClip / Two-Dimensional Clipping:
A Vector-Based Approach
AALines / Rendering Anti-Aliased Lines
AAPolyScan.c / Fast Anti-Aliasing Polygon
Albers.c / Albers Equal-Area Conic Map
BinRec.c / Recording Animation in Binary Order
For Progressive Temporal Refinement
BoundSphere.c / An Efficient Bounding Sphere
BoxSphere.c / A Simple Method for Box-Sphere
CircleRect.c / Fast Circle-Rectangle Intersection
ConcaveScan.c / Concave Polygon Scan Conversion
DigitalLine.c / Digital Line Drawing
Dissolve.c / A Digital "Dissolve" Effect
DoubleLine.c / Symmetric Double Step Line Algorithm
FastJitter.c / Efficient Generation of Sampling
Jitter Using Look-up Tables
FitCurves.c / An Algorithm for Automatically
Fitting Digitized Curves
FixedTrig.c / Fixed-Point Trigonometry with
Forms.c / Forms, Vectors, and Transforms
GGVecLib.c / 2D And 3D Vector C Library
HSLtoRGB.c / A Fast HSL-to-RGB Transform
Hash3D.c / 3D Grid Hashing Function
HypotApprox.c / A Fast Approximation to
Interleave.c / Bit Interleaving for Quad-
Label.c / Nice Numbers for Graph Labels
LineEdge.c / Fast Line-Edge Intersections On
A Uniform Grid
MatrixInvert.c / Matrix Inversion
MatrixOrtho.c / Matrix Orthogonalization
MatrixPost.c / Efficient Post-Concatenation of
Median.c / Median Finding on a 3x3 Grid
NearestPoint.c / Solving the
A Bezier Curve-Based Root-Finder
OrderDither.c / Ordered Dithering
PixelInteger.c / Proper Treatment of Pixels
PntOnLine.c / A Fast 2D Point-On-Line Test
PolyScan / Generic Convex Polygon
Scan Conversion and Clipping
Quaternions.c / Using Quaternions for Coding
RGBTo4Bits.c / Mapping RGB Triples Onto Four Bits
RayBox.c / Fast Ray-Box Intersection
RayPolygon.c / An Efficient Ray-Polygon
Roots3And4.c / Cubic and Quartic Roots
SeedFill.c / A Seed Fill Algorithm
SquareRoot.c / A High-Speed, Low-Precision
Sturm / Using Sturm Sequences to Bracket
Real Roots of Polynomial Equations
TransBox.c / Transforming Axis-Aligned
TriPoints.c / Generating Random Points
ViewTrans.c / 3D Viewing and Rotation Using