Muutke küpsiste eelistusi

E-raamat: Essential Mathematics for Games and Interactive Applications 3rd edition [Taylor & Francis e-raamat]

  • Formaat: 624 pages, 3 Tables, black and white; 250 Illustrations, black and white
  • Ilmumisaeg: 26-Aug-2015
  • Kirjastus: Apple Academic Press Inc.
  • ISBN-13: 9780429196232
  • Taylor & Francis e-raamat
  • Hind: 180,03 €*
  • * hind, mis tagab piiramatu üheaegsete kasutajate arvuga ligipääsu piiramatuks ajaks
  • Tavahind: 257,19 €
  • Säästad 30%
  • Formaat: 624 pages, 3 Tables, black and white; 250 Illustrations, black and white
  • Ilmumisaeg: 26-Aug-2015
  • Kirjastus: Apple Academic Press Inc.
  • ISBN-13: 9780429196232

Expert Guidance on the Math Needed for 3D Game Programming
Developed from the authors’ popular Game Developers Conference (GDC) tutorial,Essential Mathematics for Games and Interactive Applications, Third Edition illustrates the importance of mathematics in 3D programming. It shows you how to properly animate, simulate, and render scenes and discusses the mathematics behind the processes.

New to the Third Edition
Completely revised to fix errors and make the content flow better, this third edition reflects the increased use of shader graphics pipelines, such as in DirectX 11, OpenGL ES (GLES), and the OpenGL Core Profile. It also updates the material on real-time graphics with coverage of more realistic materials and lighting.

The Foundation for Successful 3D Programming
The book covers the low-level mathematical and geometric representations and algorithms that are the core of any game engine. It also explores all the stages of the rendering pipeline. The authors explain how to represent, transform, view, and animate geometry. They then focus on visual matters, specifically the representation, computation, and use of color. They also address randomness, intersecting geometric entities, and physical simulation.

An Introduction to Creating Real and Active Virtual Worlds
This updated book provides you with a conceptual understanding of the mathematics needed to create 3D games as well as a practical understanding of how these mathematical bases actually apply to games and graphics. It not only includes the theoretical mathematical background but also incorporates many examples of how the concepts are used to affect how a game looks and plays.

Web Resource
A supplementary website contains a collection of source code, supporting libraries, and interactive demonstrations that illustrate the concepts and enable you to experiment with animation and simulation applications. The site also includes slides and notes from the authors’ GDC tutorials.

