fix(physics): restore standard tangent sign response
The left relative slingshot probe proved the spin projection, but its geometry did not distinguish the sign rule. A stopped-Wine probe on symmetric record 72 did: the binary uses the standard dot-product tangent for both spin and the opposing direction of the current tangential response. The earlier swapped-component interpretation happened to agree for vertical walls and a centered circle but selected the wrong sign on the right slingshot. Use `tv=(vx*nx+vy*ny)/length`, update spin with `tv*0.02*response_tangent`, and apply `-sign(tv)*abs(normal_velocity)*response_tangent`, retaining the binary's negative direction when tv is zero. Seal record 72's exact position, velocity, and `+5.46` Real48 spin in C and Rust. Keep the two-minute autoplay assertion focused on actual launch, press/release, target, bumper, and finite-state activity after the corrected trajectory. Test Plan: - stopped Wine 11.15 record-72 injection/trace -- matched position, velocity, and spin - `cargo test --workspace --all-targets --all-features` -- 124 passed - `cargo clippy --workspace --all-targets --all-features -- -D warnings` -- passed - `bash original/tools/test_reconstructed_c.sh` -- passed - `python3 original/tools/audit_reconstruction.py --require-complete` -- passed with zero incomplete or unclassified units - `rumdl check --flavor commonmark RECONSTRUCTION.md CHANGELOG.md` -- passed - `git diff --cached --check` -- passed
This commit is contained in:
@@ -83,15 +83,17 @@ DAT994 progress strip is drawn at `(202,328)` with height 13 and width
|
||||
`(stage-1)*7`, rather than the impossible historical 328x202 read from a
|
||||
237x13 bitmap. The focused loading-stage harness seals stages 1, 35, and 0.
|
||||
Live one-substep rail/circle probes further correct the response transform.
|
||||
The binary keeps two projections distinct: swapped-component
|
||||
`-(vx*normal_y + vy*normal_x)/length` supplies the sign of the tangential
|
||||
response magnitude `abs(normal_velocity)*response_tangent`, which is added to
|
||||
retained `spin*0.4`. Standard dot-product
|
||||
`(vx*normal_x + vy*normal_y)/length` independently drives
|
||||
`spin_delta = projection*0.02*response_tangent`. The documented horizontal
|
||||
drain `(0,3015)->(-302,-1809)`, ordinary circle/bumper transitions, and stopped
|
||||
The binary's standard dot-product tangent
|
||||
`tv=(vx*normal_x + vy*normal_y)/length` drives
|
||||
`spin_delta=tv*0.02*response_tangent`. The current tangential response opposes
|
||||
the sign of `tv` with magnitude
|
||||
`abs(normal_velocity)*response_tangent` (negative when `tv==0`) and is added to
|
||||
retained `spin*0.4`. The documented horizontal drain
|
||||
`(0,3015)->(-302,-1809)`, ordinary circle/bumper transitions, and stopped
|
||||
Wine record-57 transition `(75530,354765)/(3000,15)` to
|
||||
`(77369,356597)/(1839,1832)` with exact Real48 spin `-5.28` seal both paths.
|
||||
`(77369,356597)/(1839,1832)` with exact Real48 spin `-5.28`, plus record 72
|
||||
`(235348,356825)/(-3000,15)` to `(233253,358494)/(-2095,1669)` with spin
|
||||
`+5.46`, seal both paths and both relative slingshot chains.
|
||||
|
||||
## Reproducible gates
|
||||
|
||||
|
||||
Reference in New Issue
Block a user