Flock::Collision::Solver2D
Warm-started sequential-impulse solver (Box2D-lite style). Each contact point carries an accumulated impulse across frames; applying it up front (warm start) and clamping the accumulated value makes stacks converge fast and rest firmly. Positional correction stays Baumgarte-style.
Constants
Instance methods
Precomputes the constraint geometry, effective masses and restitution bias.
Baumgarte positional correction: pushes centers apart along the normal,
weighted by inverse mass. weight scales the correction so that when a
pair's manifold has multiple contact points (each corrected separately),
the summed correction stays at most ~1x (pass 1/point_count).
Nearest cached impulse to point (within a small tolerance); {0,0} on miss.
Order-independent key for an entity pair (broadphase always yields i<j, so the A->B normal orientation is stable frame to frame).