Page actions
instrument mechanism / verified-clean
2D Collision Solver (oblique) mechanism
The inspectable method record for 2D Collision Solver (oblique), kept separate from implementation and qualification.
Model scope
The honest label 'idealized rigid-body, frictionless contact' is appropriate only if the implementation leaves tangential components unchanged and uses restitution along the line of centers. As written, the component-wise formula description is incorrect and the impact-angle definition is incomplete, so the instrument cannot be approved without correction.
- For an ideal frictionless collision, the 1D restitution/momentum formulas apply only along the line-of-centers normal component; the tangential components remain unchanged. Applying elastic/inelastic formulas independently to both normal and tangent components is incorrect unless a tangential friction/impulse model is explicitly supplied.
- The impact angle is underdefined: it must specify the orientation of the line-of-centers unit normal relative to the coordinate axes, or the normal vector itself.
- The spec does not state the exact normal-component formulas or the convention for coefficient of restitution e.
- A physically standard model requires positive masses and normally constrains 0 <= e <= 1 for passive elastic/inelastic impacts.
Units and conventions
- m1 and m2 are positive masses in the same mass unit.
- All velocity-vector components use the same velocity unit; outputs preserve that unit unless an explicit conversion is specified.
- impact_angle_deg is interpreted as the line-of-centers normal angle measured counterclockwise from the +x axis.
- The tangent unit vector is t = (-sin(theta), cos(theta)).
- For a frictionless contact, tangential velocity components are unchanged and the normal components use v1n' = ((m1 - e*m2)*v1n + (1+e)*m2*v2n)/(m1+m2) and v2n' = ((1+e)*m1*v1n + (m2 - e*m1)*v2n)/(m1+m2).
- The test vectors use the corrected frictionless-contact interpretation rather than applying restitution independently to the tangent component.
Inspectable vector
One of 4 source-bound review vectors:
{
"inputs": {
"m1": 1,
"m2": 1,
"v1": [
2,
1
],
"v2": [
-1,
0
],
"impact_angle_deg": 0,
"line_of_centers_unit": [
1,
0
],
"e": 1,
"velocity_unit": "m/s"
},
"expected_outputs": {
"v1_prime": [
-1,
1
],
"v2_prime": [
2,
0
],
"velocity_unit": "m/s"
},
"working": "n=(1,0), t=(0,1). Normal components: v1n=2, v2n=-1; tangential components: v1t=1, v2t=0. For equal masses and e=1: v1n'=((1-1)*2+(1+1)*1*(-1))/2=-2/2=-1. v2n'=((1+1)*1*2+(1-1)*(-1))/2=4/2=2. Tangential components are unchanged, so v1'=(-1)n+1t=(-1,1) and v2'=2n+0t=(2,0)."
}Failure boundary
BREAK_CLAIMED · SELF_FLAGGED
A zero-total-mass input makes the solver's mass denominator vanish, producing undefined post-collision velocities unless the instrument validates and rejects the input. The branch test also exposes a required approaching-versus-separating decision that a solver must implement consistently.
Other records
Sources and evidence
These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.
VERIFIED_LEDGER.jsonevidence-tranche4/tranche4-results.jsonBOUNDARY_HAZARD_CATALOG.json