|
|
|
@ -16,6 +16,7 @@ systemInit(grav_body gb, orbital_elements el) |
|
|
|
s.e3d = ellipseInit3D(s.ep, ELLIPSE_VERT_COUNT); |
|
|
|
s.e3d = ellipseInit3D(s.ep, ELLIPSE_VERT_COUNT); |
|
|
|
s.epsilon = orbitGetSpecificEnergy(s.ep.a, gb.mu); |
|
|
|
s.epsilon = orbitGetSpecificEnergy(s.ep.a, gb.mu); |
|
|
|
s.h = orbitGetAngularMomentum(s.ep.p, gb.mu); |
|
|
|
s.h = orbitGetAngularMomentum(s.ep.p, gb.mu); |
|
|
|
|
|
|
|
s.orbital_period = orbitGetPeriod(s.ep.a, gb.mu); |
|
|
|
s.r_apoapsis = s.ep.a - s.ep.c; |
|
|
|
s.r_apoapsis = s.ep.a - s.ep.c; |
|
|
|
s.r_periapsis = 2 * s.ep.a - s.r_apoapsis; |
|
|
|
s.r_periapsis = 2 * s.ep.a - s.r_apoapsis; |
|
|
|
s.time_step = DEFAULT_TIME_STEP; |
|
|
|
s.time_step = DEFAULT_TIME_STEP; |
|
|
|
@ -129,6 +130,12 @@ orbitGetFlightPathAngle(double e, double true_anom) |
|
|
|
return atan(e * sin(true_anom) / (1 + e * cos(true_anom))); |
|
|
|
return atan(e * sin(true_anom) / (1 + e * cos(true_anom))); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
double |
|
|
|
|
|
|
|
orbitGetPeriod(double a, double mu) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return 2 * M_PI / sqrt(mu) * sqrt(pow(a, 3)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
glm::vec2 |
|
|
|
glm::vec2 |
|
|
|
polarToRect(double angle, double r) |
|
|
|
polarToRect(double angle, double r) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|