### Summary This portion of the SIGGRAPH 2003 course notes on physically based simulation deals with the problem of penetration. During simulation it is possible that two bodies will penetrate each other over the course of a single timestep. Dealing with penetration is difficult for several reasons. First, there must be a way to detect penetration over a given timestep. Second is the question of what to do when a penetration has been detected in order to prevent that penetration. The notes identify two major classes of penetration that must be dealt with. The first is colliding contact, where two bodies that do not intersect before a timestep intersect after the timestep. The second is resting contact where two bodies in contact with each other before a timestep should remain in contact after a timestep. In terms of detecting intersections, the notes describe detecting contact in convex polyhedra. If the two polyhedra do not intersect, a plane can be found such that the polyhedra are on different sides of the plane. Finding separating planes for all polyhedra can be expensive. As such, the notes describe using bounding boxes to speed up collision detection, and to use separating planes only when bounding boxes intersect. For colliding contacts, the notes describe the basic method for handling contact collisions by using impulses at the instant of collision. When a collision is detected, the simulation backs up the ODE solver to the point of collision and then determines the correct impulse based on the point of contact and the directions of motion. After the impulse is added, the ODE solver is restarted. For resting contacts, the problem becomes satisfying a set of constraints: (1) contact forces must prevent interpenetration, (2) contact forces should be repulsive, (3) the contact force must be zero if the bodies are separating.