[comp.graphics] Graphics Gems table of contents

ph@miro.Berkeley.EDU (Paul Heckbert) (08/03/90)

Here is a table of contents for the book "Graphics Gems" that will be coming
out through Academic Press at SIGGRAPH:

"Graphics Gems", edited by Andrew Glassner, 833 pages total,
158 page C code appendix.
The C code will be available in a few days via anonymous ftp
(watch comp.graphics for an announcement).

(c) copyright 1990, Academic Press, New York
(*) Indicates an implementation in C in Appendix II

Preface
Introduction
Mathematical Notation
Pseudo-Code
Contributors 

1.  2D Geometry
    Useful 2D Geometry
      - Andrew Glassner
    Trigonometry Summary 
    Useful Trigonometry
      - Andrew Glassner
    Trigonometric Functions at Select Points
      - Alan W. Paeth
    Triangles
      - Ronald Goldman
    Generating Random Points in Triangles (*)
      - Greg Turk
    Fast Line-Edge Intersections on a Uniform Grid (*)
      - Andrew Shapira
    Anti-Aliasing Summary 
    Area of Intersection: Circle and a Half-Plane
      - Kelvin Thompson
    Area of Intersection: Circle and a Thick Line
      - Kelvin Thompson
    Area of Intersection: Two Circles
      - Kelvin Thompson
    Anti-Aliasing Summary
    Vertical Distance From a Point to a Line
      - Kelvin Thompson
    A Fast 2D Point-on-Line Test (*)
      - Alan W. Paeth
    Fast Circle-Rectangle Intersection Checking (*)
      - Clifford A. Shaffer

2.  2D Rendering
    Circles of Integral Radius on Integer Lattices
      - Alan W. Paeth
    Nice Numbers for Graph Labels (*)
      - Paul S. Heckbert
    Efficient Generation of Sampling Jitter Using Look-up Tables (*)
      - Joseph M. Cychosz
    Scan Conversion Summary
    Fast Anti-Aliasing Polygon Scan Conversion (*)
      - Jack C. Morrison
    Generic Convex Polygon Scan Conversion and Clipping (*)
      - Paul S. Heckbert
    Concave Polygon Scan Conversion (*)
      - Paul S. Heckbert
    Fast Scan Conversion of Arbitrary Polygons
      - Bob Wallis
    Line Drawing Summary
    Digital Line Drawing (*)
      - Paul S. Heckbert
    Symmetric Double Step Line Algorithm (*)
      - Brian Wyvill
    Rendering Anti-Aliased Lines (*)
      - Kelvin Thompson
    An Algorithm for Filling in 2D Wide Line Bevel Joints
      - Jack Ritter
    Rendering Fat Lines on a Raster Grid
      - Bob Wallis
    Two-Dimensional Clipping: A Vector-Based Approach (*)
      - Hans J.W. Spoelder, Fons H. Ullings
    Periodic Tilings of the Plane on a Raster Grid
      - Greg Lee, Mike Penk, Bob Wallis

3.  Image Processing
    Anti-Aliasing Filters Summary
    Convenient Anti-Aliasing Filters That Minimize "Bumpy" Sampling
      - Mark J. Pavicic
    FIlters for Common Resampling Tasks
      - Ken Turkowski
    Smoothing Enlarged Monochrome Images
      - John Olsen
    Median Finding on a 3x3 Grid (*)
      - Alan W. Paeth
    Ordered Dithering (*)
      - Stephen Hawley
    A Fast Algorithm for General Raster Rotation
      - Alan W. Paeth
    Useful 1-to-1 Pixel Transforms
      - Dale Schumacher
    Alpha Blending
      - Kelvin Thompson

4.  Frame Buffer Techniques
    Frame Buffers and Color Maps
      - Andrew Glassner
    Reading a Write-Only Write Mask
      - Alan W. Paeth
    A Digital "Dissolve" Effect (*)
      - Mike Morton
    Mapping RGB Triples onto Four Bits (*)
      - Alan W. Paeth
    What Are the Coordinates of a Pixel?
      - Paul S. Heckbert
    Proper Treatment of Pixels as Integers (*)
      - Alan W. Paeth
    Normal Coding
      - Andrew Glassner
    Recording Animation in Binary Order for Progressive Temporal Refinement (*)
      - Paul S. Heckbert
    1-to-1 Pixel Transforms Optimized Through Color Map Manipulations
      - Dale Schumacher
    A Seed Fill Algorithm (*)
      - Paul S. Heckbert
    Filling a Region in a Frame Buffer
      - Ken Fishkin
    Precalculating Addresses for Fast Fills, Circles, and Lines
      - Bill Wallace
    A SImple Method for Color Quantization: Octree Quantization
      - Michael Gervautz, Werner Purgathofer

5.  3D Geometry
    Useful 3D Geometry
      - Andrew Glassner
    An Efficient Bounding Sphere (*)
      - Jack Ritter
    Intersection of Two Lines in Three-Space
      - Ronald Goldman
    Intersection of Three Planes
      - Ronald Goldman
    Mapping Summary
    Digital Cartography for Computer Graphics
      - Alan W. Paeth
    Albers Equal-Area Conic Map Projection (*)
      - Paul D. Bame
    Boxes and Spheres Summary
    Spheres-to-Voxels Conversion
      - Claudio Montani, Roberto Scopigno
    A Simple Method for Box-Sphere Intersection Testing (*)
      - James Arvo

