# Hayden Project Hayden Project is a MATLAB 3DOF interceptor-versus-target engagement simulation repository for the AERO 3220 Spring 2026 coursework. The project is driven by the PDFs in [`docs/`](./docs) and implemented through the MATLAB files in [`code/`](./code). ## What The Docs Define - [`docs/AERO 3220 3DOF Information Spring 26.pdf`](./docs/AERO%203220%203DOF%20Information%20Spring%2026.pdf) defines the assignment, required plots, and evaluation settings. - [`docs/Atmosphere Model SI Units.pdf`](./docs/Atmosphere%20Model%20SI%20Units.pdf) provides the SI-unit atmosphere equations for temperature, pressure, density, acoustic speed, and Mach number for the lower-atmosphere branch shown in the handout. - [`docs/Addendum to Atomosphere Model Feb 26.pdf`](./docs/Addendum%20to%20Atomosphere%20Model%20Feb%2026.pdf) defines the stratosphere extension for altitudes above `11 km` MSL. - [`docs/Missile and Target Data for 3DOF Spring 26.pdf`](./docs/Missile%20and%20Target%20Data%20for%203DOF%20Spring%2026.pdf) is the source packet for the missile and target geometry, propulsion, and drag data that must be transcribed into the simulation. ## Instructor Clarification Per professor guidance documented on `2026-03-28`: - The atmosphere model must be written and integrated into the 3DOF simulation. - The final atmosphere implementation must include the stratosphere model for altitudes above `11 km`. - The source files are intentionally incomplete until the missing `XX` values are replaced with real numbers from the assignment material. - The addendum specifies that for `z > 11000 m`, `T` is held constant at the `11 km` value, `P` decays exponentially from `P11k`, `rho = P/(R*T)`, and `acousticSpeed = sqrt(gamma*R*T)`. ## Assignment Baseline The course handout specifies these evaluation values: - Velocity pursuit guidance gain: `0.5` - Blind range: `2 m` - Acquisition range: `5000 m` - Lateral acceleration limit: `40 g` - Time after missile launch to initiate velocity-pursuit guidance: `0.5 s` - Terminal proportional-navigation gain: `4` - Commit time: `50 s` - Missile initial elevation angle: `40 deg` The required outputs are: - Target and missile trajectories in the vertical plane (`x` vs `z`) - Target speed versus time - Missile speed versus time - Missile Mach number versus time - Missile acceleration magnitude versus time since missile launch ## Current Code State - [`code/Interceptor_3DOF.m`](./code/Interceptor_3DOF.m) is the top-level driver script and writes `Ttrajectory.csv` and `Mtrajectory.csv`. - [`code/T3dxdt.m`](./code/T3dxdt.m) and [`code/M3dxdt.m`](./code/M3dxdt.m) now include transcribed target and interceptor area, thrust, mass, and drag data from the course plots. - [`code/getGuidance.m`](./code/getGuidance.m) holds the guidance-law logic. - [`code/getRho.m`](./code/getRho.m) now implements the lower-atmosphere model and the addendum-defined stratosphere branch. - [`code/getMD.m`](./code/getMD.m) computes miss distance near the point of closest approach. At the moment, the repository is a partially completed assignment skeleton rather than a finished simulation: - The executable `XX` placeholders have been removed from the current MATLAB code. - The target and missile curves were manually transcribed from the image-based course plots, so those values should be treated as sourced approximations rather than machine-extracted ground truth. - The model starts running in Octave, but the nested fixed-step `ode45` loop is slow enough that end-to-end validation is still incomplete. ## Working Expectations - Keep units in SI unless a source document explicitly states otherwise. - Treat `/docs` and direct instructor clarifications as authoritative for assignment requirements and parameter values. - Record assumptions, extracted tables, unresolved issues, and verification status in [`MEMORY.md`](./MEMORY.md). - Track the active execution queue in [`TODO.md`](./TODO.md). - Record dated repository-level changes in [`CHANGELOG.md`](./CHANGELOG.md). ## For AI Agents Read [`MEMORY.md`](./MEMORY.md) before making changes. Use [`MEMORY.md`](./MEMORY.md) for durable handoff context, [`TODO.md`](./TODO.md) for the live task queue, and [`CHANGELOG.md`](./CHANGELOG.md) for dated repo history, and update the file whose role changed so the next agent can continue without re-discovering context.