diff --git a/src/maneuver.cpp b/src/maneuver.cpp index fe6da7c..3e96a58 100644 --- a/src/maneuver.cpp +++ b/src/maneuver.cpp @@ -123,19 +123,6 @@ static bool angle_between(double current, double next, double target) { } } -// Propagate orbital state forward by dt and return new position/velocity -static void propagate_state_by_dt(OrbitalElements elements, double parent_mass, double dt, - Vec3* out_r, Vec3* out_v, Vec3* out_h, - Vec3* out_e_vec, double* out_e_mag) { - OrbitalElements future_elements = propagate_orbital_elements(elements, dt, parent_mass); - orbital_elements_to_cartesian(future_elements, parent_mass, out_r, out_v); - - *out_h = vec3_cross(*out_r, *out_v); - double mu = G * parent_mass; - *out_e_vec = calculate_eccentricity_vector(*out_r, *out_v, *out_h, mu); - *out_e_mag = vec3_magnitude(*out_e_vec); -} - bool check_maneuver_trigger(Maneuver* maneuver, Spacecraft* craft, SimulationState* sim) { switch (maneuver->trigger_type) { case TRIGGER_TIME: @@ -170,11 +157,12 @@ bool check_maneuver_trigger(Maneuver* maneuver, Spacecraft* craft, SimulationSta if (current_diff < 0.01) return true; // Propagate orbit forward by one time step to check if we'll cross trigger - Vec3 future_r, future_v, future_h, future_e_vec; - double future_e_mag; - propagate_state_by_dt(craft->orbit, parent->mass, sim->dt, - &future_r, &future_v, &future_h, - &future_e_vec, &future_e_mag); + OrbitalElements future_elements = propagate_orbital_elements(craft->orbit, sim->dt, parent->mass); + Vec3 future_r, future_v; + orbital_elements_to_cartesian(future_elements, parent->mass, &future_r, &future_v); + Vec3 future_h = vec3_cross(future_r, future_v); + Vec3 future_e_vec = calculate_eccentricity_vector(future_r, future_v, future_h, mu); + double future_e_mag = vec3_magnitude(future_e_vec); double future_r_mag = vec3_magnitude(future_r); if (future_r_mag < 1.0) return false;