fix(physics): restore relative slingshot response
A full comparison against the 175-record ledger found stale guessed coordinates in both relative slingshot chains. Circles 56/58/71/73 and lines 57/59/72/74 were displaced by up to 70 pixels. The corrected record-57 geometry then exposed a second issue: readable C and Rust had collapsed two independent binary response projections into one. Transcribe the accumulated initializer coordinates exactly. Use the swapped-component projection only to sign the current tangential response `abs(normal_velocity) * response_tangent`, and use the standard dot product for `spin_delta * 0.02 * response_tangent`. Correct the readable C evidence and Rust together, extend live tracing with the six-byte spin field, and seal the stopped-Wine transition from `(75530,354765)/(3000,15)` to `(77369,356597)/(1839,1832)` with Real48 spin `-5.28` in both harnesses. Test Plan: - stopped Wine 11.15 record-57 injection/trace -- matched position, velocity, and spin - `cargo test --workspace --all-targets --all-features` -- 123 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 - `python3 -m py_compile original/tools/trace_original_state.py original/tools/inject_original_state.py` -- passed - `rumdl check --flavor commonmark RECONSTRUCTION.md CHANGELOG.md` -- passed - `git diff --cached --check` -- passed
This commit is contained in:
@@ -82,13 +82,16 @@ Raw `1000:531e` further corrects the Pascal-order BitBlt interpretation: the
|
||||
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 projection:
|
||||
the binary tangent driver is the swapped-component value
|
||||
`-(vx*normal_y + vy*normal_x)/length`, multiplied by `response_tangent` and
|
||||
added to retained `spin * 0.4`; subtracting the bare coefficient incorrectly
|
||||
rounded it to zero.
|
||||
The documented horizontal drain transition `(0,3015)->(-302,-1809)` and the
|
||||
ordinary circle/bumper tangent transitions seal this correction.
|
||||
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
|
||||
Wine record-57 transition `(75530,354765)/(3000,15)` to
|
||||
`(77369,356597)/(1839,1832)` with exact Real48 spin `-5.28` seal both paths.
|
||||
|
||||
## Reproducible gates
|
||||
|
||||
|
||||
Reference in New Issue
Block a user