Changed longitude to -180 to 180

feature/19
Daniel Warner 2011-04-10 00:29:46 +01:00
parent 4dd21b9060
commit 4d1ef9833a
1 changed files with 7 additions and 8 deletions

15
Eci.cpp
View File

@ -54,9 +54,13 @@ Eci::~Eci(void) {
CoordGeodetic Eci::ToGeodetic() const { CoordGeodetic Eci::ToGeodetic() const {
const double theta = Globals::AcTan(position_.GetY(), position_.GetX()); const double theta = Globals::AcTan(position_.GetY(), position_.GetX());
const double lon = Globals::Fmod2p(theta - date_.ToGreenwichSiderealTime()); /*
* changes lon to 0>= and <360
* const double lon = Globals::Fmod2p(theta - date_.ToGreenwichSiderealTime());
*/
const double lon = fmod(theta - date_.ToGreenwichSiderealTime(), Globals::TWOPI());
const double r = sqrt((position_.GetX() * position_.GetX()) + (position_.GetY() * position_.GetY())); const double r = sqrt((position_.GetX() * position_.GetX()) + (position_.GetY() * position_.GetY()));
const double e2 = Globals::F() * (2.0 - Globals::F()); static const double e2 = Globals::F() * (2.0 - Globals::F());
double lat = Globals::AcTan(position_.GetZ(), r); double lat = Globals::AcTan(position_.GetZ(), r);
double phi = 0.0; double phi = 0.0;
@ -65,16 +69,11 @@ CoordGeodetic Eci::ToGeodetic() const {
do { do {
phi = lat; phi = lat;
const double sinphi = sin(phi); const double sinphi = sin(phi);
c = 1 / sqrt(1 - 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); } while (fabs(lat - phi) >= 1e-10);
const double alt = r / cos(lat) - Globals::XKMPER() * c; const double alt = r / cos(lat) - Globals::XKMPER() * c;
/*
* todo: check
*/
//if (lat > pio2) geodetic->lat -= twopi;
return CoordGeodetic(lat, lon, alt); return CoordGeodetic(lat, lon, alt);
} }