Vulcan
Aerospace Engineering Utilities Built on Janus
Loading...
Searching...
No Matches
OrbitalQuantities.hpp
Go to the documentation of this file.
1// Vulcan Orbital Quantities
2// Two-body orbital mechanics computations
3#pragma once
4
5#include <cmath>
6#include <janus/janus.hpp>
9
11
20template <typename Scalar>
21Scalar period(const Scalar &a, double mu = constants::earth::mu) {
22 return 2.0 * M_PI * janus::sqrt(a * a * a / mu);
23}
24
34template <typename Scalar>
35Scalar velocity(const Scalar &r, const Scalar &a,
36 double mu = constants::earth::mu) {
37 return janus::sqrt(mu * (2.0 / r - 1.0 / a));
38}
39
48template <typename Scalar>
49Scalar energy(const Scalar &a, double mu = constants::earth::mu) {
50 return -mu / (2.0 * a);
51}
52
61template <typename Scalar>
62Scalar escape_velocity(const Scalar &r, double mu = constants::earth::mu) {
63 return janus::sqrt(2.0 * mu / r);
64}
65
74template <typename Scalar>
75Scalar circular_velocity(const Scalar &r, double mu = constants::earth::mu) {
76 return janus::sqrt(mu / r);
77}
78
87template <typename Scalar>
88Scalar mean_motion(const Scalar &a, double mu = constants::earth::mu) {
89 return janus::sqrt(mu / (a * a * a));
90}
91
100template <typename Scalar>
101Scalar semi_latus_rectum(const Scalar &a, const Scalar &e) {
102 return a * (1.0 - e * e);
103}
104
114template <typename Scalar>
115Scalar radius_at_anomaly(const Scalar &a, const Scalar &e, const Scalar &nu) {
116 return a * (1.0 - e * e) / (1.0 + e * janus::cos(nu));
117}
118
119} // namespace vulcan::orbital::quantities
constexpr double mu
Gravitational parameter (GM) [m^3/s^2].
Definition Constants.hpp:13
Definition OrbitalQuantities.hpp:10
Scalar escape_velocity(const Scalar &r, double mu=constants::earth::mu)
Escape velocity at given radius.
Definition OrbitalQuantities.hpp:62
Scalar energy(const Scalar &a, double mu=constants::earth::mu)
Specific orbital energy.
Definition OrbitalQuantities.hpp:49
Scalar mean_motion(const Scalar &a, double mu=constants::earth::mu)
Mean motion.
Definition OrbitalQuantities.hpp:88
Scalar velocity(const Scalar &r, const Scalar &a, double mu=constants::earth::mu)
Orbital velocity (vis-viva equation).
Definition OrbitalQuantities.hpp:35
Scalar radius_at_anomaly(const Scalar &a, const Scalar &e, const Scalar &nu)
Radius at given true anomaly.
Definition OrbitalQuantities.hpp:115
Scalar semi_latus_rectum(const Scalar &a, const Scalar &e)
Semi-latus rectum.
Definition OrbitalQuantities.hpp:101
Scalar period(const Scalar &a, double mu=constants::earth::mu)
Orbital period.
Definition OrbitalQuantities.hpp:21
Scalar circular_velocity(const Scalar &r, double mu=constants::earth::mu)
Circular orbit velocity at given radius.
Definition OrbitalQuantities.hpp:75