23#include <entt/entt.hpp>
24#include <glm/vec3.hpp>
123 entt::entity reference)
173 <<
", LAN=" << orb.
LAN <<
", w=" << orb.
w <<
", GM=" << orb.
GM <<
", v=" << orb.
v <<
", M0=" << orb.
M0
198glm::dvec3
ConvertOrbParams(
const double LAN,
const double i,
const double w,
const glm::dvec3& vec);
201 const glm::dvec3& vec);
203glm::dvec3
MatrixConvertOrbParams(
const double LAN,
const double i,
const double w,
const glm::dvec3& vec);
253Orbit Vec3ToOrbit(
const glm::dvec3& position,
const glm::dvec3& velocity,
const double& GM,
const double& time);
268double OrbitVelocity(
const double v,
const double e,
const double a,
const double GM);
283double SolveKeplerElliptic(
const double& mean_anomaly,
const double& ecc,
const int steps = 200);
311double GetMtElliptic(
const double& M0,
const double& nu,
const double& time,
const double& epoch);
320double GetMtHyperbolic(
const double& M0,
const double& nu,
const double& time,
const double& epoch);
360Orbit
ApplyImpulse(
const Orbit& orbit,
const glm::dvec3& impulse,
double time);
407glm::dvec3
InvertOrbitalVector(
const double LAN,
const double i,
const double w,
const double v,
const glm::dvec3& vec);
408double AngleWith(
const Orbit& orbit,
const Orbit& second_orbit);
413glm::dvec3
GetEccentricityVector(
const glm::dvec3& h,
const glm::dvec3& r,
const glm::dvec3& v,
const double GM);
Definition: coordinates.cpp:22
double CalculateTransferTime(const Orbit &orb1, const Orbit &orb2)
Definition: orbit.cpp:371
double OrbitVelocity(const double v, const double e, const double a, const double GM)
Definition: orbit.cpp:177
double SolveKeplerHyperbolic(const double &mean_anomaly, const double &ecc, const int steps)
Computes eccentric anomaly for a hyperbolic or parabolic orbit (e > 1) in radians given mean anomaly ...
Definition: orbit.cpp:219
glm::dvec3 GetEccentricityVector(const glm::dvec3 &h, const glm::dvec3 &r, const glm::dvec3 &v, const double GM)
Definition: orbit.cpp:66
glm::dvec3 OrbitVelocityToVec3(const Orbit &orb, double v)
Definition: orbit.cpp:186
glm::dvec3 OrbitTimeToVec3(const Orbit &orb, const second time)
Definition: orbit.cpp:351
radian TrueAnomalyHyperbolic(const Orbit &orbit, const second &time)
Definition: orbit.cpp:275
double GetHyperbolicAsymptopeAnomaly(double eccentricity)
Definition: orbit.cpp:396
constexpr radian normalize_radian(const radian &radian)
Normalizes a radian to [0, PI*2)
Definition: units.h:70
glm::dvec3 OrbitToVec3(const double &a, const double &e, const radian &i, const radian &LAN, const radian &w, const radian &v)
Converts an orbit to a vec3.
Definition: orbit.cpp:164
glm::dvec3 GetRadialVector(const Orbit &orbit)
Definition: orbit.cpp:478
double GetOrbitingRadius(const double e, const kilometer a, const radian v)
Definition: orbit.cpp:32
radian HyperbolicAnomaly(double v, double e)
Definition: orbit.cpp:288
double AscendingTrueAnomaly(const Orbit &start, const Orbit &dest)
Definition: orbit.cpp:422
Vec3AU toVec3AU(const Orbit &orb, radian theta)
Convert orbit to AU coordinates
Definition: orbit.h:345
double CalculatePhaseAngle(const Orbit &start_orbit, const Orbit &end_orbit, double epoch)
Definition: orbit.cpp:389
double second
Definition: units.h:42
glm::dvec3 CalculateVelocityHyperbolic(const double &E, const double &r, const double &GM, const double &a, const double &e)
Definition: orbit.cpp:321
double EccentricAnomalyToTrueAnomaly(const double &ecc, const double &E)
Calculates true anomaly from eccentricity and eccentric anomaly
Definition: orbit.cpp:239
glm::dvec3 CalculateVelocityElliptic(const double &E, const kilometer &r, const double &GM, const kilometer &a, const double &e)
Definition: orbit.cpp:326
glm::dvec3 GetOrbitNormal(const Orbit &orbit)
Definition: orbit.cpp:402
double TrueAnomalyFromVector(const Orbit &orbit, const glm::dvec3 &vec)
Definition: orbit.cpp:406
glm::dvec3 CalculateVelocity(const double &E, const kilometer &r, const double &GM, const kilometer &a, const double &e)
Definition: orbit.cpp:312
double OrbitVelocityAtR(const double GM, const double a, const double r)
Definition: orbit.cpp:349
double GetEccentricity(double apoapsis, double periapsis)
Definition: orbit.cpp:429
double AngleWith(const Orbit &orbit, const Orbit &second_orbit)
Definition: orbit.cpp:493
radian TrueAnomalyElliptic(const Orbit &orbit, const second &time)
Definition: orbit.cpp:260
std::ostream & operator<<(std::ostream &outs, const Orbit &orb)
Definition: orbit.h:171
glm::dvec3 ConvertOrbParams(const double LAN, const double i, const double w, const glm::dvec3 &vec)
Transforms a vector to the orbital plane vector
Definition: orbit.cpp:48
constexpr double apoapsis
Definition: orbit.h:180
glm::dvec3 MatrixConvertOrbParams(const double LAN, const double i, const double w, const glm::dvec3 &vec)
Definition: orbit.cpp:40
glm::dvec3 Vec3AU
A vector3 where the units are astronomical units
Definition: orbit.h:34
double GetTrueAnomalyToAsymptope(const Orbit &orbit)
Calculates v_inf, the true anomaly for the asymtope for a hyperbolic orbit The orbit is bouded within...
Definition: orbit.cpp:161
glm::vec3 toVec3(const SurfaceCoordinate &coord, const float &radius)
Converts surface coordinate to vector3 in space so that we can get the surface coordinate to render i...
Definition: coordinates.cpp:33
void UpdatePos(Kinematics &kin, const Orbit &orb)
Updates the position of an orbit, in AU.
Definition: orbit.h:388
glm::dvec3 ConvertToOrbitalVector(const double LAN, const double i, const double w, const double v, const glm::dvec3 &vec)
Definition: orbit.cpp:53
void UpdateOrbit(Orbit &orb, const second &time)
Updates the orbit's true anomaly.
Definition: orbit.cpp:293
double radian
Definition: units.h:37
Orbit ApplyImpulse(const Orbit &orbit, const glm::dvec3 &impulse, double time)
Applies impulse based on the vector impulse For some reason y is prograde, I'm not sure what the othe...
Definition: orbit.cpp:334
constexpr double PI
Definition: units.h:45
double GetCircularOrbitingVelocity(const double &GM, const double &radius)
Get the circular orbiting velocity for the radius.
Definition: orbit.cpp:273
double GetMtHyperbolic(const double &M0, const double &nu, const double &time, const double &epoch)
Calculate mean anomaly from time for a hyperbolic object
Definition: orbit.cpp:255
Orbit Vec3ToOrbit(const glm::dvec3 &position, const glm::dvec3 &velocity, const double &GM, const double &time)
Converts position and velocity to orbit. Note: you will have to set the reference body after the orbi...
Definition: orbit.cpp:81
radian EccentricAnomaly(double v, double e)
Calculates Eccentric anomaly
Definition: orbit.cpp:286
constexpr double TWOPI
Definition: units.h:46
glm::dvec3 OrbitTimeToVelocityVec3(const Orbit &orb, const second time)
Definition: orbit.cpp:361
constexpr double SunMu
Definition: units.h:57
double GetTrueAnomaly(const Orbit &orb, const second &epoch)
Get anomaly at epoch
Definition: orbit.cpp:302
double CalculateTransferAngle(const Orbit &start_orbit, const Orbit &end_orbit)
Definition: orbit.cpp:380
double SolveKeplerElliptic(const double &mean_anomaly, const double &ecc, const int steps)
Computes eccentric anomaly for a elliptic or circular orbit (e < 1) in radians given mean anomaly and...
Definition: orbit.cpp:199
constexpr double KmInAu
Definition: units.h:49
glm::dvec3 InvertOrbitalVector(const double LAN, const double i, const double w, const double v, const glm::dvec3 &vec)
Definition: orbit.cpp:486
constexpr double periapsis
Definition: orbit.h:184
double FlightPathAngle(double eccentricity, double v)
Definition: orbit.cpp:398
double AvgOrbitalVelocity(const Orbit &orb)
Definition: orbit.cpp:184
double kilometer
Definition: units.h:34
double HyperbolicAnomalyToTrueAnomaly(const double &ecc, const double &H)
Definition: orbit.cpp:243
double GetMtElliptic(const double &M0, const double &nu, const double &time, const double &epoch)
Gets the Mean anomaly from the time
Definition: orbit.cpp:249
Relative position from the parent orbiting object.
Definition: coordinates.h:30
glm::dvec3 position
Definition: coordinates.h:31
entt::entity reference_body
Definition: orbit.h:105
double epoch
Definition: orbit.h:84
double GetOrbitingRadius() const
Definition: orbit.cpp:431
double GetPeriapsis() const
Definition: orbit.h:160
double TimeToTrueAnomaly(double v2) const
Definition: orbit.cpp:436
Orbit(kilometer semi_major_axis, double eccentricity, radian inclination, radian LAN, radian w, radian M0)
Definition: orbit.h:111
double OrbitalVelocity() const
Definition: orbit.cpp:472
radian LAN
Definition: orbit.h:68
double GM
Gravitational constant of the reference body this is orbiting Graviational constant * mass of orbitin...
Definition: orbit.h:102
kilometer semi_major_axis
Definition: orbit.h:54
radian v
True anomaly v Radians
Definition: orbit.h:93
std::string ToHumanString() const
Definition: orbit.cpp:497
double GetMtElliptic(double time) const
Definition: orbit.h:146
radian w
Definition: orbit.h:75
Orbit(const Orbit &orbit)
Definition: orbit.h:134
double GetApoapsis() const
Definition: orbit.h:158
double OrbitalVelocityAtTrueAnomaly(double true_anomaly) const
Definition: orbit.cpp:474
radian M0
Definition: orbit.h:82
double nu() const
Definition: orbit.h:156
double eccentricity
Definition: orbit.h:47
radian inclination
Definition: orbit.h:61
double T() const
Definition: orbit.h:153
Orbit(kilometer semi_major_axis, double eccentricity, radian inclination, radian LAN, radian w, radian M0, entt::entity reference)
Definition: orbit.h:122
double true_anomaly
Definition: orbit.h:187