Added variable to limit do/while loop to max 10 iterations

feature/19
Daniel Warner 2011-04-10 00:37:42 +01:00
parent 4d1ef9833a
commit 2efcd7fa0c
1 changed files with 3 additions and 1 deletions

View File

@ -65,13 +65,15 @@ CoordGeodetic Eci::ToGeodetic() const {
double lat = Globals::AcTan(position_.GetZ(), r); double lat = Globals::AcTan(position_.GetZ(), r);
double phi = 0.0; double phi = 0.0;
double c = 0.0; double c = 0.0;
int cnt = 0;
do { do {
phi = lat; phi = lat;
const double sinphi = sin(phi); const double sinphi = sin(phi);
c = 1.0 / sqrt(1.0 - e2 * sinphi * sinphi); c = 1.0 / sqrt(1.0 - e2 * sinphi * sinphi);
lat = Globals::AcTan(position_.GetZ() + Globals::XKMPER() * c * e2 * sinphi, r); 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; const double alt = r / cos(lat) - Globals::XKMPER() * c;