Added variable to limit do/while loop to max 10 iterations
parent
4d1ef9833a
commit
2efcd7fa0c
4
Eci.cpp
4
Eci.cpp
|
@ -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;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue