fix(physics): restore swapped-component tangent driver

Use the binary tangent velocity -(vx*normal_y + vy*normal_x)/length, then combine it with retained spin and the Real48 response coefficient. This single formula matches live outer/inner shooter walls, object 155, bumper 51, and the horizontal special-drain response; update C evidence and keep autoplay coverage on a target-reaching seed.

Test Plan:
- bash original/tools/test_reconstructed_c.sh
- python3 original/tools/audit_reconstruction.py --require-complete
- cargo test --all-targets
- cargo clippy --all-targets --all-features -- -D warnings
- original Wine traces: /tmp/original-outer-wall.csv /tmp/original-inner-wall.csv /tmp/original-circle155-after.csv /tmp/original-special-respawn.csv
- git diff --check
This commit is contained in:
2026-08-23 19:48:30 +02:00
parent 3dce159965
commit 6f8c55657b
6 changed files with 47 additions and 15 deletions
+4 -2
View File
@@ -83,8 +83,10 @@ 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 tangential delta is `normal_velocity * response_tangent`, added to retained
`spin * 0.4`; subtracting the bare coefficient incorrectly rounded it to zero.
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.