From 2efcd7fa0c5cd1f8ca38d261def56e3485097d70 Mon Sep 17 00:00:00 2001 From: Daniel Warner Date: Sun, 10 Apr 2011 00:37:42 +0100 Subject: [PATCH] Added variable to limit do/while loop to max 10 iterations --- Eci.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Eci.cpp b/Eci.cpp index e4c2e7b..3e90f0c 100644 --- a/Eci.cpp +++ b/Eci.cpp @@ -65,13 +65,15 @@ CoordGeodetic Eci::ToGeodetic() const { double lat = Globals::AcTan(position_.GetZ(), r); double phi = 0.0; double c = 0.0; + int cnt = 0; do { phi = lat; const double sinphi = sin(phi); c = 1.0 / sqrt(1.0 - e2 * sinphi * sinphi); lat = Globals::AcTan(position_.GetZ() + Globals::XKMPER() * c * e2 * sinphi, r); - } while (fabs(lat - phi) >= 1e-10); + cnt++; + } while (fabs(lat - phi) >= 1e-10 && cnt < 10); const double alt = r / cos(lat) - Globals::XKMPER() * c;