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:
+12
-4
@@ -10,10 +10,11 @@ and this project adheres to
|
||||
|
||||
### Fixed
|
||||
|
||||
- Correct the common Real48 tangent projection to the binary's
|
||||
`spin*0.4 - ((vx*ny + vy*nx)/length)*response_tangent`; live probes now
|
||||
match horizontal drain `(-302,-1809)`, ordinary circle `(94,564)`, and
|
||||
bumper `(197,3096)` transitions instead of rounding a bare coefficient away.
|
||||
- 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
|
||||
match horizontal drain `(-302,-1809)`, ordinary circle `(94,564)`, bumper
|
||||
`(197,3096)`, and relative record 57 `(1839,1832)` with spin exactly `-5.28`.
|
||||
- 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.
|
||||
@@ -67,6 +68,13 @@ and this project adheres to
|
||||
- Apply the collision table's predicted-position broadphase bounds before
|
||||
type-1/type-2 detection, including the registered five-pixel ball margin,
|
||||
and retain unresolved candidates until the selected response phase.
|
||||
- Correct the two relative slingshot initializer chains after records 55 and
|
||||
70: circles 56/58/71/73 and lines 57/59/72/74 now accumulate from each
|
||||
preceding path endpoint exactly as the 175-record ledger specifies. The
|
||||
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.
|
||||
- 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