diff --git a/src/orbits.cpp b/src/orbits.cpp index a6e8e15..123d615 100644 --- a/src/orbits.cpp +++ b/src/orbits.cpp @@ -24,13 +24,16 @@ constructEllipseAE(double a, double e) } bool -validateEllipse(const ellipse_parameters ep) +validateEllipse(const ellipse_parameters& ep) { + // TODO: find out why satellite position gets wonky with orbit + // eccentricity > 0.995 while passing through true anom = 0. + // maybe divide by 0, or some floating point error? return (ep.a > 0 && ep.b > 0 && ep.a >= ep.b && ep.e >= 0 && - ep.e < 1); + ep.e < 0.995); } bool diff --git a/src/orbits.h b/src/orbits.h index eee3503..4012431 100644 --- a/src/orbits.h +++ b/src/orbits.h @@ -27,8 +27,12 @@ struct orbital_elements double mu; // NOTE: (μ) gravitational parameter double nu; // NOTE: (ν) true anomaly + double epsilon; // NOTE: (ε) specific orbital energy, MJ/kg + double h; // NOTE: angular momentum + glm::vec3 pos; // NOTE: true anomaly in 3d with ep.f2 at origin - double radial_velocity; + double vr; // NOTE: radial velocity + double gamma; // NOTE: (γ) flight path angle }; struct ellipse_3d @@ -46,7 +50,7 @@ ellipse_parameters constructEllipseAE(double a, double e); bool -validateEllipse(const ellipse_parameters); +validateEllipse(const ellipse_parameters& ep); bool ellipsesEqual(ellipse_parameters& e1, ellipse_parameters& e2);