6#include <janus/janus.hpp>
27template <
typename Scalar>
31 const Scalar a_t = (r1 + r2) / 2.0;
40 const Scalar dv1 = janus::abs(v_t1 - v1);
41 const Scalar dv2 = janus::abs(v2 - v_t2);
55template <
typename Scalar>
71template <
typename Scalar>
74 const Scalar a_t = (r1 + r2) / 2.0;
75 return M_PI * janus::sqrt(a_t * a_t * a_t / mu);
91template <
typename Scalar>
92std::tuple<Scalar, Scalar, Scalar>
96 const Scalar a1 = (r1 + r_b) / 2.0;
98 const Scalar a2 = (r_b + r2) / 2.0;
108 const Scalar dv1 = janus::abs(v_t1_peri - v1);
109 const Scalar dv2 = janus::abs(v_t2_apo - v_t1_apo);
110 const Scalar dv3 = janus::abs(v2 - v_t2_peri);
112 return {dv1, dv2, dv3};
126template <
typename Scalar>
128 return 2.0 * v * janus::sin(janus::abs(delta_i) / 2.0);
142template <
typename Scalar>
144 const Scalar &delta_i) {
145 const Scalar cos_di = janus::cos(delta_i);
146 return janus::sqrt(v1 * v1 + v2 * v2 - 2.0 * v1 * v2 * cos_di);
constexpr double mu
Gravitational parameter (GM) [m^3/s^2].
Definition Constants.hpp:13
Scalar velocity(const Scalar &r, const Scalar &a, double mu=constants::earth::mu)
Orbital velocity (vis-viva equation).
Definition OrbitalQuantities.hpp:35
Scalar circular_velocity(const Scalar &r, double mu=constants::earth::mu)
Circular orbit velocity at given radius.
Definition OrbitalQuantities.hpp:75
Definition TransferMechanics.hpp:13
Scalar combined_maneuver_delta_v(const Scalar &v1, const Scalar &v2, const Scalar &delta_i)
Combined plane change and altitude change.
Definition TransferMechanics.hpp:143
Scalar plane_change_delta_v(const Scalar &v, const Scalar &delta_i)
Simple plane change delta-v.
Definition TransferMechanics.hpp:127
std::pair< Scalar, Scalar > hohmann_delta_v(const Scalar &r1, const Scalar &r2, double mu=constants::earth::mu)
Hohmann transfer delta-v.
Definition TransferMechanics.hpp:28
Scalar hohmann_total_delta_v(const Scalar &r1, const Scalar &r2, double mu=constants::earth::mu)
Total Hohmann transfer delta-v.
Definition TransferMechanics.hpp:56
std::tuple< Scalar, Scalar, Scalar > bielliptic_delta_v(const Scalar &r1, const Scalar &r2, const Scalar &r_b, double mu=constants::earth::mu)
Bielliptic transfer delta-v.
Definition TransferMechanics.hpp:93
Scalar hohmann_transfer_time(const Scalar &r1, const Scalar &r2, double mu=constants::earth::mu)
Hohmann transfer time.
Definition TransferMechanics.hpp:72