This message is a "bib" file for the book "Graphics Gems IV", which I edited.

The book is a collection of practical techniques for computer graphics

and image processing.

title: Graphics Gems IV

editor: Paul S. Heckbert

published: 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")

You could order the book from, for example:

Computer Literacy Bookshop, San Jose CA,

ord...@clbooks.com, 408-435-1118

Below is a list of bib entries for each chapter of the book,

with keywords and my summary of the article's content.

Reading the titles and summaries should give you a pretty good idea

of the content of the book.

@BOOK{Heckbert94gems,

TITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={computer graphics, image processing},

NOTE={comes with either MAC or DOS floppy},

AUTHOR={Gerard Bashein and Paul R. Detmer},

TITLE={Centroid of a Polygon},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={3-6},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={polygon area, polygon centroid},

SUMMARY={

Gives formulas and code to find the centroid (center of mass) of a

polygon. This is useful when simulating Newtonian dynamics. Contains

C code.

}

AUTHOR={Peter Schorn and Frederick Fisher},

TITLE={Testing the Convexity of a Polygon},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={7-15},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={computational geometry, concave polygon},

SUMMARY={

Gives an algorithm and code to determine if a polygon is convex,

non-convex (concave but not convex), or non-simple

(self-intersecting). For many polygon operations, faster algorithms

can be used if the polygon is known to be convex. This is true when

scan converting a polygon and when determining if a point is inside a

polygon, for instance. Contains C code.

}

AUTHOR={Kevin Weiler},

TITLE={An Incremental Angle Point in Polygon Test},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={16-23},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={computational geometry, inclusion testing},

SUMMARY={

Provides an algorithm for testing if a point is inside a concave

polygon, a task known as point inclusion testing in computational

geometry. Point-in-polygon testing is a basic task when ray tracing

polygonal models, so these methods are useful for 3D as well as 2D

graphics. Contains C code.

}

AUTHOR={Eric Haines},

TITLE={Point in Polygon Strategies},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={24-46},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={computational geometry, inclusion testing,

ray-polygon intersection testing},

SUMMARY={

Provides algorithms for testing if a point is inside a polygon, a task

known as point inclusion testing in computational geometry.

Point-in-polygon testing is a basic task when ray tracing polygonal

models, so these methods are useful for 3D as well as 2D graphics.

Haines surveys a number of algorithms for point inclusion testing in

both convex and concave polygons, with empirical speed tests and

practical optimizations. Contains C code.

}

AUTHOR={Dani Lischinski},

TITLE={Incremental {D}elaunay Triangulation},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={47-59},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={mesh generation, polygonization, Voronoi diagram},

SUMMARY={

Gives some code to solve a very important problem: finding Delaunay

triangulations and Voronoi diagrams in 2D. These two geometric

constructions are useful for triangular mesh generation and for nearest

neighbor finding, respectively. Triangular mesh generation comes up

when doing interpolation of surfaces from scattered data points, and in

finite element simulations of all kinds, such as radiosity. Voronoi

diagrams are used in many computational geometry algorithms. Contains

C++ code.

}

AUTHOR={Andrew Glassner},

TITLE={Building Vertex Normals from an Unstructured Polygon List},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={60-73},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={smooth shading, topology, polyhedron},

SUMMARY={

Solves a fairly common rendering problem: if one is given a set of

polygons in raw form, with no topological (adjacency) information, and

asked to do smooth shading (Gouraud or Phong shading) of them, one must

infer topology and compute vertex normals. Contains C code.

}

AUTHOR={Ned Greene},

TITLE={Detecting Intersection of a Rectangular Solid and a Convex Polyhedron},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={74-82},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={collision detection, octree, computational geometry},

SUMMARY={

Presents an optimized technique to test for intersection between a

convex polyhedron and a box. This is useful when comparing bounding

boxes against a viewing frustum in a rendering program, for instance.

Contains pseudocode.

}

AUTHOR={Rich Rabbitz},

TITLE={Fast Collision Detection of Moving Convex Polyhedra},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={83-109},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={animation, collision detection, computational geometry, polyhedron},

SUMMARY={

A turn-key piece of software that solves a difficult but basic problem

in physically based animation and interactive modeling. Contains C

code.

}

AUTHOR={John C. Hart},

TITLE={Distance to an Ellipsoid},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={113-119},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={ray tracing, ellipse},

SUMMARY={

Gives the formulas necessary to find the distance from a point to an

ellipsoid, or from a point to an ellipse. These formulas can be useful

for geometric modeling or for ray tracing.

}

AUTHOR={Yoshikazu Ohashi},

TITLE={Fast Linear Approximations of {E}uclidean Distance in Higher Dimensions},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={120-124},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={integer arithmetic, square root},

SUMMARY={

Provides optimized formulas for approximating Euclidean distance in two

or more dimensions without square roots. Contains C code.

}

AUTHOR={Walt Donovan and Tim Van Hook},

TITLE={Direct Outcode Calculation for Faster Clip Testing},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={125-131},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={IEEE floating point arithmetic, line clipping},

SUMMARY={

A clever optimization of clip testing that exploits the properties

of IEEE floating point format. Techniques are described to compute the

``outcodes'' needed for line clipping using only integer arithmetic.

Contains C code.

}

AUTHOR={Robert D. Miller},

TITLE={Computing the Area of a Spherical Polygon},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={132-137},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={cartography, Earth},

SUMMARY={

Gives the formulas needed to find the area of a polygon on a sphere

that is bounded by great circle arcs. This is useful in cartography.

Contains C code.

}

AUTHOR={F. S. {Hill Jr.}},

TITLE={The Pleasures of 'Perp Dot' Products},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={138-148},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={geometry, fillet, perp-dot product, projection},

SUMMARY={

A tutorial on the ``perp dot product,'' which is the dot product, in

2D, of one vector and the vector perpendicular to another.

}

AUTHOR={Andrew J. Hanson},

TITLE={Geometry for N-Dimensional Graphics},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={149-170},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={geometry, hyperplane, determinant, Levi-Civita, volume},

SUMMARY={

A tutorial on n-dimensional geometry. Hanson generalizes a number of

familiar concepts, such as plane equations, clipping, volume, and

rotation, to n-D.

}

AUTHOR={Ken Shoemake},

TITLE={Arcball Rotation Control},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={175-192},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={interaction, quaternion},

SUMMARY={

Asks the question: how does one control the three degrees of freedom

of rotation in 3D, using a 2D input device such as a mouse? Shoemake's

answer: use a pair of points to designate a relative rotation, and use

quaternions to make the rotation axis specification intuitive and

consistent. Contains C code.

}

AUTHOR={Robert L. Cromwell},

TITLE={Efficient Eigenvalues for Visualization},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={193-198},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={scatterplot, matrix of central moments},

SUMMARY={

Answers the question: if I have a set of points in 3D, from what

direction should I view them to get the best view (minimizing bunching

in the projection)? Solving this involves the eigenvalues of a 3x3

matrix. Optimized formulas are given for computing the eigenvalues.

}

AUTHOR={Kevin Wu},

TITLE={Fast Inversion of Length- and Angle-Preserving Matrices},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={199-206},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={eigenvalue, 4x4 matrix},

SUMMARY={

Presents optimized formulas and code to compute the inverse of a 4x4

matrix that is known to be length- and angle-preserving (consisting of

only rotation, translation, and uniform scaling). Contains C code.

}

AUTHOR={Ken Shoemake},

TITLE={Polar Matrix Decomposition},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={207-221},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={quaternion, spectral decomposition, singular value decomposition},

SUMMARY={

Describes a method for decomposing an affine 3D transformation into

translation, scaling, and rotation transformations in a physically

meaningful way. This can be useful for keyframe animation. Contains C

code.

}

AUTHOR={Ken Shoemake},

TITLE={Euler Angle Conversion},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={222-229},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={quaternion, rotation},

SUMMARY={

Gives code to convert a rotation expressed by one triple of axes into

another triple. Rotations in 3D are often described in terms of Euler

angles: rotations about x, y, and z in some order. The order of

rotations is significant, but not standardized. These routines are

useful for doing such conversions. Contains C code.

}

AUTHOR={Ken Shoemake},

TITLE={Fiber Bundle Twist Reduction},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={230-236},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={animation, camera control, quaternion, topology, rotation},

SUMMARY={

Applies some advanced concepts from topology to the problem of

minimizing twist (rotation about the z axis of screen space) in

animation.

}

AUTHOR={Paul H. C. Eilers},

TITLE={Smoothing and Interpolation with Finite Differences},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={241-250},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={data smoothing, curve smoothing},

SUMMARY={

Gives simple techniques for smoothing a set of uniformly spaced

samples. This can be used to remove noise from input data. Contains C

code.

}

AUTHOR={Phillip Barry and Ron Goldman},

TITLE={Knot Insertion Using Forward Differences},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={251-255},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={curve subdivision},

SUMMARY={

Describes a fast technique for subdivision of B-spline curves and

surfaces. Subdivision is a fundamental operation in modeling and

rendering. Contains pseudocode.

}

AUTHOR={Chandrajit Bajaj and Guoliang Xu},

TITLE={Converting a Rational Curve to a Standard Rational {B}ernstein-{B}\'ezier Representation},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={256-260},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={Bezier curve, rational curve, NURB},

SUMMARY={

Discusses a low-level operation on curves: conversion of a rational

piecewise polynomial curve into rational Bernstein-Bezier form, a

commonly used type of non-uniform rational B-spline (NURB). Rational

splines are useful because they allow conic curves to be represented

exactly, whereas standard (polynomial) splines do not. Contains

pseudocode.

}

AUTHOR={R. Victor Klassen},

TITLE={Intersecting Parametric Cubic Curves by Midpoint Subdivision},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={261-277},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={Bezier curve, curve intersection, curve subdivision},

SUMMARY={

Provides code to find the intersection points of planar cubic curves.

Contains C++ code.

}

AUTHOR={Dani Lischinski},

TITLE={Converting Rectangular Patches into {B}\'ezier Triangles},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={278-285},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={Bezier surface, biquadratic patch},

SUMMARY={

A parametric surface conversion routine. Contains C++ code.

}

AUTHOR={John W. Peterson},

TITLE={Tessellation of NURB Surfaces},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={286-320},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={surface subdivision, NURB, Bezier surface, B-spline surface,

polygonization},

SUMMARY={

Gives code for polygonizing a very general class of parametric

surfaces: NURBs. Polygonization of parametric surfaces is useful both

for rendering and for modeling. Contains C code.

}

AUTHOR={Ching-Kuang Shene},

TITLE={Equations of Cylinders and Cones},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={321-323},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={quadric surface},

SUMMARY={

Derives the implicit equations of cylinders and cones.

}

AUTHOR={Jules Bloomenthal},

TITLE={An Implicit Surface Polygonizer},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={324-349},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={iso-surface, marching cubes, polygonization},

SUMMARY={

Gives code to polygonize an arbitrary implicit surface. Polygonization

is a common approach to implicit surface rendering and volume

rendering. When combined with code for trilinear interpolation code, a

program for polygonizing volume data can easily be constructed. The

resulting polygonizations will be superior to those generated by the

``Marching Cubes'' algorithm, in many cases. Contains C code.

}

AUTHOR={Ching-Kuang Shene},

TITLE={Computing the Intersection of a Line and a Cylinder},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={353-355},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={quadric surface, ray tracing, cone},

SUMMARY={

Geometric method for intersecting a ray with a cylinder.

}

AUTHOR={Joseph M. Cychosz and Warren N. {Waggenspack Jr.}},

TITLE={Intersecting a Ray with a Cylinder},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={356-365},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={quadric surface, ray tracing},

SUMMARY={

Geometric method for intersecting a ray with a cylinder. Contains C

code.

}

AUTHOR={Daniel Cohen},

TITLE={Voxel Traversal along a 3{D} Line},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={366-369},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={digital line drawing, grid traversal, ray tracing, scan conversion},

SUMMARY={

Visits all the voxels along a 3D line segment with integer endpoints,

something like a 3D Bresenham's algorithm. This code could be modified

to take endpoints with fixed point coordinates. Then the algorithm

could be very useful for ray tracing, when a uniform grid is being used

as a spatial data structure for optimization, or for volume rendering

of grid data. Contains C code.

}

AUTHOR={Kenneth Chiu and Peter Shirley and Changyaw Wang},

TITLE={Multi-Jittered Sampling},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={370-374},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={antialiasing, jitter, stochastic sampling},

SUMMARY={

Presents a new technique for high quality stochastic sampling. This is

useful for antialiasing. Contains C code.

}

AUTHOR={Paul S. Heckbert},

TITLE={A Minimal Ray Tracer},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={375-381},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={ray tracing, obfuscation},

SUMMARY={

Answers the question: how short can a ray tracer be? Contains C code.

}

AUTHOR={Christophe Schlick},

TITLE={A Fast Alternative to {P}hong's Specular Model},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={385-387},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={Phong illumination, specular reflection, exponentiation},

SUMMARY={

Describes a simple approximation to Phong's specular reflection formula

that does not require exponentiation or table lookup.

}

AUTHOR={Frederick Fisher and Andrew Woo},

TITLE={{R.E} versus {N.H} Specular Highlights},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={388-400},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={Phong illumination, specular reflection},

SUMMARY={

Compares two common variants of Phong's specular reflection formula and

derives a surprising relationship between them.

}

AUTHOR={Christophe Schlick},

TITLE={Fast Alternatives to {P}erlin's Bias and Gain Functions},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={401-403},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={hypertexture, texture synthesis},

SUMMARY={

Gives a simple approximation to some formulas that are commonly used in

procedural texture synthesis and volume synthesis.

}

AUTHOR={Uwe Behrens},

TITLE={Fence Shading},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={404-409},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={Gouraud shading, Phong shading},

SUMMARY={

Proposes an approach halfway between Gouraud shading and Phong

shading: shade along the edges of the polygon, but interpolate across

the interior. Contains pseudocode.

}

AUTHOR={Manfred Kopp and Michael Gervautz},

TITLE={{XOR}-Drawing with Guaranteed Contrast},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={413-414},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={cursor},

SUMMARY={

Gives simple guidelines for the choice of write mask when drawing

cursors and other graphics with exclusive-OR on multi-bit frame

buffers.

}

AUTHOR={Greg Ward},

TITLE={A Contrast-Based Scalefactor for Luminance Display},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={415-421},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={brightness, color, image display, perception, Radiance system},

SUMMARY={

Presents a simple technique for displaying pictures that have a dynamic

range (ratio of brightest to dimmest pixel) beyond that of the

display.

}

AUTHOR={Christophe Schlick},

TITLE={High Dynamic Range Pixels},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={422-429},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={quantization, dynamic range},

SUMMARY={

Proposes a pixel encoding technique that allows color images with high

dynamic range to be stored using only 24 bits per pixel. Contains C

code.

}

AUTHOR={John Schlag},

TITLE={Fast Embossing Effects on Raster Image Data},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={433-437},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={bump mapping, texture, image filter, paint program, shading},

SUMMARY={

Presents a simple, fast technique that interprets an image as a height

field or bump map, and then shades it, yielding an embossing effect.

Contains C code.

}

AUTHOR={Paul S. Heckbert},

TITLE={Bilinear {C}oons Patch Image Warping},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={438-446},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={morph, resampling},

SUMMARY={

Presents a fast technique to warp an image according to four boundary

curves. This can be used to correct distortions in images, or to

introduce them, for special effects purposes. Contains C code.

}

AUTHOR={George Wolberg and Henry Massalin},

TITLE={Fast Convolution with Packed Lookup Tables},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={447-464},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={image filter, image magnification, image resampling},

SUMMARY={

Gives optimized code for convolution of discrete signals. This is

useful for image resampling and filtering. Contains C code.

}

AUTHOR={Joseph M. Cychosz},

TITLE={Efficient Binary Image Thinning Using Neighborhood Maps},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={465-473},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={image skeleton, image filter},

SUMMARY={

Provides fast code to thin a bitmap image and find its ``skeleton.''

Image thinning is used for pattern recognition. Contains C code.

}

AUTHOR={Karel Zuiderveld},

TITLE={Contrast Limited Adaptive Histogram Equalization},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={474-485},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={contrast enhancement},

SUMMARY={

Presents a contrast enhancement technique that overcomes some of the

flaws of simple histogram equalization, such as noise amplification and

suppression of local contrast. Contains C code.

}

AUTHOR={Alan W. Paeth},

TITLE={Ideal Tiles for Shading and Halftoning},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={486-492},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={bitblt, dither, stipple},

SUMMARY={

Discusses heuristics and design techniques for top-quality dither and

stipple patterns.

}

AUTHOR={Jon Christensen and Joe Marks and Stuart Shieber},

TITLE={Placing Text Labels on Maps and Diagrams},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={497-504},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={cartography, label placement, layout, relaxation,

simulated annealing},

SUMMARY={

Presents an algorithm to arrange text labels in a way that avoids

overlap. This is useful in cartography.

}

AUTHOR={L\'aszl\'o Szirmay-Kalos},

TITLE={Dynamic Layout Algorithm to Display General Graphs},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={505-517},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={cartography, layout, graph visualization, physically-based methods},

SUMMARY={

Gives code that finds aesthetic arrangements for a graph. This could

be used to graphically display data structures. Contains C++ code.

}

AUTHOR={Steve Hill},

TITLE={Tri-linear Interpolation},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={521-525},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={trilinear interpolation, bilinear interpolation, reconstruction},

SUMMARY={

Gives optimized code for performing linear interpolation in a 3D grid.

Trilinear interpolation is useful for volume rendering, and its 2D

variant, bilinear interpolation, is a very common operation in image

processing. Contains C code.

}

AUTHOR={Steven Eker},

TITLE={Faster Linear Interpolation},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={526-533},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={line drawing, Gouraud shading, integer arithmetic, image resampling},

SUMMARY={

Gives optimized code for generic linear interpolation. This is most

useful for assembler language programming of graphics operations such

as Gouraud shading and image scaling. Contains C code.

}

AUTHOR={Jean-Fran\c cois Dou\'e},

TITLE={C++ Vector and Matrix Algebra Routines},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={534-557},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={vector algebra, transformation, ray tracing},

SUMMARY={

A C++ subroutine library for 2D, 3D, and 4D vector and matrix

operations. Contains C++ code. The Floppy disk that comes with the

book and the FTP collection contain a simple ray tracer written using

the library.

}

AUTHOR={Andrew Glassner and Eric Haines},

TITLE={C Header File and Vector Library},

BOOKTITLE={Graphics Gems IV},

EDITOR={Paul Heckbert},

PAGES={558-570},

PUBLISHER={Academic Press},

YEAR={1994},

ADDRESS={Boston},

KEYWORDS={vector algebra, root-finding},

SUMMARY={

Revised version of the ``Graphics Gems'' subroutine library, used in

several other Gems in the book. Contains C code.

}