Browse Source

workaround for orbit position bug when e > 0.995

main
cinnaboot 5 years ago
parent
commit
b702c004f0
  1. 7
      src/orbits.cpp
  2. 8
      src/orbits.h

7
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

8
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);

Loading…
Cancel
Save