AEROSIM-TS-29
Integrate Rapier aircraft motion and collision state
Rapier and @react-three/rapier advance representative aircraft motion and collision state through the fixed-step boundary.
- Verified flow state
- Done
- Owner
- AeroSim Architecture and Delivery
- Feature
- AEROSIM-FT-46
- Component
- Web Application — Rapier physics adapter
- Repository
- corp-v1-aerosim/corp-v1-aerosim
Delivery scope
Create and dispose the Rapier world, instantiate the representative dynamic aircraft rigid body and cuboid collider, translate SimulationInput axes into bounded forces and torques each fixed tick, and map collision start/end to CollisionState. Primary files: applications/web/src/flight/physics/RapierFlightWorld.tsx, applications/web/src/flight/physics/aircraft-body.ts, applications/web/src/flight/physics/apply-flight-controls.ts, applications/web/src/flight/physics/collision-events.ts, applications/web/tests/rapier-aircraft.test.tsx.
Implementation contract
Implementation artifacts
- applications/web/src/flight/physics/RapierFlightWorld.tsx
- applications/web/src/flight/physics/aircraft-body.ts
- applications/web/src/flight/physics/apply-flight-controls.ts
- applications/web/src/flight/physics/collision-events.ts
- applications/web/tests/rapier-aircraft.test.tsx
Inputs
- AircraftState and SimulationInput at a fixed SimulationTick
- AircraftBodyConfig {mass,dimensions,linearDamping,angularDamping,maxForce,maxTorque}
Outputs
- Next AircraftState read from Rapier after the fixed step
- CollisionState {activeColliderIds,lastStarted?,lastEnded?}
Failure boundaries
- Reject mass <=0, non-positive collider dimensions, and non-finite force coefficients before body creation.
- Ignore collision handles not registered in the flight world and clear all handles/events on reset.
Excluded scope
- Aerodynamic fidelity, terrain heightfield construction, server-authoritative physics, and multiplayer collision are not implemented here.
Verification steps
- pnpm --filter @aerosim/web test -- rapier-aircraft.test.tsx
- Apply a fixed throttle/pitch sequence for 120 ticks, assert finite transforms and expected collision start/end, then reset and compare the initial body state.
Traceability
Dependencies
- AEROSIM-TS-28Canonical ID: TASK-0028
UI/UX applicability
non_visual
This Task owns technical or behavioral acceptance and does not claim direct visual conformance to the approved UI/UX package.
Acceptance evidence
Verified delivery: application PR #44 reviewed head b82895d1c78558795d617c2b29012df8156dc066, exact-head validation task 1901 succeeded, merged as 5d0338094663cb337675f3c0d6b8bd77af31c5aa; Wave 8 integrated application head a3e4429a9970241b278a4f64aa7c6541c74e63a8 passed publish task 1916 and validate task 1917. Release completion verified on product 1.0.0.0 at GitOps revision 5d3712d89dfbf7dacd993348e55f497d126c7bf9 with Argo Synced/Healthy, exact image digests, authenticated API/database access, and three-world configured-flight acceptance.
Current evidence boundary
No current implementation, acceptance, release, or deployment evidence is claimed for this planned Task. Any prior implementation may be used only as prototype and discovery evidence.