6.  3D Rendering
    3D Grid Hashing Function (*)
      - Brian Wyvill
    Backface Culling
      - Jeff Hultquist
    Fast Dot Products for Shading
      - Mark Lee
    Scanline Depth Gradient of a Z-Buffered Triangle
      - Kelvin Thompson
    Simulating Fog and Haze
      - Andrew Glassner
    Interpretation of Texture Map Indices
      - Andrew Glassner
    Multidimensional Sum Tables
      - Andrew Glassner

7.  Ray Tracing
    A Simple Ray Rejection Test
      - Jack Ritter
    Ray-Object Intersection Summary 
    Intersection of a Ray with a Sphere
      - Jeff Hultquist
    An Efficient Ray-Polygon Intersection (*)
      - Didier Badouel
    Fast Ray-Polygon Intersection
      - Andrew Woo
    Fast Ray-Box Intersection (*)
      - Andrew Woo
    Shadow Attenuation for Ray Tracing Transparent Objects 
      - Andrew Pearce

8.  Numerical and Programming Techniques
    Root Finding Summary
    Cubic and Quartic Roots (*)
      - Jochen Schwarze
    A Bezier Curve-Based Root Finder
      - Philip J. Schneider
    Using Strum Sequences to Bracket Real Roots of Polynomial Equations (*)
      - D.G. Hook, P.R. McAree
    Distance Measures Summary
    A High-Speed, Low Precision Square Root (*)
      - Paul Lalonde, Robert Dawson
    A Fast Approximation to the Hypotenuse (*)
      - Alan W. Paeth
    A Fast Approximation to 3D Euclidean Distance
      - Jack Ritter
    Full-Precision Constants
      - Kelvin Thompson
    COnverting between Bits and Digits
      - Kelvin Thompson
    Storage-Free Swapping
      - Brian Wyvill
    Generating Random Integers
      - Andrew Glassner
    Fast 2D-3D Rotation
      - Jack Ritter
    Bit Patterns for Encoding Angles
      - Ken Shoemake 
    Bit Interleaving for Quad- or Octrees (*)
      - Clifford A. Shaffer
    A Fast HSL-to-RGB Transform (*)
      - Ken Fishkin

9.  Matrix Techniques
    Matrix Identities
      - Kelvin Thompson
    Rotation Matrix Methods Summary
    Transforming Axes
      - Kelvin Thompson
    Fast Matrix Multiplication
      - Kelvin Thompson
    A Virtual Trackball
      - Jeff Hultquist
    Matrix Orthogonalization (*)
      - Eric Raible
    Rotation Tools
      - Michael E. Pique
    Matrix Inversion (*)
      - Richard Carling
    Matrices and Transformations
      - Ronald Goldman
    Efficient Post-Concatenation of Transformation Matrices (*)
      - Joseph M. Cychosz

10.  Modeling and Transformations
    Transformation Identities
      - Ned Greene
    Fixed-Point Trigonometry with CORDIC Iterations (*)
      - Ken Turkowski
    Using Quaternions for Coding 3D Transformations (*)
      - Patrick-Gilles Maillot
    3D Viewing and Rotation Using Orthonormal Bases (*)
      - Steve Cunningham
    The Use of Coordinate Frames in Computer Graphics
      - Ken Turkowski
    Forms, Vectors, and Transforms (*)
      - Bob Wallis
    Properties of Surface-Normal Transformations
      - Ken Turkowski
    Transforming Axis-Aligned Bounding Boxes (*)
      - James Arvo
    Constructing Shapes Summary
    Defining Surfaces from Sampled Data
      - Mark Hall
    Defining Surfaces from Contour Data
      - Mark Hall
    Computing Surface Normals for 3D Models
      - Andrew Glassner
    Calculation of Reference Frames along a Space Curve
      - Jules Bloomenthal

11.  Curves and Surfaces
    Planar Cubic Curves
      - Andrew Glassner
    Explicit Cubic Spline Interpolation Formulas
      - Richard Rasala
    Fast Spline Drawing
      - Julian Gomez
    Some Properties of Bezier Curves
      - Ronald Goldman
    Tutorial on Forward Differencing
      - Bob Wallis
    Integration of Bernstein Basis Functions
      - Ronald Goldman
    Solving the Nearest-Point-on-Curve Problem (*)
      - Philip J. Schneider
    An Algorithm for Automatically Fitting Digitized Curves (*)
      - Philip J. Schneider

Appendix I: C Utilities
    Graphics Gems C Header Files
      - Andrew Glassner
    2D and 3D Vector C Library
      - Andrew Glassner
    Memory Allocation in C
      - Jeff Hultquist
    Two Useful C Macros
      - Eric Raible
    How to Build Circular Structures in C
      - Kelvin Thompson
    How to Use C Register Variables to Point to 2D Arrays
      - Kelvin Thompson

Appendix 2: C Implementations
    The C Code follows the same order as the Gems

References
Index