
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.

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.

Craig Kolb
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 
algorithms.  

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 (kolb@yale.edu).
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.dir             / Two-Dimensional Clipping: 
                         A Vector-Based Approach
AALines.c              / Rendering Anti-Aliased Lines
AAPolyScan.c           / Fast Anti-Aliasing Polygon
                         Scan Conversion
Albers.c               / Albers Equal-Area Conic Map
                         Projection
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 
                         Intersection Checking 
CircleRect.c           / Fast Circle-Rectangle Intersection
                         Checking 
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 
                         CORDIC Iterations
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 
                         the Hypotenuse
Interleave.c           / Bit Interleaving for Quad- 
                         or Octrees
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 
                         Transformation Matrices
Median.c               / Median Finding on a 3x3 Grid
NearestPoint.c         / Solving the 
                         Nearest-Point-On-Curve Problem
                         and
                         A Bezier Curve-Based Root-Finder
OrderDither.c          / Ordered Dithering
PixelInteger.c         / Proper Treatment of Pixels 
                         As Integers
PntOnLine.c            / A Fast 2D Point-On-Line Test
PolyScan.dir           / Generic Convex Polygon 
                         Scan Conversion and Clipping
Quaternions.c          / Using Quaternions for Coding 
                         3D Transformations
RGBTo4Bits.c           / Mapping RGB Triples Onto Four Bits
RayBox.c               / Fast Ray-Box Intersection
RayPolygon.c           / An Efficient Ray-Polygon 
                         Intersection
Roots3And4.c           / Cubic and Quartic Roots
SeedFill.c             / A Seed Fill Algorithm
SquareRoot.c           / A High-Speed, Low-Precision 
                         Square Root
Sturm.dir              / Using Sturm Sequences to Bracket 
                         Real Roots of Polynomial Equations
TransBox.c             / Transforming Axis-Aligned 
                         Bounding Boxes
TriPoints.c            / Generating Random Points 
                         In Triangles   
ViewTrans.c            / 3D Viewing and Rotation Using
                         Orthonormal Bases
