| Preface |
|
xix | |
| Authors |
|
xxiii | |
| Introduction |
|
xxv | |
| 1 Representing Real Numbers |
|
1 | (32) |
|
|
|
1 | (1) |
|
|
|
2 | (3) |
|
1.2.1 Fixed-Point Numbers |
|
|
2 | (1) |
|
|
|
3 | (1) |
|
1.2.3 Precision and Error |
|
|
3 | (2) |
|
1.3 Floating-Point Numbers |
|
|
5 | (3) |
|
1.3.1 Review: Scientific Notation |
|
|
5 | (1) |
|
1.3.2 Restricted Scientific Notation |
|
|
5 | (1) |
|
1.3.3 Binary Scientific Notation |
|
|
6 | (2) |
|
1.4 IEEE 754 Floating-Point Standard |
|
|
8 | (18) |
|
1.4.1 Basic Representation |
|
|
8 | (2) |
|
1.4.2 Range and Precision |
|
|
10 | (1) |
|
1.4.3 Arithmetic Operations |
|
|
11 | (4) |
|
1.4.3.1 Addition and Subtraction |
|
|
12 | (1) |
|
|
|
13 | (1) |
|
|
|
14 | (1) |
|
|
|
15 | (3) |
|
|
|
15 | (1) |
|
|
|
16 | (1) |
|
1.4.4.3 Nonnumeric Values |
|
|
17 | (1) |
|
|
|
18 | (2) |
|
1.4.5.1 Normalized Mantissas and the Hole at Zero |
|
|
18 | (1) |
|
1.4.5.2 Denormals and Gradual Underflow |
|
|
19 | (1) |
|
1.4.6 Catastrophic Cancelation |
|
|
20 | (3) |
|
1.4.7 Comparing Floating-Point Numbers |
|
|
23 | (1) |
|
|
|
24 | (1) |
|
|
|
24 | (2) |
|
1.5 Real-World Floating Point |
|
|
26 | (5) |
|
1.5.1 Internal FPU Precision |
|
|
26 | (1) |
|
|
|
27 | (2) |
|
1.5.2.1 Performance of Denormalized Numbers |
|
|
27 | (2) |
|
1.5.2.2 Software Floating-Point Emulation |
|
|
29 | (1) |
|
1.5.3 IEEE Specification Compliance |
|
|
29 | (1) |
|
1.5.4 Precision in Graphics Processing Units |
|
|
30 | (1) |
|
|
|
31 | (1) |
|
|
|
31 | (2) |
| 2 Vectors and Points |
|
33 | (44) |
|
|
|
33 | (1) |
|
|
|
33 | (25) |
|
|
|
34 | (2) |
|
|
|
36 | (3) |
|
|
|
36 | (1) |
|
|
|
37 | (2) |
|
|
|
39 | (1) |
|
2.2.3 Linear Combinations and Basis Vectors |
|
|
39 | (3) |
|
2.2.4 Basic Vector Class Implementation |
|
|
42 | (2) |
|
|
|
44 | (2) |
|
|
|
46 | (4) |
|
2.2.7 Gram—Schmidt Orthogonalization |
|
|
50 | (1) |
|
|
|
51 | (4) |
|
|
|
55 | (3) |
|
|
|
58 | (1) |
|
|
|
58 | (9) |
|
|
|
58 | (2) |
|
|
|
60 | (2) |
|
2.3.3 Affine Combinations |
|
|
62 | (1) |
|
2.3.4 Point Implementation |
|
|
63 | (1) |
|
2.3.5 Polar and Spherical Coordinates |
|
|
64 | (3) |
|
|
|
67 | (4) |
|
|
|
67 | (1) |
|
2.4.2 Parameterized Lines |
|
|
68 | (1) |
|
2.4.3 Generalized Line Equation |
|
|
69 | (2) |
|
|
|
71 | (1) |
|
|
|
71 | (2) |
|
2.5.1 Parameterized Planes |
|
|
71 | (1) |
|
2.5.2 Generalized Plane Equation |
|
|
72 | (1) |
|
|
|
73 | (1) |
|
2.6 Polygons and Triangles |
|
|
73 | (3) |
|
|
|
76 | (1) |
| 3 Linear Transformations and Matrices |
|
77 | (38) |
|
|
|
77 | (1) |
|
3.2 Linear Transformations |
|
|
78 | (4) |
|
|
|
78 | (1) |
|
3.2.2 Linear Transformations and Basis Vectors |
|
|
79 | (1) |
|
3.2.3 Range and Null Space |
|
|
80 | (2) |
|
|
|
82 | (15) |
|
3.3.1 Introduction to Matrices |
|
|
82 | (2) |
|
|
|
84 | (1) |
|
3.3.2.1 Matrix Addition and Scalar Multiplication |
|
|
84 | (1) |
|
|
|
84 | (1) |
|
3.3.3 Vector Representation |
|
|
85 | (1) |
|
|
|
86 | (1) |
|
|
|
87 | (2) |
|
3.3.6 Transforming Vectors |
|
|
89 | (2) |
|
3.3.7 Combining Linear Transformations |
|
|
91 | (2) |
|
|
|
93 | (1) |
|
3.3.9 Performing Vector Operations with Matrices |
|
|
94 | (1) |
|
|
|
95 | (2) |
|
3.4 Systems of Linear Equations |
|
|
97 | (6) |
|
|
|
97 | (1) |
|
3.4.2 Solving Linear Systems |
|
|
98 | (2) |
|
3.4.3 Gaussian Elimination |
|
|
100 | (3) |
|
|
|
103 | (3) |
|
|
|
103 | (2) |
|
|
|
105 | (1) |
|
|
|
106 | (7) |
|
|
|
106 | (2) |
|
3.6.2 Computing the Determinant |
|
|
108 | (2) |
|
3.6.3 Determinants and Elementary Row Operations |
|
|
110 | (2) |
|
3.6.4 Adjoint Matrix and Inverse |
|
|
112 | (1) |
|
3.7 Eigenvalues and Eigenvectors |
|
|
113 | (1) |
|
|
|
114 | (1) |
| 4 Affine Transformations |
|
115 | (36) |
|
|
|
115 | (1) |
|
4.2 Affine Transformations |
|
|
116 | (4) |
|
|
|
116 | (2) |
|
|
|
118 | (1) |
|
4.2.3 Formal Representation |
|
|
119 | (1) |
|
4.3 Standard Affine Transformations |
|
|
120 | (19) |
|
|
|
120 | (2) |
|
|
|
122 | (8) |
|
|
|
130 | (1) |
|
|
|
131 | (3) |
|
|
|
134 | (2) |
|
4.3.6 Applying an Affine Transformation around an Arbitrary Point |
|
|
136 | (2) |
|
4.3.7 Transforming Plane Normals |
|
|
138 | (1) |
|
4.4 Using Affine Transformations |
|
|
139 | (8) |
|
4.4.1 Manipulation of Game Objects |
|
|
139 | (4) |
|
4.4.1.1 Local and World Coordinate Frames |
|
|
139 | (1) |
|
|
|
140 | (3) |
|
4.4.2 Matrix Decomposition |
|
|
143 | (2) |
|
4.4.3 Avoiding Matrix Decomposition |
|
|
145 | (2) |
|
|
|
147 | (2) |
|
|
|
149 | (2) |
| 5 Orientation Representation |
|
151 | (26) |
|
|
|
151 | (1) |
|
|
|
152 | (1) |
|
|
|
152 | (5) |
|
|
|
152 | (2) |
|
|
|
154 | (1) |
|
|
|
155 | (1) |
|
|
|
155 | (1) |
|
|
|
156 | (1) |
|
5.4 Axis—Angle Representation |
|
|
157 | (4) |
|
|
|
157 | (1) |
|
|
|
158 | (2) |
|
|
|
160 | (1) |
|
|
|
160 | (1) |
|
|
|
161 | (1) |
|
|
|
161 | (14) |
|
|
|
161 | (1) |
|
5.5.2 Quaternions as Rotations |
|
|
162 | (1) |
|
5.5.3 Addition and Scalar Multiplication |
|
|
163 | (1) |
|
|
|
163 | (1) |
|
5.5.5 Magnitude and Normalization |
|
|
164 | (1) |
|
|
|
164 | (1) |
|
|
|
165 | (3) |
|
|
|
168 | (2) |
|
5.5.9 Identity and Inverse |
|
|
170 | (1) |
|
|
|
171 | (3) |
|
5.5.11 Shortest Path of Rotation |
|
|
174 | (1) |
|
5.5.12 Quaternions and Transformations |
|
|
175 | (1) |
|
|
|
175 | (2) |
| 6 Interpolation |
|
177 | (54) |
|
|
|
177 | (1) |
|
6.2 Interpolation of Position |
|
|
178 | (22) |
|
6.2.1 General Definitions |
|
|
178 | (2) |
|
6.2.2 Linear Interpolation |
|
|
180 | (3) |
|
|
|
180 | (2) |
|
6.2.2.2 Piecewise Linear Interpolation |
|
|
182 | (1) |
|
|
|
183 | (8) |
|
|
|
183 | (3) |
|
6.2.3.2 Manipulating Tangents |
|
|
186 | (2) |
|
6.2.3.3 Automatic Generation of Hermite Curves |
|
|
188 | (2) |
|
6.2.3.4 Natural End Conditions |
|
|
190 | (1) |
|
6.2.4 Catmull—Rom Splines |
|
|
191 | (2) |
|
6.2.5 Kochanek—Bartels Splines |
|
|
193 | (2) |
|
|
|
195 | (3) |
|
|
|
195 | (2) |
|
6.2.6.2 Piecewise Bezier Curves |
|
|
197 | (1) |
|
|
|
198 | (2) |
|
6.3 Interpolation of Orientation |
|
|
200 | (10) |
|
|
|
201 | (1) |
|
6.3.2 Linear Interpolation |
|
|
202 | (4) |
|
6.3.3 Spherical Linear Interpolation |
|
|
206 | (3) |
|
|
|
208 | (1) |
|
6.3.4 Performance Improvements |
|
|
209 | (1) |
|
|
|
210 | (9) |
|
6.4.1 Forward Differencing |
|
|
211 | (3) |
|
6.4.2 Midpoint Subdivision |
|
|
214 | (2) |
|
6.4.3 Computing Arc Length |
|
|
216 | (3) |
|
6.5 Controlling Speed along a Curve |
|
|
219 | (6) |
|
6.5.1 Moving at Constant Speed |
|
|
219 | (4) |
|
6.5.2 Moving at Variable Speed |
|
|
223 | (2) |
|
|
|
225 | (4) |
|
|
|
229 | (2) |
| 7 Viewing and Projection |
|
231 | (44) |
|
|
|
231 | (1) |
|
7.2 View Frame and View Transformation |
|
|
232 | (7) |
|
7.2.1 Defining a Virtual Camera |
|
|
232 | (2) |
|
7.2.2 Constructing the View-to-World Transformation |
|
|
234 | (1) |
|
7.2.3 Controlling the Camera |
|
|
235 | (3) |
|
7.2.4 Constructing the World-to-View Transformation |
|
|
238 | (1) |
|
7.3 Projective Transformation |
|
|
239 | (19) |
|
|
|
239 | (2) |
|
7.3.2 Normalized Device Coordinates |
|
|
241 | (1) |
|
|
|
242 | (3) |
|
7.3.4 Homogeneous Coordinates |
|
|
245 | (1) |
|
7.3.5 Perspective Projection |
|
|
246 | (6) |
|
7.3.6 Oblique Perspective |
|
|
252 | (2) |
|
7.3.7 Orthographic Parallel Projection |
|
|
254 | (2) |
|
7.3.8 Oblique Parallel Projection |
|
|
256 | (2) |
|
|
|
258 | (10) |
|
|
|
258 | (3) |
|
|
|
261 | (1) |
|
7.4.3 General Plane Clipping |
|
|
262 | (3) |
|
7.4.4 Homogeneous Clipping |
|
|
265 | (2) |
|
7.4.5 Extracting Clip Planes |
|
|
267 | (1) |
|
7.5 Screen Transformation |
|
|
268 | (3) |
|
|
|
270 | (1) |
|
|
|
271 | (2) |
|
7.7 Management of Viewing Transformations |
|
|
273 | (1) |
|
|
|
274 | (1) |
| 8 Geometry and Programmable Shading |
|
275 | (52) |
|
|
|
275 | (1) |
|
|
|
276 | (10) |
|
|
|
276 | (1) |
|
|
|
277 | (1) |
|
8.2.3 Color-Range Limitation |
|
|
277 | (1) |
|
8.2.4 Operations on Colors |
|
|
278 | (1) |
|
|
|
279 | (1) |
|
8.2.6 Remapping Colors into the Unit Cube |
|
|
280 | (3) |
|
8.2.7 Color Storage Formats |
|
|
283 | (1) |
|
|
|
284 | (2) |
|
|
|
286 | (4) |
|
8.3.1 Per-Vertex Attributes |
|
|
286 | (1) |
|
8.3.2 An Object's Vertices |
|
|
287 | (3) |
|
|
|
288 | (2) |
|
8.4 Surface Representation |
|
|
290 | (4) |
|
8.4.1 Vertices and Surface Ambiguity |
|
|
290 | (1) |
|
|
|
291 | (1) |
|
8.4.3 Connecting Vertices into Triangles |
|
|
291 | (2) |
|
|
|
293 | (1) |
|
|
|
293 | (1) |
|
|
|
294 | (2) |
|
8.5.1 Fixed-Function versus Programmable Pipelines |
|
|
296 | (1) |
|
|
|
296 | (2) |
|
8.6.1 Using Shaders to Move from Vertex to Triangle to Fragment |
|
|
296 | (1) |
|
8.6.2 Shader Input and Output Values |
|
|
297 | (1) |
|
8.6.3 Shader Operations and Language Constructs |
|
|
297 | (1) |
|
|
|
298 | (1) |
|
|
|
298 | (2) |
|
8.7.1 Vertex Shader Inputs |
|
|
298 | (1) |
|
8.7.2 Vertex Shader Outputs |
|
|
299 | (1) |
|
8.7.3 Basic Vertex Shaders |
|
|
299 | (1) |
|
|
|
300 | (4) |
|
8.8.1 Fragment Shader Inputs |
|
|
300 | (1) |
|
8.8.2 Fragment Shader Outputs |
|
|
300 | (1) |
|
8.8.3 Linking Vertex and Fragment Shaders |
|
|
301 | (1) |
|
8.8.4 Compiling, Linking, and Using Shaders |
|
|
301 | (1) |
|
8.8.5 Setting Uniform Values |
|
|
302 | (2) |
|
8.9 Basic Coloring Methods |
|
|
304 | (4) |
|
|
|
304 | (1) |
|
8.9.2 Per-Triangle Colors |
|
|
305 | (1) |
|
|
|
305 | (2) |
|
8.9.4 Sharp Edges and Vertex Colors |
|
|
307 | (1) |
|
8.9.5 Limitations of Basic Shading Methods |
|
|
308 | (1) |
|
|
|
308 | (5) |
|
|
|
308 | (1) |
|
8.10.2 Shading via Image Lookup |
|
|
309 | (1) |
|
|
|
310 | (2) |
|
|
|
312 | (1) |
|
8.10.4.1 Texture Samplers in Application Code |
|
|
312 | (1) |
|
|
|
313 | (10) |
|
8.11.1 Mapping Texture Coordinates onto Objects |
|
|
314 | (1) |
|
8.11.2 Generating Texture Coordinates |
|
|
315 | (1) |
|
8.11.3 Texture Coordinate Discontinuities |
|
|
315 | (1) |
|
8.11.4 Mapping Outside the Unit Square |
|
|
316 | (6) |
|
8.11.5 Texture Samplers in Shader Code |
|
|
322 | (1) |
|
|
|
323 | (2) |
|
8.12.1 Other Forms of Texture Coordinates |
|
|
323 | (2) |
|
8.12.2 From Texture Coordinates to a Texture Sample Color |
|
|
325 | (1) |
|
8.13 Limitations of Static Shading |
|
|
325 | (1) |
|
|
|
326 | (1) |
| 9 Lighting |
|
327 | (48) |
|
|
|
327 | (1) |
|
9.2 Basics of Light Approximation |
|
|
328 | (1) |
|
|
|
329 | (4) |
|
9.4 Types of Light Sources |
|
|
333 | (10) |
|
|
|
334 | (5) |
|
|
|
339 | (2) |
|
|
|
341 | (2) |
|
|
|
343 | (1) |
|
9.4.5 Other Types of Light Sources |
|
|
343 | (1) |
|
9.5 Surface Materials and Light Interaction |
|
|
343 | (12) |
|
|
|
345 | (2) |
|
|
|
347 | (4) |
|
|
|
351 | (1) |
|
|
|
351 | (2) |
|
9.5.5 Combined Lighting Equation |
|
|
353 | (2) |
|
|
|
355 | (8) |
|
9.6.1 Flat-Shaded Lighting |
|
|
356 | (1) |
|
9.6.2 Per-Vertex Lighting |
|
|
356 | (4) |
|
9.6.2.1 Generating Vertex Normals |
|
|
358 | (2) |
|
|
|
360 | (1) |
|
9.6.3 Per-Fragment Lighting |
|
|
360 | (3) |
|
9.7 Textures and Lighting |
|
|
363 | (4) |
|
|
|
364 | (1) |
|
9.7.2 Specular Lighting and Textures |
|
|
365 | (1) |
|
9.7.3 Textures as Materials |
|
|
366 | (1) |
|
|
|
367 | (7) |
|
|
|
367 | (2) |
|
9.8.1.1 Generating Normal Maps |
|
|
369 | (1) |
|
|
|
369 | (2) |
|
9.8.3 Transparent Objects |
|
|
371 | (1) |
|
|
|
371 | (1) |
|
9.8.5 Physically Based Lighting |
|
|
371 | (1) |
|
9.8.6 High Dynamic Range Lighting |
|
|
372 | (1) |
|
9.8.7 Deferred Lighting and Shading |
|
|
373 | (1) |
|
|
|
373 | (1) |
|
|
|
374 | (1) |
| 10 Rasterization |
|
375 | (52) |
|
|
|
375 | (1) |
|
10.2 Displays and Framebuffers |
|
|
376 | (1) |
|
10.3 Conceptual Rasterization Pipeline |
|
|
377 | (1) |
|
10.3.1 Rasterization Stages |
|
|
377 | (1) |
|
10.4 Determining the Fragments: Pixels Covered by a Triangle |
|
|
378 | (4) |
|
|
|
378 | (1) |
|
|
|
379 | (1) |
|
10.4.3 Converting Triangles to Fragments |
|
|
379 | (2) |
|
10.4.4 Handling Partial Fragments |
|
|
381 | (1) |
|
10.5 Determining Visible Geometry |
|
|
382 | (9) |
|
|
|
383 | (7) |
|
10.5.1.1 Computing Per-Fragment Depth Values |
|
|
385 | (4) |
|
10.5.1.2 Numerical Precision and z-Buffering |
|
|
389 | (1) |
|
10.5.2 Depth Buffering in Practice |
|
|
390 | (1) |
|
10.6 Computing Fragment Shader Inputs |
|
|
391 | (6) |
|
|
|
392 | (1) |
|
10.6.2 Per-Vertex Attributes |
|
|
392 | (5) |
|
10.6.2.1 Constant Depth Interpolation |
|
|
392 | (2) |
|
10.6.2.2 Perspective-Correct Interpolation |
|
|
394 | (3) |
|
10.6.3 Indirect Per-Fragment Values |
|
|
397 | (1) |
|
10.7 Rasterizing Textures |
|
|
397 | (16) |
|
10.7.1 Texture Coordinate Review |
|
|
398 | (1) |
|
10.7.2 Mapping a Coordinate to a Texel |
|
|
398 | (7) |
|
10.7.2.1 Magnifying a Texture |
|
|
398 | (4) |
|
10.7.2.2 Texture Magnification in Practice |
|
|
402 | (1) |
|
10.7.2.3 Minifying a Texture |
|
|
403 | (2) |
|
|
|
405 | (8) |
|
10.7.3.1 Texturing a Fragment with a Mipmap |
|
|
408 | (2) |
|
10.7.3.2 Texture Filtering and Mipmaps |
|
|
410 | (1) |
|
10.7.3.3 Mipmapping in Practice |
|
|
411 | (2) |
|
10.8 From Fragments to Pixels |
|
|
413 | (13) |
|
|
|
414 | (5) |
|
10.8.1.1 Pixel Blending and Depth Buffering |
|
|
415 | (1) |
|
10.8.1.2 Premultiplied Alpha |
|
|
416 | (2) |
|
10.8.1.3 Blending in Practice |
|
|
418 | (1) |
|
|
|
419 | (7) |
|
10.8.2.1 Supersampled Antialiasing |
|
|
423 | (2) |
|
10.8.2.2 Multisampled Antialiasing |
|
|
425 | (1) |
|
10.8.3 Antialiasing in Practice |
|
|
426 | (1) |
|
|
|
426 | (1) |
| 11 Random Numbers |
|
427 | (40) |
|
|
|
427 | (1) |
|
|
|
427 | (10) |
|
|
|
428 | (2) |
|
|
|
430 | (3) |
|
11.2.3 Mean and Standard Deviation |
|
|
433 | (1) |
|
11.2.4 Special Probability Distributions |
|
|
434 | (3) |
|
11.3 Determining Randomness |
|
|
437 | (7) |
|
|
|
438 | (6) |
|
|
|
444 | (1) |
|
11.4 Random Number Generators |
|
|
444 | (11) |
|
11.4.1 Linear Congruential Methods |
|
|
447 | (3) |
|
|
|
447 | (1) |
|
11.4.1.2 Choosing the Modulus |
|
|
447 | (2) |
|
11.4.1.3 Choosing the Multiplier |
|
|
449 | (1) |
|
|
|
450 | (1) |
|
11.4.2 Lagged Fibonacci Methods |
|
|
450 | (1) |
|
|
|
451 | (1) |
|
|
|
452 | (1) |
|
11.4.5 Other Alternatives |
|
|
453 | (1) |
|
11.4.6 Setting Initial State |
|
|
454 | (1) |
|
|
|
455 | (1) |
|
11.5 Special Applications |
|
|
455 | (10) |
|
11.5.1 Integers and Ranges of Integers |
|
|
455 | (1) |
|
11.5.2 Floating-Point Numbers |
|
|
456 | (1) |
|
|
|
456 | (1) |
|
11.5.4 Nonuniform Distributions |
|
|
457 | (1) |
|
11.5.5 Spherical Sampling |
|
|
458 | (3) |
|
|
|
461 | (1) |
|
11.5.7 Noise and Turbulence |
|
|
462 | (3) |
|
|
|
465 | (2) |
| 12 Intersection Testing |
|
467 | (52) |
|
|
|
467 | (1) |
|
12.2 Closest Point and Distance Tests |
|
|
468 | (10) |
|
12.2.1 Closest Point on Line to Point |
|
|
468 | (1) |
|
12.2.2 Line—Point Distance |
|
|
469 | (1) |
|
12.2.3 Closest Point on Line Segment to Point |
|
|
470 | (2) |
|
12.2.4 Line Segment—Point Distance |
|
|
472 | (1) |
|
12.2.5 Closest Points between Two Lines |
|
|
473 | (2) |
|
12.2.6 Line—Line Distance |
|
|
475 | (1) |
|
12.2.7 Closest Points between Two Line Segments |
|
|
475 | (2) |
|
12.2.8 Line Segment—Line Segment Distance |
|
|
477 | (1) |
|
12.2.9 General Linear Components |
|
|
477 | (1) |
|
|
|
478 | (29) |
|
|
|
480 | (6) |
|
|
|
480 | (3) |
|
12.3.1.2 Sphere—Sphere Intersection |
|
|
483 | (1) |
|
12.3.1.3 Sphere—Ray Intersection |
|
|
484 | (1) |
|
12.3.1.4 Sphere—Plane Intersection |
|
|
484 | (2) |
|
12.3.2 Axis-Aligned Bounding Boxes |
|
|
486 | (6) |
|
|
|
486 | (1) |
|
12.3.2.2 AABB—AABB Intersection |
|
|
487 | (2) |
|
12.3.2.3 AABB—Ray Intersection |
|
|
489 | (2) |
|
12.3.2.4 AABB—Plane Intersection |
|
|
491 | (1) |
|
|
|
492 | (4) |
|
|
|
492 | (3) |
|
12.3.3.2 Capsule—Capsule Intersection |
|
|
495 | (1) |
|
12.3.3.3 Capsule—Ray Intersection |
|
|
495 | (1) |
|
12.3.3.4 Capsule—Plane Intersection |
|
|
495 | (1) |
|
12.3.4 Object-Oriented Boxes |
|
|
496 | (7) |
|
|
|
496 | (2) |
|
12.3.4.2 OBB—OBB Intersection |
|
|
498 | (2) |
|
12.3.4.3 OBB—Ray Intersection |
|
|
500 | (2) |
|
12.3.4.4 OBB—Plane Intersection |
|
|
502 | (1) |
|
|
|
503 | (4) |
|
12.3.5.1 Triangle—Triangle Intersection |
|
|
503 | (1) |
|
12.3.5.2 Triangle—Ray Intersection |
|
|
504 | (3) |
|
12.3.5.3 Triangle—Plane Intersection |
|
|
507 | (1) |
|
12.4 A Simple Collision System |
|
|
507 | (9) |
|
12.4.1 Choosing a Base Primitive |
|
|
507 | (1) |
|
12.4.2 Bounding Hierarchies |
|
|
508 | (2) |
|
|
|
510 | (1) |
|
12.4.4 Performance Improvements |
|
|
511 | (3) |
|
|
|
514 | (2) |
|
|
|
516 | (1) |
|
|
|
516 | (3) |
| 13 Rigid-Body Dynamics |
|
519 | (38) |
|
|
|
519 | (1) |
|
|
|
520 | (5) |
|
13.2.1 Moving with Constant Acceleration |
|
|
520 | (2) |
|
|
|
522 | (1) |
|
|
|
523 | (1) |
|
13.2.4 Moving with Variable Acceleration |
|
|
524 | (1) |
|
13.3 Numerical Integration |
|
|
525 | (11) |
|
|
|
525 | (2) |
|
|
|
527 | (3) |
|
13.3.3 Runge—Kutta Methods |
|
|
530 | (1) |
|
13.3.4 Verlet Integration |
|
|
531 | (2) |
|
|
|
533 | (2) |
|
13.3.6 Semi-Implicit Methods |
|
|
535 | (1) |
|
|
|
536 | (6) |
|
|
|
536 | (1) |
|
13.4.2 Orientation and Angular Velocity |
|
|
536 | (1) |
|
|
|
537 | (2) |
|
13.4.4 Angular Momentum and Inertia Tensor |
|
|
539 | (2) |
|
13.4.5 Integrating Rotational Quantities |
|
|
541 | (1) |
|
|
|
542 | (12) |
|
13.5.1 Contact Generation |
|
|
543 | (2) |
|
13.5.2 Linear Collision Response |
|
|
545 | (4) |
|
13.5.3 Rotational Collision Response |
|
|
549 | (1) |
|
13.5.4 Extending the System |
|
|
550 | (4) |
|
|
|
551 | (1) |
|
|
|
552 | (1) |
|
|
|
553 | (1) |
|
|
|
553 | (1) |
|
|
|
554 | (1) |
|
|
|
555 | (2) |
| References |
|
557 | (8) |
| Index |
|
565 | |