Box2D is a 2D physics engine for games.
Features:
Collision
Continuous collision detection
Contact callbacks: begin, end, pre-solve, post-solve
Convex polygons and circles
Multiple shapes per body
One-shot contact manifolds
Dynamic tree broadphase
Efficient pair management
Fast broadphase AABB queries
Collision groups and categories
Physics
Continuous physics with time of impact solver
Persistent body-joint-contact graph
Island solution and sleep management
Contact, friction, and restitution
Stable stacking with a linear-time solver
Revolute, prismatic, distance, pulley, gear, mouse joint,
and other joint types
Joint limits, motors, and friction
Momentum decoupled position correction
Fairly accurate reaction forces/impulses
System
Small block and stack allocators
Centralized tuning parameters
Highly portable C++ with no use of STL containers