fix(physics): restore fixed-point circle responses
Replace the overlap-and-separate circle approximation with the original swept ball-center entry test and radial/tangent fixed-point response. Preserve every type-1 record's Real48 rebound and tangent coefficients, plus the bumper normal kick derived from the 3800-unit speed scalar. Unify line and circle traversal in original object-id order and remove the old floating passive-circle and bumper impulses. Add exact tests for live object 155 and bumper 51 transitions, and keep moving flippers as the explicit remaining collision approximation. Test Plan: - `cargo test --all-targets` -- 44 passed - `cargo clippy --all-targets -- -D warnings` -- passed - `cargo build --profile production` -- passed - 20-second deterministic launch traversed bumpers and drained without rescue - live object 155 and bumper 51 fixed-point transitions matched exactly - `git diff --cached --check` -- passed
This commit is contained in:
@@ -124,3 +124,10 @@ uses `vn' = -0.6 * vn` and `vt' = vt + 0.1 * vn` for the ordinary rail
|
||||
coefficients stored in its two Real48 fields. The new position is the previous
|
||||
position plus this response velocity; the original does not separate a circle
|
||||
from the line with a modern capsule solver.
|
||||
|
||||
Fresh one-substep probes recovered type-1 response in the radial basis. With
|
||||
outward normal `n`, clockwise tangent `t`, entering speed `vn < 0`, and tangent
|
||||
speed `vt`, ordinary object 155 produced `vn' = -0.6 * vn` and
|
||||
`vt' = vt - 0.1 * vn`. Bumper 51 additionally added `0.4 * 3800` along `n`.
|
||||
The exact captured transitions were `(0,-940) -> (94,564)` and
|
||||
`(0,-1970) -> (197,3096)` millipixels per substep.
|
||||
|
||||
Reference in New Issue
Block a user