Graphics Gems, by Book
Listed by book, in order.
return to main page
Glassner, Andrew,
Useful 2D Geometry,
p. 3-11.
Glassner, Andrew,
Useful Trigonometry,
p. 13-17.
Paeth, Alan W.,
Trigonometric Functions at Select Points,
p. 18-19.
Goldman, Ronald,
Triangles,
p. 20-23.
Turk, Greg,
Generating Random Points in Triangles,
p. 24-28, code: p. 649-650, TriPoints.c.
Shapira, Andrew,
Fast Line-Edge Intersections on a Uniform Grid,
p. 29-36, code: p. 651-653, LineEdge.c.
Thompson, Kelvin,
Area of Intersection: Circle and a Half-Plane,
p. 38-39.
Thompson, Kelvin,
Area of Intersection: Circle and a Thick Line,
p. 40-42.
Thompson, Kelvin,
Area of Intersection: Two Circles,
p. 43-46.
Thompson, Kelvin,
Vertical Distance from a Point to a Line,
p. 47-48.
Paeth, Alan W.,
A Fast 2D Point-on-line Test,
p. 49-50, code: p. 654-655, PntOnLine.c.
Shaffer, Clifford A.,
Fast Circle-Rectangle Intersection Checking,
p. 51-53, code: p. 656, CircleRect.c.
Paeth, Alan W.,
Circles of Integral Radius on Integer Lattices,
p. 57-60.
Heckbert, Paul S.,
Nice Numbers for Graph Labels,
p. 61-63, code: p. 657-659, Label.c.
Cychosz, Joseph M.,
Efficient Generation of Sampling Jitter Using Look-up Tables,
p. 64-74, code: p. 660-661, FastJitter.c.
Morrison, Jack C.,
Fast Anti-Aliasing Polygon Scan Conversion,
p. 76-83, code: p. 662-666, AAPolyScan.c.
Heckbert, Paul S.,
Generic Convex Polygon Scan Conversion and Clipping,
p. 84-86, code: p. 667-680, PolyScan/.
Heckbert, Paul S.,
Concave Polygon Scan Conversion,
p. 87-91, code: p. 681-684, ConcaveScan.c.
Wallis, Bob,
Fast Scan Conversion of Arbitrary Polygons,
p. 92-97.
Heckbert, Paul S.,
Digital Line Drawing,
p. 99-100, code: p. 685, DigitalLine.c.
Wyvill, Brian,
Symmetric Double Step Line Algorithm,
p. 101-104, code: p. 686-689, DoubleLine.c.
Thompson, Kelvin,
Rendering Anti-Aliased Lines,
p. 105-106, code: p. 690-693, AALines/.
Ritter, Jack,
An Algorithm for Filling in 2D Wide Line Bevel Joints,
p. 107-113.
Wallis, Bob,
Rendering Fat Lines on a Raster Grid,
p. 114-120.
Spoelder, Hans J.W., and Ullings, Fons H.,
Two-Dimensional Clipping: A Vector-Based Approach,
p. 121-128, code: p. 694-710, 2DClip/.
Lee, Greg, Penk, Mike, and Wallis, Bob,
Periodic Tilings of the Plane on a Raster Grid,
p. 129-139.
Pavicic, Mark J.,
Anti-Aliasing Filters that Minimize "Bumpy" Sampling,
p. 144-146.
Turkowski, Ken,
Filters for Common Resampling Tasks,
p. 147-165.
Olsen, John,
Smoothing Enlarged Monochrome Images,
p. 166-170.
Paeth, Alan W.,
Median Finding on a 3-by-3 Grid,
p. 171-175, code: p. 711-712, Median.c.
Hawley, Stephen,
Ordered Dithering,
p. 176-178, code: p. 713-714, OrderDither.c.
Paeth, Alan W.,
A Fast Algorithm for General Raster Rotation,
p. 179-195.
Schumacher, Dale A.,
Useful 1-to-1 Pixel Transforms,
p. 196-209.
Thompson, Kelvin,
Alpha Blending,
p. 210-211.
Glassner, Andrew,
Frame Buffers and Color Maps,
p. 215-218.
Paeth, Alan W.,
Reading a Write-Only Write Mask,
p. 219-220.
Morton, Mike,
A Digital "Dissolve" Effect,
p. 221-232, code: p. 715-717, Dissolve.c.
Paeth, Alan W.,
Mapping RGB Triples Onto Four Bits,
p. 233-245, code: p. 718, RGBTo4Bits.c.
Heckbert, Paul S.,
What Are the Coordinates of a Pixel?,
p. 246-248.
Paeth, Alan W.,
Proper Treatment of Pixels as Integers,
p. 249-256, code: p. 719, PixelInteger.c.
Glassner, Andrew,
Normal Coding,
p. 257-264.
Heckbert, Paul S.,
Recording Animation in Binary Order for Progressive Temporal Refinement,
p. 265-269, code: p. 720, BinRec.c.
Schumacher, Dale A.,
1-to-1 Pixel Transforms Optimized Through Color-Map Manipulation,
p. 270-274.
Heckbert, Paul S.,
A Seed Fill Algorithm,
p. 275-277, code: p. 721-722, SeedFill.c.
Fishkin, Ken,
Filling a Region in a Frame Buffer,
p. 278-284.
Wallace, Bill,
Precalculating Addresses for Fast Fills, Circles, and Lines,
p. 285-286.
Gervautz, Michael, and Purgathofer, Werner,
A Simple Method for Color Quantization: Octree Quantization,
p. 287-293.
Glassner, Andrew,
Useful 3D Geometry,
p. 297-300.
Ritter, Jack,
An Efficient Bounding Sphere,
p. 301-303, code: p. 723-725, BoundSphere.c.
Goldman, Ronald,
Intersection of Two Lines in Three-Space,
p. 304.
Goldman, Ronald,
Intersection of Three Planes,
p. 305.
Paeth, Alan W.,
Digital Cartography for Computer Graphics,
p. 307-320.
Bame, Paul D.,
Albers Equal-Area Conic Map Projection,
p. 321-325, code: p. 726-729, Albers.c.
Montani, Claudio, and Scopigno, Roberto,
Spheres-to-Voxels Conversion,
p. 327-334.
Arvo, James,
A Simple Method for Box-Sphere Intersection Testing,
p. 335-339, code: p. 730-732, BoxSphere.c.
Wyvill, Brian,
3D Grid Hashing Function,
p. 343-345, code: p. 733-734, Hash3D.c.
Hultquist, Jeff,
Backface Culling,
p. 346-347.
Lee, Mark E.,
Fast Dot Products for Shading,
p. 348-360.
Thompson, Kelvin,
Scanline Depth Gradient of a Z-Buffered Triangle,
p. 361-363.
Glassner, Andrew,
Simulating Fog and Haze,
p. 364-365.
Glassner, Andrew,
Interpretation of Texture Map Indices,
p. 366-375.
Glassner, Andrew,
Multidimensional Sum Tables,
p. 376-381.
Ritter, Jack,
A Simple Ray Rejection Test,
p. 385-386.
Hultquist, Jeff,
Intersection of a Ray with a Sphere,
p. 388-389.
Badouel, Didier,
An Efficient Ray-Polygon Intersection,
p. 390-393, code: p. 735, RayPolygon.c.
Woo, Andrew,
Fast Ray-Polygon Intersection,
p. 394.
Woo, Andrew,
Fast Ray-Box Intersection,
p. 395-396, code: p. 736-737, RayBox.c.
Pearce, Andrew,
Shadow Attenuation for Ray Tracing Transparent Objects,
p. 397-399.
Schwarze, Jochen,
Cubic and Quartic Roots,
p. 404-407, code: p. 738-786, Roots3And4.c.
Schneider, Philip J.,
A Bézier Curve-Based Root-Finder,
p. 408-415, code: p. 787, NearestPoint.c.
Hook, D.G., and McAree, P.R.,
Using Sturm Sequences To Bracket Real Roots of Polynomial Equations,
p. 416-423, code: p. 743-755, Sturm/.
Lalonde, Paul, and Dawson, Robert,
A High-Speed, Low Precision Square Root,
p. 424-426, code: p. 756-757, SquareRoot.c.
Paeth, Alan W.,
A Fast Approximation To the Hypotenuse,
p. 427-431, code: p. 758, HypotApprox.c.
Ritter, Jack,
A Fast Approximation To 3D Euclidian Distance,
p. 432-433.
Thompson, Kelvin,
Full-Precision Constants,
p. 434.
Thompson, Kelvin,
Converting Between Bits and Digits,
p. 435.
Wyvill, Brian,
Storage-free Swapping,
p. 436-437.
Glassner, Andrew,
Generating Random Integers,
p. 438-439.
Ritter, Jack,
Fast 2D-3D Rotation,
p. 440-441.
Shoemake, Ken,
Bit Patterns for Encoding Angles,
p. 442.
Shaffer, Clifford A.,
Bit Interleaving for Quad- or Octrees,
p. 443-447, code: p. 759-762, Interleave.c.
Fishkin, Ken,
A Fast HSL-to-RGB Transform,
p. 448-449, code: p. 763-764, HSLtoRGB.c.
Thompson, Kelvin,
Matrix Identities,
p. 453-454.
Thompson, Kelvin,
Transforming Axes,
p. 456-459.
Thompson, Kelvin,
Fast Matrix Multiplication,
p. 460-461.
Hultquist, Jeff,
A Virtual Trackball,
p. 462-463.
Raible, Eric,
Matrix Orthogonalization,
p. 464, code: p. 765, MatrixOrtho.c.
Pique, Michael E.,
Rotation Tools,
p. 465-469.
Carling, Richard,
Matrix Inversion,
p. 470-471, code: p. 766-769, MatrixInvert.c.
Goldman, Ronald,
Matrices and Transformations,
p. 472-475.
Cychosz, Joseph M.,
Efficient Post-Concatenation of Transformation Matrices,
p. 476-481, code: p. 770-772, MatrixPost.c.
Greene, Ned,
Transformation Identities,
p. 485-493.
Turkowski, Ken,
Fixed-Point Trigonometry with CORDIC Iterations,
p. 494-497, code: p. 773-774, FixedTrig.c.
Maillot, Patrick-Gilles,
Using Quaternions for Coding 3D Transformations,
p. 498-515, code: p. 775-777, Quaternions.c.
Cunningham, Steve,
3D Viewing and Rotation Using Orthonormal Bases,
p. 516-521, code: p. 778-779, ViewTrans.c.
Turkowski, Ken,
The Use of Coordinate Frames in Computer Graphics,
p. 522-532.
Wallis, Bob,
Forms, Vectors, and Transforms,
p. 533-538, code: p. 780-784, Forms.c.
Turkowski, Ken,
Properties of Surface-Normal Transformations,
p. 539-547.
Arvo, James,
Transforming Axis-Aligned Bounding Boxes,
p. 548-550, code: p. 785-786, TransBox.c.
Hall, Mark,
Defining Surfaces From Sampled Data,
p. 552-557.
Hall, Mark,
Defining Surfaces From Contour Data,
p. 558-561.
Glassner, Andrew,
Computing Surface Normals for 3D Models,
p. 562-566.
Bloomenthal, Jules,
Calculation of Reference Frames Along a Space Curve,
p. 567-571.
Glassner, Andrew,
Planar Cubic Curves,
p. 575-578.
Rasala, Richard,
Explicit Cubic Spline Interpolation Formulas,
p. 579-584.
Gomez, Julian,
Fast Spline Drawing,
p. 585-586.
Goldman, Ronald,
Some Properties of Bézier Curves,
p. 587-593.
Wallis, Bob,
Tutorial on Forward Differencing,
p. 594-603.
Goldman, Ronald,
Integration of Bernstein Basis Functions,
p. 604-606.
Schneider, Philip J.,
Solving the Nearest-Point-on-Curve Problem,
p. 607-611, code: p. 787-796, NearestPoint.c.
Schneider, Philip J.,
An Algorithm for Automatically Fitting Digitized Curves,
p. 612-626, code: p. 797-807, FitCurves.c.
Glassner, Andrew,
Graphics Gems Header File,
p. 629-632, code: p. 629-632, GraphicsGems.h.
Glassner, Andrew,
2D and 3D Vector C Library,
p. 633-642, code: p. 633-642, GGVecLib.c GraphicsGems.h.
Hultquist, Jeff,
Memory Allocation in C,
p. 643, code: p. 643.
Raible, Eric,
Two Useful C Macros,
p. 644, code: p. 644.
Thompson, Kelvin,
How to Build Circular Structures in C,
p. 645, code: p. 645.
Thompson, Kelvin,
How to Use C Register Variables to Point to 2D Arrays,
p. 646, code: p. 646.
Rokne, Jon,
The Area of a Simple Polygon,
p. 5-6.
Prasad, Mukesh,
Intersection of Line Segments,
p. 7-9, code: p. 473-476, xlines.c.
Morrison, Jack C.,
Distance From a Point To a Line,
p. 10-13.
Rokne, Jon,
An Easy Bounding Circle,
p. 14-16.
Rokne, Jon,
The Smallest Circle Containing the Intersection of Two Circles,
p. 17-18.
Rokne, Jon,
Appolonius's 10th Problem,
p. 19-24.
Musgrave, F. Kenton,
A Peano Curve Generation Algorithm,
p. 25, code: p. 477-484, Peano/.
Voorhies, Douglas,
Space-Filling Curves and a Measure of Coherence,
p. 26-30, code: p. 485-486, Hilbert.c.
Steinhart, Jonathan E.,
Scanline Coherent Shape Algebra,
p. 31-45, code: p. 487-501.
Schumacher, Dale A.,
Image Smoothing and Sharpening by Discrete Convolution,
p. 50-56.
Schumacher, Dale A.,
A Comparison of Digital Halftoning Techniques,
p. 57-71, code: p. 502-508.
Thomas, Spencer W., and Bogart, Rod G.,
Color Dithering,
p. 72-77, code: p. 509-513, dither/.
Schumacher, Dale A.,
Fast Anamorphic Image Scaling,
p. 78-79.
Ward, Greg,
Real Pixels,
p. 80-83, code: RealPixels/.
Yap, Sue-Ken,
A Fast 90-Degree Bitmap Rotator,
p. 84-85, code: p. 514-515, rotate8x8.c.
Holt, Jeff,
Rotation of Run-Length Encoded Image Data,
p. 86-88, code: p. 516-524.
Glassner, Andrew,
Adaptive Run-Length Encoding,
p. 89-92.
Paeth, Alan W.,
Image File Compression Made Easy,
p. 93-100.
Max, Nelson L.,
An Optimal Filter for Image Reconstruction,
p. 101-104.
Schlag, John,
Noise Thresholding in Edge Images,
p. 105-106.
Bieri, Hanspeter, and Kohler, Andreas,
Computing the Area, the Circumference, and the Genus of a Binary Digital Image,
p. 107-111, code: p. 525-527.
Thomas, Spencer W.,
Efficient Inverse Color Map Computation,
p. 116-125, code: p. 528-535, inv_cmap/.
Wu, Xiaolin,
Efficient Statistical Computations for Optimal Color Quantization,
p. 126-133, code: quantizer.c.
Musgrave, F. Kenton,
A Random Color Map Animation Algorithm,
p. 134-137, code: p. 536-541, ran_ramp.c.
Hall, Jim, and Lindgren, Terence,
A Fast Approach To PHIGS PLUS Pseudo Color,
p. 138-142.
Paeth, Alan W.,
Mapping RGB Triples Onto 16 Distinct Values,
p. 143-146.
Martindale, David, and Paeth, Alan W.,
Television Color Encoding and "Hot" Broadcast Colors,
p. 147-158, code: p. 542-549, hot.c.
Meyer, Gary W.,
An Inexpensive Method of Setting the Monitor White Point,
p. 159-162.
Musgrave, F. Kenton,
Some Tips for Making Color Hardcopy,
p. 163-165.
Goldman, Ronald,
Area of Planar Polygons and Volume of Polyhedra,
p. 170-171.
Shaffer, Clifford A.,
Getting Around on a Sphere,
p. 172-173.
Paeth, Alan W.,
Exact Dihedral Metrics for Common Polyhedra,
p. 174-178.
Glassner, Andrew,
A Simple Viewing Geometry,
p. 179-180.
Bogart, Rod G.,
View Correlation,
p. 181-190, code: p. 550-562, viewcorr/.
Glassner, Andrew,
Maintaining Winged-Edge Models,
p. 191-201.
Montani, Claudio, and Scopigno, Roberto,
Quadtree/Octree-to-Boundary Conversion,
p. 202-218.
Maillot, Patrick-Gilles,
Three-Dimensional Homogeneous Clipping of Triangle Strips,
p. 219-231, code: p. 563-570.
Thalmann, Nadia Magnenat, Thalmann, Daniel, and Minh, Hong Tong,
InterPhong Shading,
p. 232-241, code: p. 571-574, InterPhong.c.
Haines, Eric,
Fast Ray-Convex Polyhedron Intersection,
p. 247-250, code: p. 575-576, RayCPhdron.c.
Cychosz, Joseph M.,
Intersecting a Ray with An Elliptical Torus,
p. 251-256, code: p. 577-580, intersect/.
Voorhies, Douglas, and Kirk, David,
Ray-Triangle Intersection Using Binary Recursive Subdivision,
p. 257-263.
Kirk, David, and Arvo, James,
Improved Ray Tagging for Voxel-Based Ray Tracing,
p. 264-266.
Haines, Eric,
Efficiency Improvements for Hierarchy Traversal in Ray Tracing,
p. 267-272.
Pearce, Andrew,
A Recursive Shadow Voxel Cache for Ray Tracing,
p. 273-274, code: p. 581-582, VoxelCache.c.
Pearce, Andrew,
Avoiding Incorrect Shadow Intersections for Ray Tracing,
p. 275-276.
Lee, Mark E., and Uselton, Samuel P.,
A Body Color Model: Absorption Through Translucent Media,
p. 277-282.
Lee, Mark E., and Uselton, Samuel P.,
More Shadow Attenuation for Ray Tracing Transparent or Translucent Objects,
p. 283-289.
Chen, Shenchang Eric,
Implementing Progressive Radiosity with User-Provided Polygon Display Routines,
p. 295-298, code: p. 583-597, radiosity/.
Beran-Koehn, Jeffrey C., and Pavicic, Mark J.,
A Cubic Tetrahedral Adaptation of the Hemi-Cube Algorithm,
p. 299-302.
Tampieri, Filippo,
Fast Vertex Radiosity Update,
p. 303-305, code: p. 598, FastUpdate.c.
Shirley, Peter,
Radiosity via Ray Tracing,
p. 306-310.
Sillion, François,
Detection of Shadow Boundaries for Adaptive Meshing in Radiosity,
p. 311-315.
Thomas, Spencer W.,
Decomposing a Matrix Into Simple Transformations,
p. 320-323, code: p. 599-602, unmatrix.c.
Goldman, Ronald,
Recovering the Data From the Transformation Matrix,
p. 324-331.
Goldman, Ronald,
Transformations as Exponentials,
p. 332-337.
Goldman, Ronald,
More Matrices and Transforms: Shear and Pseudo-Perspective,
p. 338-341.
Wu, Kevin,
Fast Matrix Inversion,
p. 342-350, code: p. 603-605, inverse.c.
Shoemake, Ken,
Quaternions and 4x4 Matrices,
p. 351-354.
Arvo, James,
Random Rotation Matrices,
p. 355-356, code: p. 606-607, rotate.c.
Arvo, James,
Classifying Small Sparse Matrices,
p. 357-361, code: p. 608-609, sparse.c.
Shoemake, Ken,
Bit Picking,
p. 366-367.
Shoemake, Ken,
Faster Fourier Transform,
p. 368-370.
Paeth, Alan W., and Schilling, David,
Of Integers, Fields, and Bit Counting,
p. 371-376, code: p. 610-611, BitCounting/.
Schlag, John,
Using Geometric Constructions to Interpolate Orientation with Quaternions,
p. 377-380.
Paeth, Alan W.,
A Half-Angle Identity for Digital Computation: The Joys of the Halved Tangent,
p. 381-386.
Musial, Christopher J.,
An Integer Square Root Algorithm,
p. 387-388, code: p. 612.
Capelli, Ron,
Fast Approximation To the Arctangent,
p. 389-391.
Ritter, Jack,
Fast Sign of Cross Product Calculation,
p. 392-393, code: p. 613-614.
Shoemake, Ken,
Interval Sampling,
p. 394-395.
Ward, Greg,
A Recursive Implementation of the Perlin Noise Function,
p. 396-401, code: p. 615-616, noise3.c.
Moore, Doug, and Warren, Joseph,
Least-Squares Approximations To Bézier Curves and Surfaces,
p. 406-411.
Shoemake, Ken,
Beyond Bézier Curves,
p. 412-416.
Schlag, John,
A Simple Formulation for Curve Interpolation with Variable Control Point Approximation,
p. 417-419.
Lindgren, Terence,
Symmetric Evaluation of Polynomials,
p. 420-423.
Seidel, Hans-Peter,
Menelaus's Theorem,
p. 424-427.
Seidel, Hans-Peter,
Geometrically Continuous Cubic Bézier Curves,
p. 428-434.
Musial, Christopher J.,
A Good Straight-Line Approximation of a Circular Arc,
p. 435-439, code: p. 617.
Paeth, Alan W.,
Great Circle Plotting,
p. 440-445.
Wu, Xiaolin,
Fast Anti-Aliased Circle Generation,
p. 446-450.
Glassner, Andrew,
Graphics Gems Header File,
p. 455-457, code: p. 629-632, GraphicsGems.h.
Glassner, Andrew, and Bogart, Rod G.,
2D and 3D Vector C Library,
p. 458-466, code: p. 633-642, GGVecLib.c GraphicsGems.h.
Hollasch, Steve,
Useful C Macros for Vector Operations,
p. 467-469, code: p. 467-469, vector.h.
Möller, Tomas,
Fast Bitmap Stretching,
p. 4-7, code: p. 411-413, fastBitmap.c.
Schumacher, Dale A.,
General Filtered Image Rescaling,
p. 8-16, code: p. 414-424, filter.c filter_rcg.c.
Schumacher, Dale A.,
Optimization of Bitmap Scaling Operations,
p. 17-19, code: p. 425-428, bitmap.c.
Bragg, Dennis,
A Simple Color Reduction Filter,
p. 20-22, code: p. 429-431, rgbvary.c rgbvaryW.c.
Moore, Doug, and Warren, Joseph,
Compact Isocontours From Sampled Data,
p. 23-28.
Feldman, Tim,
Generating Iso-value Contours From a Pixmap,
p. 29-33, code: p. 432-440, contour.c.
Salesin, David, and Barzel, Ronen,
Compositing Black-and-White Bitmaps,
p. 34-35.
Scofield, Cary,
2-1/2-d Depth-of-Field Simulation for Computer Animation,
p. 36-38.
Furman, Eric,
A Fast Boundary Generator for Composited Regions,
p. 39-43, code: p. 441-445, scallops8.c.
Hill, Steve,
IEEE Fast Square Root,
p. 48, code: p. 446-447, sqrt.c.
Hill, Steve,
A Simple Fast Memory Allocator,
p. 49-50, code: p. 448-451, alloc/.
Hanson, Andrew J.,
The Rolling Ball,
p. 51-60, code: p. 452-453, 3d.c defs.h.
Rokne, Jon,
Interval Arithmetic,
p. 61-66, code: p. 454-457, interval.C.
Paeth, Alan W.,
Fast Generation of Cyclic Sequences,
p. 67-76, code: p. 458-459, cyclic.c.
Paeth, Alan W.,
A Generic Pixel Selection Mechanism,
p. 77-79.
Shirley, Peter,
Nonuniform Random Point Sets,
p. 80-83.
Goldman, Ronald,
Cross Product in Four Dimensions and Beyond,
p. 84-88.
Badouel, Didier, and Wuthrich, Charles A.,
Face-Connected Line Segment Generation in an n-Dimensional Space,
p. 89-91, code: p. 460, ndline.c.
Morrison, Jack C.,
Quaternion Interpolation with Extra Spins,
p. 96-97, code: p. 461-462, quatspin.c.
Goldman, Ronald,
Decomposing Projective Transformations,
p. 98-107.
Goldman, Ronald,
Decomposing Linear and Affine Transformations,
p. 108-116.
Arvo, James,
Fast Random Rotation Matrices,
p. 117-120, code: p. 463-464, rand_rotation.c.
Dana, Paul,
Issues and Techniques for Keyframing Transformations,
p. 121-123.
Shoemake, Ken,
Uniform Random Rotations,
p. 124-132, code: p. 465-467, urot.c.
Elber, Gershon,
Interpolation Using Bézier Curves,
p. 133-136, code: p. 468-471, bzrinter.c.
Barr, A.H.,
Physically Based Superquadrics,
p. 137-159, code: p. 472-477, sqfinal.c.
Van Aken, Jerry, and Simar, Ray,
A Parametric Elliptical Arc Algorithm,
p. 164-172, code: p. 478-479, parelarc.c.
Rosati, Claudio,
A Simple Connection Algorithm for 2-D Drawing,
p. 173-181, code: p. 480-486, con2d.c.
Srinivasan, Raman V.,
A Fast Circle Clipping Algorithm,
p. 182-187, code: p. 487-490, circlexc.c.
Shaffer, Clifford A., and Feustel, Charles D.,
Exact Computation of 2-D Intersections,
p. 188-192, code: p. 491-495, Polyintr.c.
Miller, Robert D.,
Joining Two Lines with a Circular Arc Fillet,
p. 193-198, code: p. 496-499, fillet.c.
Antonio, Franklin,
Faster Line Segment Intersection,
p. 199-202, code: p. 500-501, insectc.c.
Sevici, Constantin A.,
Solving the Problem of Apollonius and Other Related Problems,
p. 203-209.
López-López, Fernando J.,
Triangles Revisited,
p. 215-218.
Chin, Norman,
Partitioning a 3-D Convex Polygon with an Arbitrary Plane,
p. 219-222, code: p. 502-510, partition3d/.
Georgiades, Príamos,
Signed Distance From Point To Plane,
p. 223-224, code: p. 511, pt2plane.c.
Salesin, David, and Tampieri, Filippo,
Grouping Nearly Coplanar Polygons Into Coplanar Sets,
p. 225-230, code: p. 512-516, planeSets.c.
Tampieri, Filippo,
Newell's Method for the Plane Equation of a Polygon,
p. 231-232, code: p. 517-518, newell.c.
Georgiades, Príamos,
Plane-to-Plane Intersection,
p. 233-235, code: p. 519-520, pl2plane.c.
Voorhies, Douglas,
Triangle-Cube Intersection,
p. 236-239, code: p. 521-526, triangleCube.c.
Wanger, Len, and Fusco, Mike,
Fast N-Dimensional Extent Overlap Testing,
p. 240-243, code: p. 527-533, exttest/.
Moore, Doug,
Subdividing Simplices,
p. 244-249, code: p. 534-535, simplex/.
Moore, Doug,
Understanding Simploids,
p. 250-255.
Lischinski, Dani,
Converting Bézier Triangles Into Rectangular Patches,
p. 256-261, code: p. 536-537, bezierTri.C.
Lindgren, Terence, Sanchez, Juan, and Hall, Jim,
Curve Tessellation Criteria Thru Sampling,
p. 262-265.
Sung, Kelvin, and Shirley, Peter,
Ray Tracing with the BSP Tree,
p. 271-274, code: p. 538-546, bsp.c.
Cychosz, Joseph M., and Waggenspack, Warren N., Jr.,
Intersecting a Ray with a Quadric Surface,
p. 275-283, code: p. 547-550, intqdr.c intell.c.
Cychosz, Joseph M.,
Use of Residency Masks and Object Space Partitioning to Eliminate Ray-Object Intersection Calculations,
p. 284-287.
Musgrave, F. Kenton,
A Panoramic Virtual Screen for Ray Tracing,
p. 288-294, code: p. 551-554, panorama.c.
Trumbore, Ben,
Rectangular Bounding Volumes for Popular Primitives,
p. 295-300, code: p. 555-561, bounding_volumes.c.
Wu, Xiaolin,
A Linear-Time Simple Bounding Volume Algorithm,
p. 301-306.
Wang, Changyaw,
Physically Correct Direct Lighting for Distribution Ray Tracing,
p. 307-313, code: p. 562-568, luminaire/.
Bian, Buming,
Hemispherical Projection of a Triangle,
p. 314-317, code: p. 569-574, hemis.c.
Max, Nelson L., and Allison, Michael J.,
Linear Radiosity Approximation Using Vertex-to-Vertex Form Factors,
p. 318-323.
Beran-Koehn, Jeffrey C., and Pavicic, Mark J.,
Delta Form-Factor Calculation for the Cubic Tetrahedral Algorithm,
p. 324-328, code: p. 575-576, forfac.c.
Tampieri, Filippo,
Accurate Form-Factor Computation,
p. 329-333, code: p. 577-581, accForm.c.
Woo, Andrew,
The Shadow Depth Map Revisited,
p. 338-342, code: p. 582, zdepth.c.
Cheng, Russell C.H.,
Fast Linear Color Rendering,
p. 343-348, code: p. 583-585, fastLinear.c.
Cheng, Russell C.H.,
Edge and Bit-Mask Calculations for Anti-Aliasing,
p. 349-354, code: p. 586-593, edgeCalc.c.
Grace, Thom,
Fast Span Conversion: Unrolling Short Loops,
p. 355-357, code: p. 594-596, fastSpan.c.
Hollasch, Steve,
Progressive Image Refinement via Gridded Sampling,
p. 358-361, code: p. 597-598, PIR.c.
Fleischer, Kurt, and Salesin, David,
Accurate Polygon Scan Conversion Using Half-Open Intervals,
p. 362-365, code: p. 599-605, accurate_scan/.
Glassner, Andrew,
Darklights,
p. 366-368.
Glassner, Andrew,
Anti-Aliasing in Triangular Pixels,
p. 369-373.
Snyder, John, Barzel, Ronen, and Gabriel, Steve,
Motion Blur on Graphics Workstations,
p. 374-382, code: p. 606-609, motblur.c.
Arvo, James, and Scofield, Cary,
The Shader Cache: A Rendering Pipeline Accelerator,
p. 383-389.
Glassner, Andrew,
Graphics Gems Header File,
p. 455-457, code: p. 393-395, GraphicsGems.h.
Glassner, Andrew,
2-D and 3-D Vector C Library -- Corrected and Indexed,
p. 396-404, code: p. 396-404, GraphicsGems.c.
Hollasch, Steve,
Useful C Macros for Vector Operations,
p. 405-407, code: p. 405-407, vector.h.
Bashein, Gerard, and Detmer, Paul R.,
Centroid of a Polygon,
p. 3-6, code: p. 5, centroid.c.
Schorn, Peter, and Fisher, Frederick,
Testing the Convexity of a Polygon,
p. 7-15, code: p. 11-15, convex_test/.
Weiler, Kevin,
An Incremental Angle Point in Polygon Test,
p. 16-23, code: p. 17-22, ptpoly_weiler/.
Haines, Eric,
Point in Polygon Strategies,
p. 24-46, code: p. 34-45, ptpoly_haines/.
Lischinski, Dani,
Incremental Delaunay Triangulation,
p. 47-59, code: p. 51-58, delaunay/.
Glassner, Andrew,
Building Vertex Normals from an Unstructured Polygon List,
p. 60-73, code: p. 64-73, vert_norm/.
Greene, Ned,
Detecting Intersection of a Rectangular Solid and a Convex Polyhedron,
p. 74-82.
Rabbitz, Rich,
Fast Collision Detection of Moving Convex Polyhedra,
p. 83-109, code: p. 91-108, collide.c.
Hart, John C.,
Distance to an Ellipsoid,
p. 113-119.
Ohashi, Yoshikazu,
Fast Linear Approximations of Euclidean Distance in Higher Dimensions,
p. 121-124, code: dist_fast.c.
Donovan, Walt, and Van Hook, Tim,
Direct Outcode Calculation for Faster Clip Testing,
p. 125-131, code: p. 127-131, outcode/.
Miller, Robert D.,
Computing the Area of a Spherical Polygon,
p. 132-137, code: p. 135-136, sph_poly.c.
Hill, F. S., Jr.,
The Pleasures of `Perp Dot' Products,
p. 138-148.
Hanson, Andrew J.,
Geometry for N-Dimensional Graphics,
p. 149-170.
Shoemake, Ken,
Arcball Rotation Control,
p. 175-192, code: p. 178-191, arcball/.
Cromwell, Robert L.,
Efficient Eigenvalues for Visualization,
p. 193-198.
Wu, Kevin,
Fast Inversion of Length- and Angle-Preserving Matrices,
p. 199-206, code: p. 204-206, inv_fast.c.
Shoemake, Ken,
Polar Matrix Decomposition,
p. 207-221, code: p. 211-220, polar_decomp/.
Shoemake, Ken,
Euler Angle Conversion,
p. 222-229, code: p. 225-228, euler_angle/.
Shoemake, Ken,
Fiber Bundle Twist Reduction,
p. 230-236.
Eilers, Paul H. C.,
Smoothing and Interpolation with Finite Differences,
p. 241-250, code: p. 246-249, data_smooth/.
Barry, Phillip, and Goldman, Ronald,
Knot Insertion using Forward Differences,
p. 251-255.
Bajaj, Chandrajit, and Xu, Guoliang,
Converting a Rational Curve to a Standard Rational Bernstein-Bézier Representation,
p. 256-260.
Klassen, R. Victor,
Intersecting Parametric Cubic Curves by Midpoint Subdivision,
p. 261-277, code: p. 266-276, curve_isect/.
Lischinski, Dani,
Converting Rectangular Patches into Bézier Triangles,
p. 278-285, code: p. 281-285, patch_conv.C.
Peterson, John W.,
Tessellation of NURB Surfaces,
p. 286-320, code: p. 294-319, nurb_polyg/.
Shene, Ching-Kuang,
Equations of Cylinders and Cones,
p. 321-323.
Bloomenthal, Jules,
An Implicit Surface Polygonizer,
p. 324-349, code: p. 334-349, implicit.c.
Shene, Ching-Kuang,
Computing the Intersection of a Line and a Cylinder,
p. 353-355.
Cychosz, Joseph M., and Waggenspack, Warren N., Jr.,
Intersecting a Ray with a Cylinder,
p. 356-365, code: p. 361-364, ray_cyl.c.
Cohen, Daniel,
Voxel Traversal along a 3D Line,
p. 366-369, code: p. 368, vox_traverse.c.
Chiu, Kenneth, Shirley, Peter, and Wang, Changyaw,
Multi-Jittered Sampling,
p. 370-374, code: p. 373-374, multi_jitter/.
Heckbert, Paul S.,
A Minimal Ray Tracer,
p. 375-381, code: p. 378-380, minray/.
Schlick, Christophe,
A Fast Alternative to Phong's Specular Model,
p. 385-387.
Fisher, Frederick, and Woo, Andrew,
R.E versus N.H Specular Highlights,
p. 388-400.
Schlick, Christophe,
Fast Alternatives to Perlin's Bias and Gain Functions,
p. 401-403.
Behrens, Uwe,
Fence Shading,
p. 404-409.
Kopp, Manfred, and Gervautz, Michael,
XOR-Drawing with Guaranteed Contrast,
p. 413-414.
Ward, Greg,
A Contrast-Based Scalefactor for Luminance Display,
p. 415-421.
Schlick, Christophe,
High Dynamic Range Pixels,
p. 422-429, code: p. 425-428, dyn_range/.
Schlag, John,
Fast Embossing Effects on Raster Image Data,
p. 433-437, code: p. 435-436, emboss.c.
Heckbert, Paul S.,
Bilinear Coons Patch Image Warping,
p. 438-446, code: p. 441-444, coons_warp.c.
Wolberg, George, and Massalin, Henry,
Fast Convolution with Packed Lookup Tables,
p. 447-464, code: p. 455-463, convolve.c.
Cychosz, Joseph M.,
Efficient Binary Image Thinning using Neighborhood Maps,
p. 465-473, code: p. 470-472, thin_image.c.
Zuiderveld, Karel,
Contrast Limited Adaptive Histogram Equalization,
p. 474-485, code: p. 479-484, clahe.c.
Paeth, Alan W.,
Ideal Tiles for Shading and Halftoning,
p. 486-492.
Christensen, Jon, Marks, Joe, and Shieber, Stuart,
Placing Text Labels on Maps and Diagrams,
p. 497-504.
Szirmay-Kalos, László,
Dynamic Layout Algorithm to Display General Graphs,
p. 505-517, code: p. 511-517, graph_layout/.
Hill, Steve,
Tri-linear Interpolation,
p. 521-525, code: p. 523-524, trilerp.c.
Eker, Steven,
Faster Linear Interpolation,
p. 526-533, code: p. 532-533, interp_fast.c.
Doué, Jean-François,
C++ Vector and Matrix Algebra Routines,
p. 534-557, code: p. 535-557, vec_mat/.
Glassner, Andrew, and Haines, Eric,
C Header File and Vector Library,
p. 558-570, code: p. 558-570, GraphicsGems.c GraphicsGems.h.
Herbison-Evans, Don,
Solving Quartics and Cubics for Graphics,
p. 3-15, code: ch1-1/.
Turkowski, Ken,
Computing the Inverse Square Root,
p. 16-21, code: p. 17-19, ch1-2/.
Turkowski, Ken,
Fixed Point Square Root,
p. 22-24, code: p. 23, ch1-3/.
Shoemake, Ken,
Rational Approximation,
p. 25-32, code: p. 29-31, ch1-4/.
Van Gelder, Allen,
Efficient Computation of Polygon Area and Polyhedron Volume,
p. 35-41.
Carvalho, Paulo Cezar Pinto, and Cavalcanti, Paulo Roma,
Point in Polyhedron Testing Using Spherical Polygons,
p. 42-49, code: p. 46-49, ch2-2/.
Glassner, Andrew,
Clipping a Concave Polygon,
p. 50-54.
Hanson, Andrew J.,
Rotations for N-dimensional Graphics,
p. 55-64.
Buckley, Robert,
Parallelohedra and Uniform Color Quantization,
p. 65-71.
Hill, Kenneth J.,
Matrix-based Ellipse Geometry,
p. 72-77, code: ch2-6/.
Paeth, Alan W.,
Distance Approximations and Bounding Polyhedra,
p. 78-87, code: p. 85-86, ch2-7/.
Alciatore, David, and Miranda, Rick,
The Best Least-Squares Line Fit,
p. 91-97.
Hill, Steve, and Roberts, Jonathan C.,
Surface Models and the Resolution of N-Dimensional Cell Ambiguity,
p. 98-106.
Arata, Louis K.,
Tri-cubic Interpolation,
p. 107-110, code: p. 108-109, ch3-3/.
Miller, Robert D.,
Transforming Coordinates From One Coordinate Plane To Another,
p. 111-120, code: p. 115-120, ch3-4/.
Chin, Norman,
A Walk Through BSP Trees,
p. 121-138, code: p. 131-138, ch3-5/.
Blanc, Carole,
Generic Implementation of Axial Deformation Techniques,
p. 139-145, code: p. 141-144, ch3-6/.
Goldman, Ronald,
Identities for the Univariate, Bivariate Bernstein Basis Functions,
p. 149-162.
Goldman, Ronald,
Identities for the B-Spline Basis Functions,
p. 163-167.
Turkowski, Ken,
Circular Arc Subdivision,
p. 168-172, code: p. 170-171, ch4-3/.
de Figueiredo, Luiz Henrique,
Adaptive Sampling of Parametric Curves,
p. 173-178, code: p. 177, ch4-4/.
Ahn, Jaewoo,
Fast Generation of Ellipsoids,
p. 179-190, code: p. 185-190, ch4-5/.
Bajaj, Chandrajit, and Xu, Guoliang,
Sparse Smooth Connection Between Bézier/B-Spline Curves,
p. 191-198.
Gravesen, Jens,
The Length of Bézier Curves,
p. 199-205, code: ch4-7/.
Miller, Robert D.,
Quick and Simple Bézier Curve Drawing,
p. 206-209, code: p. 207-209, ch4-8/.
Shoemake, Ken,
Linear Form Curves,
p. 210-223, code: p. 220-222, ch4-9/.
Shene, Ching-Kuang,
Computing the Intersection of a Line and a Cone,
p. 227-231.
Schlick, Christophe, and Subrenat, Gilles,
Ray Intersection of Tessellated Surfaces: Quad Vs Triangle,
p. 232-241, code: p. 237-240, ch5-2/.
Möller, Tomas,
Faster Ray Tracing Using Scanline Rejection,
p. 242-257, code: p. 249-257, ch5-3/.
Leipelt, Andreas,
Ray Tracing a Swept Sphere,
p. 258-267, code: p. 261-267, ch5-4/.
Márton, Gábor,
Acceleration of Ray Tracing via Voronoi-diagrams,
p. 268-284, code: p. 276-283, ch5-5/.
Zimmerman, Kurt,
Direct Lighting Models for Ray Tracing with Cylindrical Lamps,
p. 285-289.
Feda, Martin,
Improving Intermediate Radiosity Using Directional Light,
p. 290-293.
Purgathofer, Werner, Tobler, Robert F., and Geiler, Manfred,
Improved Threshold Matrices for Ordered Dithering,
p. 297-301.
Wong, Tien-tsin, and Hsu, Siu-chi,
Halftoning with Selective Precipitation and Adaptive Clustering,
p. 302-313, code: p. 306-312, ch6-2/.
Eker, Steven,
Faster Pixel-Perfect Line Clipping,
p. 314-322, code: p. 319-322, ch6-3/.
Doué, Jean-François, and Rubio, Ruben Gonzalez,
Efficient and Robust 2D Shape Vectorization,
p. 323-337, code: p. 329-336, ch6-4/.
Hsu, Siu-chi, and Lee, I.H.H.,
Reversable Straight Line Edge Reconstruction,
p. 338-354, code: p. 342-353, ch6-5/.
Sharma, Rajesh,
Priority-based Adaptive Image Refinement,
p. 355-358.
Cross, Robert A.,
Sampling Patterns Optimized for Uniform Distribution of Edges,
p. 359-363, code: p. 362, ch6-7/.
Schlick, Christophe,
Wave Generators for Computer Graphics,
p. 367-374, code: p. 371-374, ch7-1/.
Green, Daniel, and Hatch, Don,
Fast Polygon-Cube Intersection Testing,
p. 375-379, code: ch7-2/.
Bouma, William, and Vanecek, George, Jr.,
Velocity-based Collision Detection,
p. 380-385, code: p. 383-385, ch7-3/.
Vanecek, George, Jr.,
Spatial Partitioning of a Polygon by a Plane,
p. 386-393, code: p. 387-393, ch7-4/.
Narkhede, Atul, and Manocha, Dinesh,
Fast Polygon Triangulation Based on Seidel's Algorithm,
p. 394-397, code: ch7-5/.
Karinthi, Raghu,
Accurate Z-buffer Rendering,
p. 398-399, code: ch7-6/.
Paeth, Alan W., Scheepers, Ferdi, and May, Stephen,
A Survey of Graphics Libraries,
p. 400-406, code: ch7-7/.
Last change: June 12, 2001
Eric Haines, Gems archivist / erich@acm.org