Cover
Copyright
Contents
Preface
1 Basics
1.1 Graphics Pipeline
1.2 Mathematical Descriptions
1.3 Position
1.4 Distance
1.5 Complements and Details
1.5.1 Pythagorean Theorem Continued
1.5.2 Law of Cosines Continued
1.5.3 Law of Sines
1.5.4 Numerical Calculations
1.6 Exercises
1.6.1 Programming Exercises
2 Vector Algebra
2.1 Basic Vector Characteristics
2.1.1 Points Versus Vectors
2.1.2 Addition
2.1.3 Scalar Multiplication
2.1.4 Subtraction
2.1.5 Vector Calculations
2.1.6 Properties
2.1.7 Higher Dimensions
2.2 Two Important Products
2.2.1 Dot Product
2.2.2 Cross Product
2.3 Complements and Details
2.3.1 Vector History
2.3.2 More about Points Versus Vectors
2.3.3 Vector Spaces and Affine Spaces
2.4 Exercises
2.4.1 Programming Exercises
3 Vector Geometry
3.1 Lines and Planes
3.1.1 Vector Description of Lines
3.1.2 Vector Description of Planes
3.2 Distances
3.2.1 Point to a Line
3.2.2 Point to a Plane
3.2.3 Parallel Planes and Line to a Plane
3.2.4 Line to a Line
3.3 Angles
3.4 Intersections
3.4.1 Intersecting Lines
3.4.2 Lines Intersecting Planes
3.4.3 Intersecting Planes
3.5 Additional Key Applications
3.5.1 Intersection of Line Segments
3.5.2 Intersection of Line and Sphere
3.5.3 Areas and Volumes
3.5.4 Triangle Geometry
3.5.5 Tetrahedron
3.6 Homogeneous Coordinates
3.6.1 Two Dimensions
3.6.2 Three Dimensions
3.7 Complements and Details
3.7.1 Intersection of Three Planes Continued
3.7.2 Homogeneous Coordinates Continued
3.8 Exercises
3.8.1 Programming Exercises
4 Transformations
4.1 Types of Transformations
4.2 Linear Transformations
4.2.1 Rotation in Two Dimensions
4.2.2 Reflection in Two dimensions
4.2.3 Scaling in Two Dimensions
4.2.4 Matrix Properties
4.3 Three Dimensions
4.3.1 Rotations in Three Dimensions
4.3.2 Reflections in Three Dimensions
4.3.3 Scaling and Shear in Three Dimensions
4.4 Affine Transformations
4.4.1 Transforming Homogeneous Coordinates
4.4.2 Perspective Transformations
4.4.3 Transforming Normals
4.4.4 Summary
4.5 Complements and Details
4.5.1 Vector Approach to Reflection in an Arbitrary Plane
4.5.2 Vector Approach to Arbitrary Rotations
4.6 Exercises
4.6.1 Programming Exercises
5 Orientation
5.1 Cartesian Coordinate Systems
5.2 Cameras
5.2.1 Moving the Camera or Objects
5.2.2 Euler Angles
5.2.3 Quaternions
5.2.4 Quaternion Algebra
5.2.5 Rotations
5.2.6 Interpolation: Slerp
5.2.7 From Euler Angles and Quaternions to Rotation Matrices
5.3 Other Coordinate Systems
5.3.1 Non-orthogonal Axes
5.3.2 Polar, Cylindrical, and Spherical Coordinates
5.3.3 Barycentric Coordinates
5.4 Complements and Details
5.4.1 Historical Note: Descartes
5.4.2 Historical Note: Hamilton
5.4.3 Proof of Quaternion Rotation
5.5 Exercises
5.5.1 Programming Exercises
6 Polygons and Polyhedra
6.1 Triangles
6.1.1 Barycentric Coordinates
6.1.2 Areas and Barycentric Coordinates
6.1.3 Interpolation
6.1.4 Key Points in a Triangle
6.2 Polygons
6.2.1 Convexity
6.2.2 Angles and Area
6.2.3 Inside and Outside
6.2.4 Triangulation
6.2.5 Delaunay Triangulation
6.3 Polyhedra
6.3.1 Regular Polyhedra
6.3.2 Volume of Polyhedra
6.3.3 Euler's Formula
6.3.4 Rotational Symmetries
6.4 Complements and Details
6.4.1 Generalized Barycentric Coordinates
6.4.2 Data Structures
6.5 Exercises
6.5.1 Programming Exercises
7 Curves and Surfaces
7.1 Curve Descriptions
7.1.1 Lagrange Interpolation
7.1.2 Matrix Form for Curves
7.2 Bézier Curves
7.2.1 Properties for Two-Dimensional B\'ezier Curves
7.2.2 Joining Bézier Curve Segments
7.2.3 Three-Dimensional Bézier Curves
7.2.4 Rational Bézier Curves
7.3 B-Splines
7.3.1 Linear Uniform B-Splines
7.3.2 Quadratic Uniform B-Splines
7.3.3 Cubic Uniform B-Splines
7.3.4 B-Spline Properties
7.4 Nurbs
7.5 Surfaces
7.6 Complements and Details
7.6.1 Adding Control Points to Bézier Curves
7.6.2 Quadratic B-Spline Blending Functions
7.7 Exercises
7.7.1 Programming Exercises
8 Visibility
8.1 Viewing
8.2 Perspective Transformation
8.2.1 Clipping
8.2.2 Interpolating the z Coordinate
8.3 Hidden Surfaces
8.3.1 Back Face Culling
8.3.2 Painter's Algorithm
8.3.3 Z-Buffer
8.4 Ray Tracing
8.4.1 Bounding Volumes
8.4.2 Bounding Boxes
8.4.3 Bounding Spheres
8.5 Complements and Details
8.5.1 Frustum Planes
8.5.2 Axes for Bounding Volumes
8.6 Exercises
8.6.1 Programming Exercises
9 Lighting
9.1 Color Coordinates
9.2 Elementary Lighting Models
9.2.1 Gouraud and Phong Shading
9.2.2 Shadows
9.2.3 BRDFs in Lighting Models
9.3 Global Illumination
9.3.1 Ray Tracing
9.3.2 Radiosity
9.4 Textures
9.4.1 Mapping
9.4.2 Resolution
9.4.3 Procedural Textures
9.5 Complements and Details
9.5.1 Conversion between RGB and HSV
9.5.2 Shadows on Arbitrary Planes
9.5.3 Derivation of the Radiosity Equation
9.6 Exercises
9.6.1 Programming Exercises
10 Other Paradigms
10.1 Pixels
10.1.1 Bresenham Line Algorithm
10.1.2 Anti-Aliasing
10.1.3 Compositing
10.2 Noise
10.2.1 Random Number Generation
10.2.2 Distributions
10.2.3 Sequences of Random Numbers
10.2.4 Uniform and Normal Distributions
10.2.5 Terrain Generation
10.2.6 Noise Generation
10.3 L-Systems
10.3.1 Grammars
10.3.2 Turtle Interpretation
10.3.3 Analysis of Grammars
10.3.4 Extending L-Systems
10.4 Exercises
10.4.1 Programming Exercises
Appendix A Geometry and Trigonometry
A.1 Triangles
A.2 Angles
A.3 Trigonometric Functions
Appendix B Linear Algebra
B.1 Systems of Linear Equations
B.1.1 Solving the System
B.2 Matrix Properties
B.3 Vector Spaces
References
Index
End User License Agreement