Browse Source

fix divide by zero

main
cinnaboot 4 years ago
parent
commit
3b26d0a840
  1. 6
      src/orbits.cpp

6
src/orbits.cpp

@ -104,9 +104,13 @@ orbitGetElementsFromStateVectors(glm::dvec3 r, glm::dvec3 v, double mu)
if (ecc_v.z < 0) el.omega = 2 * M_PI - el.omega; // quadrant check
}
// FIXME: el.e == 0 would be undefined here
if (el.e == 0) {
el.nu = 0;
} else {
double cos_theta = glm::dot(r, ecc_v) / (el.e * r_mag);
el.nu= acos(cos_theta);
}
// FIXME: breaks test case
//if (glm::dot(r, v) < 0) el.nu *= -1; //quadrant check
if (glm::dot(r, v) < 0) el.nu = 2 * M_PI - el.nu; //quadrant check

Loading…
Cancel
Save