Preface xix
Authors xxiii
Introduction xxv
1 Representing Real Numbers 1(32)
1.1 Introduction
1(1)
1.2 Preliminary Concepts
2(3)
1.2.1 Fixed-Point Numbers
2(1)
1.2.2 Approximations
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)
1.4.3.2 Multiplication
13(1)
1.4.3.3 Rounding Modes
14(1)
1.4.4 Special Values
15(3)
1.4.4.1 Zero
15(1)
1.4.4.2 Infinity
16(1)
1.4.4.3 Nonnumeric Values
17(1)
1.4.5 Very Small Values
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)
1.4.8 Double Precision
24(1)
1.4.9 Half Precision
24(2)
1.5 Real-World Floating Point
26(5)
1.5.1 Internal FPU Precision
26(1)
1.5.2 Performance
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)
1.6 Code
31(1)
1.7
Chapter Summary
31(2)
2 Vectors and Points 33(44)
2.1 Introduction
33(1)
2.2 Vectors
33(25)
2.2.1 Geometric Vectors
34(2)
2.2.2 Real Vector Spaces
36(3)
2.2.2.1 Definition
36(1)
2.2.2.2 Examples
37(2)
2.2.2.3 Subspaces
39(1)
2.2.3 Linear Combinations and Basis Vectors
39(3)
2.2.4 Basic Vector Class Implementation
42(2)
2.2.5 Vector Length
44(2)
2.2.6 Dot Product
46(4)
2.2.7 Gram—Schmidt Orthogonalization
50(1)
2.2.8 Cross Product
51(4)
2.2.9 Triple Products
55(3)
2.2.10 Grassman Algebra
58(1)
2.3 Points
58(9)
2.3.1 Points as Geometry
58(2)
2.3.2 Affine Spaces
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)
2.4 Lines
67(4)
2.4.1 Definition
67(1)
2.4.2 Parameterized Lines
68(1)
2.4.3 Generalized Line Equation
69(2)
2.4.4 Collinear Points
71(1)
2.5 Planes
71(2)
2.5.1 Parameterized Planes
71(1)
2.5.2 Generalized Plane Equation
72(1)
2.5.3 Coplanar Points
73(1)
2.6 Polygons and Triangles
73(3)
2.7
Chapter Summary
76(1)
3 Linear Transformations and Matrices 77(38)
3.1 Introduction
77(1)
3.2 Linear Transformations
78(4)
3.2.1 Definitions
78(1)
3.2.2 Linear Transformations and Basis Vectors
79(1)
3.2.3 Range and Null Space
80(2)
3.3 Matrices
82(15)
3.3.1 Introduction to Matrices
82(2)
3.3.2 Simple Operations
84(1)
3.3.2.1 Matrix Addition and Scalar Multiplication
84(1)
3.3.2.2 Transpose
84(1)
3.3.3 Vector Representation
85(1)
3.3.4 Block Matrices
86(1)
3.3.5 Matrix Product
87(2)
3.3.6 Transforming Vectors
89(2)
3.3.7 Combining Linear Transformations
91(2)
3.3.8 Identity Matrix
93(1)
3.3.9 Performing Vector Operations with Matrices
94(1)
3.3.10 Implementation
95(2)
3.4 Systems of Linear Equations
97(6)
3.4.1 Definition
97(1)
3.4.2 Solving Linear Systems
98(2)
3.4.3 Gaussian Elimination
100(3)
3.5 Matrix Inverse
103(3)
3.5.1 Definition
103(2)
3.5.2 Simple Inverses
105(1)
3.6 Determinant
106(7)
3.6.1 Definition
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)
3.8
Chapter Summary
114(1)
4 Affine Transformations 115(36)
4.1 Introduction
115(1)
4.2 Affine Transformations
116(4)
4.2.1 Matrix Definition
116(2)
4.2.2 Formal Definition
118(1)
4.2.3 Formal Representation
119(1)
4.3 Standard Affine Transformations
120(19)
4.3.1 Translation
120(2)
4.3.2 Rotation
122(8)
4.3.3 Scaling
130(1)
4.3.4 Reflection
131(3)
4.3.5 Shear
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)
4.4.1.2 Placing Objects
140(3)
4.4.2 Matrix Decomposition
143(2)
4.4.3 Avoiding Matrix Decomposition
145(2)
4.5 Object Hierarchies
147(2)
4.6
Chapter Summary
149(2)
5 Orientation Representation 151(26)
5.1 Introduction
151(1)
5.2 Rotation Matrices
152(1)
5.3 Euler Angles
152(5)
5.3.1 Definition
152(2)
5.3.2 Format Conversion
154(1)
5.3.3 Concatenation
155(1)
5.3.4 Vector Rotation
155(1)
5.3.5 Other Issues
156(1)
5.4 Axis—Angle Representation
157(4)
5.4.1 Definition
157(1)
5.4.2 Format Conversion
158(2)
5.4.3 Concatenation
160(1)
5.4.4 Vector Rotation
160(1)
5.4.5 Axis—Angle Summary
161(1)
5.5 Quaternions
161(14)
5.5.1 Definition
161(1)
5.5.2 Quaternions as Rotations
162(1)
5.5.3 Addition and Scalar Multiplication
163(1)
5.5.4 Negation
163(1)
5.5.5 Magnitude and Normalization
164(1)
5.5.6 Dot Product
164(1)
5.5.7 Format Conversion
165(3)
5.5.8 Concatenation
168(2)
5.5.9 Identity and Inverse
170(1)
5.5.10 Vector Rotation
171(3)
5.5.11 Shortest Path of Rotation
174(1)
5.5.12 Quaternions and Transformations
175(1)
5.6
Chapter Summary
175(2)
6 Interpolation 177(54)
6.1 Introduction
177(1)
6.2 Interpolation of Position
178(22)
6.2.1 General Definitions
178(2)
6.2.2 Linear Interpolation
180(3)
6.2.2.1 Definition
180(2)
6.2.2.2 Piecewise Linear Interpolation
182(1)
6.2.3 Hermite Curves
183(8)
6.2.3.1 Definition
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)
6.2.6 Bezier Curves
195(3)
6.2.6.1 Definition
195(2)
6.2.6.2 Piecewise Bezier Curves
197(1)
6.2.7 Other Curve Types
198(2)
6.3 Interpolation of Orientation
200(10)
6.3.1 General Discussion
201(1)
6.3.2 Linear Interpolation
202(4)
6.3.3 Spherical Linear Interpolation
206(3)
6.3.3.1 Cubic Methods
208(1)
6.3.4 Performance Improvements
209(1)
6.4 Sampling Curves
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)
6.6 Camera Control
225(4)
6.7
Chapter Summary
229(2)
7 Viewing and Projection 231(44)
7.1 Introduction
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)
7.3.1 Definition
239(2)
7.3.2 Normalized Device Coordinates
241(1)
7.3.3 View Frustum
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)
7.4 Culling and Clipping
258(10)
7.4.1 Why Cull or Clip?
258(3)
7.4.2 Culling
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)
7.5.1 Pixel Aspect Ratio
270(1)
7.6 Picking
271(2)
7.7 Management of Viewing Transformations
273(1)
7.8
Chapter Summary
274(1)
8 Geometry and Programmable Shading 275(52)
8.1 Introduction
275(1)
8.2 Color Representation
276(10)
8.2.1 RGB Color Model
276(1)
8.2.2 Colors as "Points"
277(1)
8.2.3 Color-Range Limitation
277(1)
8.2.4 Operations on Colors
278(1)
8.2.5 Alpha Values
279(1)
8.2.6 Remapping Colors into the Unit Cube
280(3)
8.2.7 Color Storage Formats
283(1)
8.2.8 Nonlinear Color
284(2)
8.3 Points and Vertices
286(4)
8.3.1 Per-Vertex Attributes
286(1)
8.3.2 An Object's Vertices
287(3)
8.3.2.1 Vertex Buffers
288(2)
8.4 Surface Representation
290(4)
8.4.1 Vertices and Surface Ambiguity
290(1)
8.4.2 Triangles
291(1)
8.4.3 Connecting Vertices into Triangles
291(2)
8.4.3.1 Index Buffers
293(1)
8.4.4 Drawing Geometry
293(1)
8.5 Rendering Pipeline
294(2)
8.5.1 Fixed-Function versus Programmable Pipelines
296(1)
8.6 Shaders
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)
8.6.4 Other Shader Types
298(1)
8.7 Vertex Shaders
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)
8.8 Fragment Shaders
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)
8.9.1 Per-Object Colors
304(1)
8.9.2 Per-Triangle Colors
305(1)
8.9.3 Per-Vertex Colors
305(2)
8.9.4 Sharp Edges and Vertex Colors
307(1)
8.9.5 Limitations of Basic Shading Methods
308(1)
8.10 Texture Mapping
308(5)
8.10.1 Introduction
308(1)
8.10.2 Shading via Image Lookup
309(1)
8.10.3 Texture Images
310(2)
8.10.4 Texture Samplers
312(1)
8.10.4.1 Texture Samplers in Application Code
312(1)
8.11 Texture Coordinates
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)
8.12 Steps of Texturing
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)
8.14
Chapter Summary
326(1)
9 Lighting 327(48)
9.1 Introduction
327(1)
9.2 Basics of Light Approximation
328(1)
9.3 Measuring Light
329(4)
9.4 Types of Light Sources
333(10)
9.4.1 Point Lights
334(5)
9.4.2 Spotlights
339(2)
9.4.3 Directional Lights
341(2)
9.4.4 Ambient Lights
343(1)
9.4.5 Other Types of Light Sources
343(1)
9.5 Surface Materials and Light Interaction
343(12)
9.5.1 Diffuse
345(2)
9.5.2 Specular
347(4)
9.5.3 Emission
351(1)
9.5.4 Ambient
351(2)
9.5.5 Combined Lighting Equation
353(2)
9.6 Lighting and Shading
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)
9.6.2.2 Sharp Edges
360(1)
9.6.3 Per-Fragment Lighting
360(3)
9.7 Textures and Lighting
363(4)
9.7.1 Basic Modulation
364(1)
9.7.2 Specular Lighting and Textures
365(1)
9.7.3 Textures as Materials
366(1)
9.8 Advanced Lighting
367(7)
9.8.1 Normal Mapping
367(2)
9.8.1.1 Generating Normal Maps
369(1)
9.8.2 Reflective Objects
369(2)
9.8.3 Transparent Objects
371(1)
9.8.4 Area Lights
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)
9.8.8 Shadows
373(1)
9.9
Chapter Summary
374(1)
10 Rasterization 375(52)
10.1 Introduction
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)
10.4.1 Fragments
378(1)
10.4.2 Depth Complexity
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)
10.5.1 Depth Buffering
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)
10.6.1 Uniform Values
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)
10.7.3 Mipmapping
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)
10.8.1 Pixel Blending
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)
10.8.2 Antialiasing
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)
10.9
Chapter Summary
426(1)
11 Random Numbers 427(40)
11.1 Introduction
427(1)
11.2 Probability
427(10)
11.2.1 Basic Probability
428(2)
11.2.2 Random Variables
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)
11.3.1 Chi-Square Test
438(6)
11.3.2 Spectral Test
444(1)
11.4 Random Number Generators
444(11)
11.4.1 Linear Congruential Methods
447(3)
11.4.1.1 Definition
447(1)
11.4.1.2 Choosing the Modulus
447(2)
11.4.1.3 Choosing the Multiplier
449(1)
11.4.1.4 Summary
450(1)
11.4.2 Lagged Fibonacci Methods
450(1)
11.4.3 Carry Methods
451(1)
11.4.4 Xorshift
452(1)
11.4.5 Other Alternatives
453(1)
11.4.6 Setting Initial State
454(1)
11.4.7 Conclusions
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)
11.5.3 Shuffling
456(1)
11.5.4 Nonuniform Distributions
457(1)
11.5.5 Spherical Sampling
458(3)
11.5.6 Disc Sampling
461(1)
11.5.7 Noise and Turbulence
462(3)
11.6
Chapter Summary
465(2)
12 Intersection Testing 467(52)
12.1 Introduction
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)
12.3 Object Intersection
478(29)
12.3.1 Spheres
480(6)
12.3.1.1 Definition
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)
12.3.2.1 Definition
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)
12.3.3 Swept Spheres
492(4)
12.3.3.1 Definition
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)
12.3.4.1 Definition
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)
12.3.5 Triangles
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)
12.4.3 Dynamic Objects
510(1)
12.4.4 Performance Improvements
511(3)
12.4.5 Related Systems
514(2)
12.4.6 Section Summary
516(1)
12.5
Chapter Summary
516(3)
13 Rigid-Body Dynamics 519(38)
13.1 Introduction
519(1)
13.2 Linear Dynamics
520(5)
13.2.1 Moving with Constant Acceleration
520(2)
13.2.2 Forces
522(1)
13.2.3 Linear Momentum
523(1)
13.2.4 Moving with Variable Acceleration
524(1)
13.3 Numerical Integration
525(11)
13.3.1 Definition
525(2)
13.3.2 Euler's Method
527(3)
13.3.3 Runge—Kutta Methods
530(1)
13.3.4 Verlet Integration
531(2)
13.3.5 Implicit Methods
533(2)
13.3.6 Semi-Implicit Methods
535(1)
13.4 Rotational Dynamics
536(6)
13.4.1 Definition
536(1)
13.4.2 Orientation and Angular Velocity
536(1)
13.4.3 Torque
537(2)
13.4.4 Angular Momentum and Inertia Tensor
539(2)
13.4.5 Integrating Rotational Quantities
541(1)
13.5 Collision Response
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)
13.5.4.1 Friction
551(1)
13.5.4.2 Resting Contact
552(1)
13.5.4.3 Constraints
553(1)
13.5.4.4 Multiple Points
553(1)
13.6 Efficiency
554(1)
13.7
Chapter Summary
555(2)
References 557(8)
Index 565
James M. Van Verth is a software engineer at Google, where he works on GPU support for the Skia 2D Graphics Library. He has worked for Insomniac Games, NVIDIA, and Red Storm Entertainment and, for the past 17 years, he has been a regular speaker at GDC, teaching the tutorials "Math for Game Programmers" and "Physics for Game Programmers." He received a BA in math/computer science from Dartmouth College, an MS in computer science from the State University of New York at Buffalo, and an MS in computer science from the University of North Carolina at Chapel Hill.

Lars M. Bishop is an engineer in the Handheld Developer Technologies group at NVIDIA. Prior to joining NVIDIA, he was the chief technology officer at Numerical Design Limited, leading the development of the Gamebryo3D cross-platform game engine. He received a BS in math/computer science from Brown University and an MS in computer science from the University of North Carolina at Chapel Hill.