Real-time collision detection. I spent way too much time over the last few years of my life writing a book on collision detection. It covers a large number of primitive tests, spatial partitioning methods, bounding volumes and bounding volume hierarchies, robustness issues, and lots more. Check out the book page for more detail.

Recommended list. I admit it — I'm a compulsive book buyer. Thanks to me, many book publishers are still in business! Out of all the books I have, there are a few that I think any self-respecting (games) programmer should have. Those books are listed here.

Papers & Slides

GDC 2007 — Physics for Games Programmers: Numerical Robustness (for Geometric Calculations) At GDC 2007 I again talked about numerical robustness at the physics tutorial sessions. [slides ppt 297KB]

GDC 2007 — Physics for Games Programmers: Collisions using separating-axis tests. In the 2007 physics tutorial sessions I also talked about the separating-axis test, and here are the slides. [slides ppt 191KB]

GDC 2006 — Physics for Games Programmers: Numerical Robustness (for Geometric Calculations) I held a repeat of my GDC 2005 talk at the GDC 2006 Physics tutorial. The slides are virtually identical to the GDC 2005 talk, except now with a nicer white background. The comments below on the previous incarnation of the talk still applies. [slides ppt 297KB]

GDC 2005 — Numerical Robustness for Geometric Calculations (aka EPSILON is NOT 0.00001!) This is my GDC 2005 presentation that gives an overview of floating-point numbers and their issues. The talk grew out of my frustration seeing lots and lots of broken floating-point code posted on the net and various online forums. It's very easy to screw up floating-point-based code, and here I show why! There are no notes for this presentation (although the slides have some notes) but Chapters 8 and 11 of RTCD cover the presented information in deeper detail. (Robustness is relly important in general, which is why I talk about it a lot in my book.) [slides ppt 542KB]

SIGGRAPH 2004 — The Gilbert-Johnson-Keerthi Algorithm. At SIGGRAPH 2004, as part of the Collision Detection and Proximity Queries course, I held a presentation on the GJK algorithm for determining intersection between convex polyhedra. The notes are heavily based on material from my book. [notes pdf 2,859KB; slides ppt 494KB]

GDC 2003 — Memory Optimization. At GDC 2003 I presented a lecture on memory optimization, talking about ways to deal with the bottleneck between CPU and main memory. There are no notes, but the slides are quite self-contained so that should hopefully not be a problem. However, for more information, Chapter 13 of my book deals with the topics of this presentation in deeper detail. [slides ppt 827KB]


Combined absolute and relative tolerances revisited. (06/09/2007) This article expands on the coverage in both my book as well as my GDC slides of how to combine absolute and relative tolerance tests into a single test.