#ifndef MISSION_PLANNING_H #define MISSION_PLANNING_H #include "simulation.h" struct TransferParameters { double semi_major_axis; double eccentricity; double periapsis; double apoapsis; double transfer_time; double departure_velocity; double arrival_velocity; double phase_angle_deg; double delta_v_injection; double delta_v_capture; }; TransferParameters calculate_hohmann_transfer(double r_departure, double r_arrival, double central_mass); double calculate_angular_position(CelestialBody* body, CelestialBody* center); double calculate_required_phase_angle(double transfer_time, double arrival_period); bool check_launch_window(SimulationState* sim, int departure_idx, int arrival_idx, double required_phase_angle_deg, double tolerance_deg); void wait_for_launch_window(SimulationState* sim, int departure_idx, int arrival_idx, double required_phase_angle_deg, double tolerance_deg); void initialize_spacecraft_leo(CelestialBody* spacecraft, CelestialBody* parent, double altitude_m); void apply_transfer_burn(SimulationState* sim, int spacecraft_idx, int departure_idx, TransferParameters* params); double calculate_phase_angle(SimulationState* sim, int departure_idx, int arrival_idx); #endif