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
+1 -1
View File
@@ -433,7 +433,7 @@ mod tests {
#[test]
fn autoplay_stays_finite_for_two_minutes_of_exact_physics() {
let mut simulation = Simulation::new(Scenario::Autoplay, 7);
let mut simulation = Simulation::new(Scenario::Autoplay, 1);
simulation.advance_to(u64::from(SIMULATION_HZ) * 120);
let event_count = |name: &str| {
simulation