3 of 3 people found the following review helpful
5.0 out of 5 stars
Really excellent introductory/intermediate book, 13 Jun. 2013
I got this book recently as a gift (I know I'm a geek) and found it not only to be useful but also (remarkably) quite an interesting read that I read from cover to cover without feeling "bogged down" in it. This book starts from very little assumed knowledge (for example vectors are explained) but quickly builds up to some quite advanced concepts. I have a degree in physics but I think I would classify that as useful rather than essential for this book to be useful to you. A decent background in programming is probably essential but not necessarily C++ (the books language of choice)
Text books can in general be split into two groups, those that are mathematically rigorous to the expense of clarity and those that are actually useful. This book definitely falls into latter category; and is better for it.
I am a java programmer with no experience of C++ however the book (which is C++ focused) remained very useful with the supplied code being supplemental to the text section rather than being essential. However, the code that I did read was clear with expressive variable names and clear logic.
Other reviewers have commented that the collision detection chapter is weak and I have to agree; if that is your main difficulty then this book may not be for you. However collision detection is quite self-contained; separated out from the rest of a physics engine so you can plug in whatever collision detection you like. For me this was fine as in my previous "less than satisfactory" attempts at physics engines the collision detection was the only part that was good and I just slotted in the old collision detection into the new engine. I would also warn (if you don't read the book from cover to cover) that the author has used operator overloading; be aware that % has been used for the cross product, not the more usual modulus operator.
Very little is glossed over in this book; for example a whole chapter (and several separate sections) are dedicated to stability (i.e. sorting the problems of vibrations at rest that plague physics engines). Not to mention that a complete engine written based on the concepts of this book is linked to on the internet so if anything is ever unclear (not that it really is) you can go and look at the complete source code to see exactly how it was done).
In conclusion; I have written 3 physics engines, the first let things fall through each other occasionally, the second sort of worked but everything vibrated at rest and behaved strangely sometimes, the third, written with this books help, just works. I can thoroughly recommend this book