Contact point position in body A's local/relative space (center of mass space). Constant - used to recompute world position when body moves.
Contact point position in body B's local/relative space (center of mass space). Constant - used to recompute world position when body moves.
Normal constraint: prevents interpenetration. Direction: contact normal (perpendicular to contact surface). Lambda clamping: normalLambda >= 0 (push only, no pull).
Contact point position on body A (world space). Recomputed each solving iteration from local position + body transform.
Contact point position on body B (world space). Recomputed each solving iteration from local position + body transform.
Friction constraint 1: resists motion in first tangent direction. Direction: first tangent (perpendicular to normal). Lambda clamping: |tangentLambda1| <= friction * normalLambda.
Friction constraint 2: resists motion in second tangent direction. Direction: second tangent (perpendicular to normal and tangent1). Lambda clamping: |tangentLambda2| <= friction * normalLambda.
A single contact point with full constraint data. Links world-space geometry to constraint solving.
Each contact point has 3 constraint axes: