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