For coplanar orbits (inclination < 0.01 rad), compute omega from the
eccentricity vector (longitude of periapsis) instead of forcing omega=0.
This is necessary for correct post-burn orbital element conversion,
critical for Hohmann transfer accuracy.
Update test_omega_debug to accept the new behavior: omega is computed
from the eccentricity vector direction for coplanar orbits.
- Move RendezvousState and RendezvousTarget from rendezvous_types.h to orbital_objects.h
- Remove rendezvous_types.h entirely
- Simplify rendezvous.h to depend on orbital_objects.h
- Delete spacecraft.h and spacecraft.cpp (consolidated into orbital_objects.h)
- Update all include paths across codebase
- All tests pass (4 pre-existing failures unchanged)
Added planning document detailing two separate issues causing
periapsis burns to execute at incorrect locations:
Issue 1: Omega = π instead of 0 for near-zero inclination orbits
- Unstable atan2 calculation in cartesian_to_orbital_elements()
- Occurs when n_mag > 1e-10 due to tiny h_vec.y from i ≈ 0
- Fix: Add inclination threshold (0.01 rad) before using atan2 path
Issue 2: True anomaly trigger fires early at wrong location
- angle_between() detects upcoming crossing, fires immediately
- Executes burn at current position instead of waiting for target angle
- Proposed fixes: Defer execution, interpolate, or remove future check
Also cleaned up:
- Removed temporary debug files (debug_test_burn.cpp, debug_trace.cpp)
- Removed debug output from src/orbital_mechanics.cpp
- Kept tests/test_omega_debug.cpp as it validates Issue 1 fix
See docs/planning/periapsis_burn_bug_analysis.md for full details.