diff --git a/src/orbits.cpp b/src/orbits.cpp index b4da039..c3703b5 100644 --- a/src/orbits.cpp +++ b/src/orbits.cpp @@ -68,9 +68,9 @@ orbitInit(double a, double e, double iota, double ohm, double omega, double nu) glm::dvec3 orbitGetEccentricityVector(glm::dvec3 r, glm::dvec3 v, double mu) { - double v_mag = glm::dot(v, v); - double r_mag = glm::dot(r, r); - return 1 / mu * ((v_mag - mu / r_mag) * r - (glm::dot(r, v) * v)); + double v_mag = orbitGetVectorMagnitude(v); + double r_mag = orbitGetVectorMagnitude(r); + return 1 / mu * ((pow(v_mag, 2) - mu / r_mag) * r - (glm::dot(r, v) * v)); } glm::dvec3 @@ -102,6 +102,13 @@ orbitGetXForm(OrbitalElements elements) 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: // diff --git a/src/orbits.h b/src/orbits.h index 589ad55..fe63ba2 100644 --- a/src/orbits.h +++ b/src/orbits.h @@ -121,6 +121,8 @@ glm::dvec3 orbitGetVelocityVector(double mu, double h, double e, double theta); // in column major format glm::dmat3 orbitGetXForm(OrbitalElements elements); +double orbitGetVectorMagnitude(glm::dvec3 v); + inline double orbitGetAngularMomentum(double p, double mu) {