Browse Source

correct orbitGetEccentricityVector()

also add orbitGetVectorMagnitude(), not tute :P
main
cinnaboot 4 years ago
parent
commit
cae0e5f1d0
  1. 13
      src/orbits.cpp
  2. 2
      src/orbits.h

13
src/orbits.cpp

@ -68,9 +68,9 @@ orbitInit(double a, double e, double iota, double ohm, double omega, double nu)
glm::dvec3 glm::dvec3
orbitGetEccentricityVector(glm::dvec3 r, glm::dvec3 v, double mu) orbitGetEccentricityVector(glm::dvec3 r, glm::dvec3 v, double mu)
{ {
double v_mag = glm::dot(v, v); double v_mag = orbitGetVectorMagnitude(v);
double r_mag = glm::dot(r, r); double r_mag = orbitGetVectorMagnitude(r);
return 1 / mu * ((v_mag - mu / r_mag) * r - (glm::dot(r, v) * v)); return 1 / mu * ((pow(v_mag, 2) - mu / r_mag) * r - (glm::dot(r, v) * v));
} }
glm::dvec3 glm::dvec3
@ -102,6 +102,13 @@ orbitGetXForm(OrbitalElements elements)
return M; return M;
} }
double
orbitGetVectorMagnitude(glm::dvec3 v)
{
return(sqrt(pow(v.x, 2) + pow(v.y, 2) + pow(v.z, 2)));
}
// //
// NOTE: propagate anomaly functions: // NOTE: propagate anomaly functions:
// //

2
src/orbits.h

@ -121,6 +121,8 @@ glm::dvec3 orbitGetVelocityVector(double mu, double h, double e, double theta);
// in column major format // in column major format
glm::dmat3 orbitGetXForm(OrbitalElements elements); glm::dmat3 orbitGetXForm(OrbitalElements elements);
double orbitGetVectorMagnitude(glm::dvec3 v);
inline double inline double
orbitGetAngularMomentum(double p, double mu) orbitGetAngularMomentum(double p, double mu)
{ {

Loading…
Cancel
Save