diff --git a/src/orbits.cpp b/src/orbits.cpp index 152384a..feb7401 100644 --- a/src/orbits.cpp +++ b/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 - double cos_theta = glm::dot(r, ecc_v) / (el.e * r_mag); - el.nu= acos(cos_theta); + 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