Skip to main content

AEROSIM-TS-29

Project task

Integrate Rapier aircraft motion and collision state

Rapier and @react-three/rapier advance representative aircraft motion and collision state through the fixed-step boundary.

AEROSIM-TS-29Canonical ID TASK-0029
Verified flow state
Done
Owner
AeroSim Architecture and Delivery
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

Requirements

Dependencies

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.