- Home
- » Books
- » Technical
- » Math and Physics
- » Book: Collision Detection in Interactive 3D Environments (Morgan Kaufmann Series in Interactive 3D Technology)
By Gino van den Bergen Published October 2003 List Price: Amazon.com Sales Rank: 2,209,372 Availability: Usually ships in 24 hours Summary: The heart of any system that simulates the physical interaction between objects is collision detection-the ability to detect when two objects have come into contact. This system is also one of the most difficult aspects of a physical simulation to implement correctly, and invariably it is the main consumer of CPU cycles. Practitioners, new to the field or otherwise, quickly discover that the attempt to build a fast, accurate, and robust collision detection system takes them down a long path fraught with perils and pitfalls unlike most they have ever encountered. Without in-depth knowledge and understanding of the issues associated with engineering a collision detection system, the end of that path is an abyss that has swallowed many a good programmer! Gino van den Bergen's new book is the story of his successful journey down that path. The outcome is his well-known collision detection system, the SOftware Library for Interference Detection (SOLID). Along the way, he covers the topics of vector algebra and geometry, the various geometric primitives of interest in a collision system, the powerful method of separating axes for the purposes of intersection testing, and the equally powerful Gilbert-Johnson-Keerthi (GJK) algorithm for computing the distance between convex objects. But this book provides much more than a good compendium of the ideas that go into building a collision system. The curse of practical computational geometry is floating-point arithmetic. Algorithms with straightforward implementations when using exact arithmetic can have catastrophic failures in a floating-point system. Specifically, intersection and distance algorithms implemented in a floating-point system tend to fail exactly in the most important case in a collision system-when two objects are just touching. Great care must be taken to properly handle floating-point round off errors. Gino's ultimate accomplishment in this book is his presentation on how to correctly implement the GJK distance algorithm in the presence of single-precision floating-point arithmetic. And what better way to illustrate this than with a case study, the final chapter on the design and implementation of SOLID.
Buy it now: |
2 Comments
Mathematical notations are used a lot and the reader should have a basic grasp of at least linear algebra (and set theory) to understand the algorithms. A short primer to geometry is provided, but it's definitely dense.
It's funny to see that what I've learned in at least two university courses can be summed up in a couple of pages. But that could be caused by a lack of retention on my part .
I can definitely recommend this book.
For most of his solutions I had developed my own versions through necessity, I could probably give you an easy to read solution for most if not all of his methods.
It's written as a 3rd year maths course, as such you'll need to be hot at set theory and convexity (a maths course in itself).
I have a better idea - after writing his impossible-to-read-if you're-not-currently-doing-a-Maths-degree solutions - why doesn't he give a simple to read explanation that normal people can understand.
Believe me. I have a maths degree - that was 15 years ago - hence I've forgotten how Maths courses are taught.
I develop my own games daily - all I wanted was some simple solutions to some simple collisions - I *cannot* use this book.
2 line sampler:
||vk+1||==min{||x||: x element of conv(Wk union {wk}) <= ||vk||, since vk element of conv(Wk) and conv(Wk) subset conv(Wk union {wk})
do you really want to have to go through all that as a casual game writer? Believe me it isn't necessary...
As I said - I've developed my own collision detections just from chatting to friends - I can simplify everything you could ever need here:
1.scalar product,
2.the cross product,
3.rudimentary matrix multiplication
4. vectors !
5.sin !!
6.cosine !!
How he makes this so unreadable really is way beyond me.
This book is pratically useless as it doesn't give any useful practices.