Essential Mathematics for Games and Interactive Applications

A Programmer's Guide


  • James Van Verth, James M. Van Verth is a founding member of Red Storm Entertainment, a division of Ubisoft, where he has been a lead engineer for nine years.
  • Lars Bishop, Lars M. Bishop is an engineer in the Handheld Developer Technologies group at NVIDIA. Previously, he worked for nine years at NDL, makers of the Gamebryo 3D engine.

Essential Mathematics for Games and Interactive Applications, 2nd edition presents the core mathematics necessary for sophisticated 3D graphics and interactive physical simulations. The book begins with linear algebra and matrix multiplication and expands on this foundation to cover such topics as color and lighting, interpolation, animation and basic game physics. Essential Mathematics focuses on the issues of 3D game development important to programmers and includes optimization guidance throughout.

The new edition Windows code will now use Visual Studio.NET. There will also be DirectX support provided, along with OpenGL - due to its cross-platform nature. Programmers will find more concrete examples included in this edition, as well as additional information on tuning, optimization and robustness.

The book has a companion CD-ROM with exercises and a test bank for the academic secondary market, and for main market: code examples built around a shared code base, including a math library covering all the topics presented in the book, a core vector/matrix math engine, and libraries to support basic 3D rendering and interaction.

View full description


3D programmers, game developers in the game industry. Secondary market: game programming students; game development students; 3D graphics programming students. Level: Beginner to Intermediate - programmers.


Book information

  • Published: May 2008
  • ISBN: 978-0-12-374297-1

Table of Contents

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 PointsThis 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 TransformationsThis 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 TransformationsThis 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 RepresentationThis 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 ProjectionThis 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 ColorThis 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 TexturingAs 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 AntialiasingThe 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 PositionThe 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 TestingThis chapter covers basic bounding object tests and some topics in collision detection and culling. There will be few changes.*Chapter 12: Physical SimulationThe 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 NumbersThis 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.