Essential Mathematics for Games and Interactive Applications: A Programmer's Guide

The following gives a high-level table of contents. Starred chapters will change significantly from the current edition, with changes noted. Chapter 1: Vectors and Points This chapter covers basic linear algebra topics such as vectors, points, lines and planes. Most changes will be in presentation, not in topic. Chapter 2: Matrices and Linear Transformations This continues the linear algebra discussion and discusses the mathematical methods for changing the concepts presented in Chapter 1. Most modifications will be in presentation, not in topic. *Chapter 3: Affine Transformations This completes the algebra discussion and covers basic graphics transformations such as translation, rotation and scale. Most changes will be in presentation, not in topic, although there will be a small section added on skinning. Chapter 4: Real-World Computer Number Representation This chapter covers the problems of representing the infinite space of numbers in a finite computer. Most modifications will be in presentation, not in topic. Chapter 5: Viewing and Projection This chapter begins the graphics topics with a discussion of building virtual cameras. Most modifications will be in presentation, not in topic. *Chapter 6: Lighting and Color This new chapter collates the color topics from the original Chapter 6 and the non-shading aspects of the original Chapter 7. To be presented here are the more abstract notions of color, normals to a surface, direction to a light, and how a lit color value is generated without any reference to triangles or interpolation. *Chapter 7: Geometry, Shading and Texturing As with the previous chapter, this one will take mostly material from the original chapters 6 and 7, and some from Chapter 8. The chapter will conclude with a brief discussion of hardware vertex and pixel shaders, but as this is not a graphics book per se it will only be at an introductory level. *Chapter 8: Rasterization and Antialiasing The final graphics chapter will now focus on sampling the continuous functions discussed in the previous two so that they can be represented on discrete hardware. Both rasterization and texturing will lead into a discussion of antialiasing and solving the problems for both processes: mip-mapping, multi-sampling, and other approaches. *Chapter 9: Animation of Position The previous version of this chapter focused on curves, and the new one will be no exception. However, rather than attempting to be a general curve discussion it will focus more on the particular curve types that are most often used in an interactive application for animating cameras and object position. *Chapter 10: Animation of Orientation As with the previous chapter, this one will be retargeted to focus mainly on animation issues. There will also be more material dedicated to approximating slerp, as there have been a number of publications and debate on this topic since the original publication of the book. Chapter 11: Intersection Testing This chapter covers basic bounding object tests and some topics in collision detection and culling. There will be few changes. *Chapter 12: Physical Simulation The general structure of this one will remain the same with only a few additions and expansions of existing topics based on the author's participation in the Physics for Game Programmers GDC tutorial. First, symplectic Euler and its stability properties will be discussed. Secondly, more attention will be given to generating inertial tensors for triangle soups. Finally, simple constraints will be presented. *Chapter 13: Random Numbers This chapter was originally planned for the first edition and was requested by a number of reviewers. It will cover basic probability, three methods for generating pseudo-random numbers on a digital computer, and some applications of random numbers: Artificial intelligence routines, simulating die rolls and card draws, Perlin noise for procedural textures, and finally some basic presentation of stochastic sampling for anti-aliasing.