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:
@@ -10,11 +10,13 @@ and this project adheres to
|
||||
|
||||
### Fixed
|
||||
|
||||
- Separate the common response's two binary projections: the swapped-component
|
||||
value supplies the sign of `abs(normal_velocity)*response_tangent`, while
|
||||
`(vx*nx+vy*ny)/length * 0.02 * response_tangent` updates spin. Live probes now
|
||||
- Restore the common response's standard dot-product tangent
|
||||
`tv=(vx*nx+vy*ny)/length`: `tv*0.02*response_tangent` updates spin, while the
|
||||
current response opposes its sign with magnitude
|
||||
`abs(normal_velocity)*response_tangent` (negative when `tv==0`). Live probes
|
||||
match horizontal drain `(-302,-1809)`, ordinary circle `(94,564)`, bumper
|
||||
`(197,3096)`, and relative record 57 `(1839,1832)` with spin exactly `-5.28`.
|
||||
`(197,3096)`, relative record 57 `(1839,1832)` with spin `-5.28`, and record
|
||||
72 `(-2095,1669)` with spin `+5.46`.
|
||||
- Gate dynamic record 174/175 impulse transfer on the other slot's capture age:
|
||||
a held ball remains velocity-stationary and the moving response retains its
|
||||
full normal velocity instead of always subtracting 1,000.
|
||||
@@ -74,7 +76,8 @@ and this project adheres to
|
||||
flagless TDK companion lines also retain their zero contact/link field rather
|
||||
than carrying unused synthetic head IDs. Record 57 additionally matches the
|
||||
live original's `(75530,354765)/(3000,15)` to
|
||||
`(77369,356597)/(1839,1832)` transition.
|
||||
`(77369,356597)/(1839,1832)` transition; symmetric record 72 matches
|
||||
`(235348,356825)/(-3000,15)` to `(233253,358494)/(-2095,1669)`.
|
||||
- Match rectangular type-4 magnetic gates to raw `1000:9b69`: enter only when
|
||||
the previous position is inside, then deactivate when the newly predicted
|
||||
position exits any edge, replacing a swept-intersection approximation.
|
||||
|
||||
Reference in New Issue
Block a user