Author: David H. Eberly
Publisher: Morgan Kaufmann, 2nd Ed, 2010
Aimed at: Readers not afraid of math
Pros: Good coverage of maths and physics for games
Cons: Covers difficult topics that most games programmers can avoid
Reviewed by: Mike James
If you are a lapsed physicist or mathematician you will love this book. As this description includes me you can tell that I've got it on my book shelf and no one is borrowing it. Actually one of the problems is that no one wants to borrow it.
This is a book that you will either love or simply not understand. It starts off gently enough with some nice quotes and some personal stories but before you get time to settle in it hits you with equations and physical principles - and not just little easy equations that you might find on a T shirt.
It starts off with simple mechanics - rigid body kinematics, Newtons laws etc. If you have taken any course in physics you will have meet most of this stuff but probably forgotten it. In Chapter 3 the whole feel of the book moves up a gear and we hit the Lagrangian formulation of dynamics. This isn't the most theoretical treatment of the topic I have ever read, but it also doesn't attempt to be too easy either. There are examples and the emphasis is most certainly applied, but if you find partial differentiation and multiple integrals intimidating you would have put the book down before Chapter 2, let alone Chapter 3.
By Chapter 4 we have reached deformable bodies, which is a topic covered late, if at all, in most physics courses. Then a big jump in Chapter 5 to fluids and gasses and detailed coverage of what would be called fluid dynamics in a physics course.
While there have been lots of computer techniques discussed in earlier chapter it is chapter 5 where games engines feature. Up to this point in the book it has been more like a course in classical mechanics with a computer angle thrown in. Now we are confronted by algorithms and unsurprisingly things get a bit simpler. We have a large section on collision detection and implementing different types of motion - unconstrained, acceleration and velocity based motion.
The odd thing is that most of these are more sophisticated versions of the original sprite algorithm - assign a sprite a position, velocity and acceleration and update them at each interaction of the loop. Of course for an extended ridged body you also have to deal with internal motion and in this case you need to solve the differential equations. While there are some code snippets that show how things might be implemented you have to work hard to get an overview and a plan for implementing things on your own. The supplied CD-ROM has with code, including the Wild Magic engine with complete source code - but notice that book isn't a tutorial on using it.
From Chapter 7 on the book really isn't about game physics any more. It turns into a book on mathematics. It covers linear algebra; affine algebra; calculus; quaternions; differential equations; difference equations; numerical methods and linear programming, with a chapter devoted to each.
While many of these maths topics are relevant to game physics and computer graphics in general - there is no avoiding the fact that this half of the book is a maths book pure and probably not simple to most.
The pace of the book has to be described as fast - from Newtonian to Lagrangian methods in 150 pages!
Does this book teach game physics programming? No not really. Its focus seems to be on teaching physics and mathematics with an angle on how these might be used in simulation. Personally I like this approach and I am prepared to forgive the book its "off topic" nature. It might even be useful as a way of motivating a class of reluctant physics students that physics is actually fun - but somehow I doubt it.
So if your prime concern is implementing game physics without understanding the physics and math avoid this book. If on the other hand your prime concern is understanding the physics and math behind the simulations this is a good but difficult book.