26 theEllipsoid(anEllipsoid),
30 theWestLongitude(westLongitude),
31 theEastLongitude(eastLongitude),
32 theSouthLatitude(southLatitude),
33 theNorthLatitude(northLatitude)
99 tLon_in = Lon_in - (2*
M_PI);
105 sin_Lat = sin(Lat_in);
106 cos_Lat = cos(Lat_in);
107 sin_Lon = sin(tLon_in);
108 cos_Lon = cos(tLon_in);
109 sin2_Lat = sin_Lat * sin_Lat;
110 w2 = 1.0 - e2 * sin2_Lat;
113 m = (a * (1.0 - e2)) / w3;
115 dp1 = cos_Lat * dz - sin_Lat * cos_Lon * dx - sin_Lat * sin_Lon * dy;
116 dp2 = ((e2 * sin_Lat * cos_Lat) / w) * da;
117 dp3 = sin_Lat * cos_Lat * (2.0 *
n + ep2 * m * sin2_Lat) * (1.0 - f) * df;
118 dp = (dp1 + dp2 + dp3) / (m + Hgt_in);
119 dl = (-sin_Lon * dx + cos_Lon * dy) / ((
n + Hgt_in) * cos_Lat);
120 dh1 = (cos_Lat * cos_Lon * dx) + (cos_Lat * sin_Lon * dy) + (sin_Lat * dz);
121 dh2 = -(w * da) + ((a * (1 - f)) / w) * sin2_Lat * df;
124 Lat_out = Lat_in + dp;
125 Lon_out = Lon_in + dl;
126 Hgt_out = Hgt_in + dh;
128 if (Lon_out > (
M_PI * 2))
130 if (Lon_out < (-
M_PI))
ossim_float64 theWestLongitude
virtual bool isEqualTo(const ossimObject &obj, ossimCompareType compareType=OSSIM_COMPARE_FULL) const
const ossimEllipsoid * theEllipsoid
ossim_float64 theEastLongitude
ossim_float64 theSouthLatitude
bool almostEqual(T x, T y, T tolerance=FLT_EPSILON)
virtual bool isEqualTo(const ossimObject &obj, ossimCompareType compareType=OSSIM_COMPARE_FULL) const
bool contains(char aChar) const
virtual bool isEqualTo(const ossimEllipsoid &rhs, ossimCompareType compareType=OSSIM_COMPARE_FULL) const
os2<< "> n<< " > nendobj n
ossimDatum(const ossimString &alpha_code, const ossimString &name, const ossimEllipsoid *anEllipsoid, ossim_float64 sigmaX, ossim_float64 sigmaY, ossim_float64 sigmaZ, ossim_float64 westLongitude, ossim_float64 eastLongitude, ossim_float64 southLatitude, ossim_float64 northLatitude)
ossim_float64 theNorthLatitude
static ossimEpsgDatumFactory * instance()
Singleton implementation.
bool operator==(const ossimDatum &rhs) const
RTTI_DEF1(ossimDatum, "ossimDatum", ossimObject)
virtual void molodenskyShift(double a, double da, double f, double df, double dx, double dy, double dz, double Lat_in, double Lon_in, double Hgt_in, double &Lat_out, double &Lon_out, double &Hgt_out) const
ossim_uint32 findEpsgCode(const ossimString &alpha_code) const
Specific to this factory only.
bool isnan(const float &v)
isnan Test for floating point Not A Number (NAN) value.