# Category : C Source Code

Archive : GRAFGEM1.ZIP

Filename : README.TOO

[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

shell "sh".

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.

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 ([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

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 / 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 / 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