@ -111,6 +111,7 @@ struct OrbitalElements {
double argument_of_periapsis;
};
```
**Note:** 3D orientation using `inclination` , `longitude_of_ascending_node` , and `argument_of_periapsis` is defined but not yet applied to orbital calculations (deferred implementation).
### Spacecraft (spacecraft.h)
```cpp
@ -195,6 +196,21 @@ Vector math and gravity calculations. RK4 (Runge-Kutta 4th order) integration wi
- `rk4_step(Vec3* position, Vec3* velocity, double dt, double body_mass, double parent_mass)` - RK4 integration using position/velocity pointers
- `evaluate_acceleration(Vec3 relative_pos, double body_mass, double parent_mass)` - computes gravitational acceleration from parent
### Orbital Mechanics (orbital_mechanics.cpp/h)
Keplerian orbital elements to Cartesian coordinate conversion. Supports all orbit types with planar orbits (3D orientation deferred).
**Key functions:**
- `orbital_elements_to_cartesian(OrbitalElements elements, double parent_mass, Vec3* out_position, Vec3* out_velocity)` - converts Keplerian elements to local position/velocity
**Implementation:**
- Circular orbits (e=0): Position on circle, velocity from vis-viva equation
- Elliptical orbits (0< e < 1 ) : Position from polar equation , velocity from vis-viva
- Parabolic orbits (e≈1): Uses `semi_latus_rectum` (p), position `r = p/(1+cos(ν))` , velocity `v = √(2μ/r)`
- Hyperbolic orbits (e>1): Same as elliptical with negative semi_major_axis
- All elements use SI units (meters, radians)
- `true_anomaly = 0` is at periapsis (closest approach)
- 3D orientation (inclination, RAAN, argument of periapsis) defined but not yet applied (deferred)
### Simulation (simulation.cpp/h)
Simulation state management and updates. SOI detection using Hill sphere: `r_soi = a * (m/M)^(2/5)` .
@ -299,6 +315,7 @@ orbit = {
```
- Uses `orbit` table for orbital elements (same as bodies)
- Altitude can be used instead of `semi_major_axis` for non-parabolic orbits (convenience feature, added to parent radius)
- Optional 3D orbital elements (inclination, longitude_of_ascending_node, argument_of_periapsis) are defined but not yet applied (deferred)
**Config format (TOML) - Maneuvers:**
```toml