Instances of this class are used to store a particular mapDatum and perform useful calculations based on this map -- specifically it can be used to convert between geodetic and geocentric coordinates using the given reference ellipsoid (which is defined by a DtMapDatum).
More...
Public Member Functions |
| | DtReferenceEllipsoid (const DtMapDatum &datum) |
| virtual | ~DtReferenceEllipsoid () |
| void | useMapDatum (const DtMapDatum &datum) |
| const DtMapDatum & | mapDatum () const |
| void | geocentricToGeodetic (const DtVector &gc, DtVector &gd) const |
| void | geodeticToGeocentric (const DtVector &gd, DtVector &gc) const |
Static Public Member Functions |
| static void | setMaxIterationsForConvergence (unsigned int maxItr) |
| | sets the maximum number of iterations to preform when converting from geocentric to geodetic.
|
| static unsigned int | maxIterationsForConvergence () |
| | Returns the maximum number of iterations used in geocentric_to_geodetic().
|
Protected Member Functions |
| void | initialize_ellipsoid (double a, double f) |
| void | geo_to_rad (double deg, double min, double sec, double *radian) const |
| void | rad_to_geo (double radian, double *deg, double *min, double *sec) const |
| void | geodetic_to_geocentric (double lat, double lon, double height, double *x, double *y, double *z) const |
| void | geocentric_to_geodetic (double xp, double yp, double zp, double *lat, double *lon, double *height) const |
| | Performs the transformation between geocentric and geodetic coordinate systems.
|
Protected Attributes |
| DtMapDatum | myMapDatum |
| int | myInited |
| double | ellipse_a |
| double | ellipse_a_sq |
| | equatorial radius
|
| double | ellipse_f |
| | radius squared
|
| double | ellipse_b |
| | flattening (a-b)/a
|
| double | ellipse_b_sq |
| | polar semi-diameter
|
| double | ellipse_a_sq_over_b |
| | polar semi-diameter squared
|
| double | ellipse_e |
| | a*a/b
|
| double | ellipse_c1 |
| | ellipticity 2f-f*f
|
Static Protected Attributes |
| static unsigned int | theMaxIterationsForConvergence |
Instances of this class are used to store a particular mapDatum and perform useful calculations based on this map -- specifically it can be used to convert between geodetic and geocentric coordinates using the given reference ellipsoid (which is defined by a DtMapDatum).
By default, VR-Link creates a global ellipsoid object that is used for geodetic coordinates conversions. However, users can choose to define and maintain their own ellipsoids and then can explicitly pass the ellipsoid to a geodetic coordinate.
Conversions between geocentric and geodetic coordinates depend on the particular MapDatum used. The default is DtWGS84, but you can set the current global MapDatum using DtUseMapDatum . See mapDatum.h for more details
Performs the transformation between geocentric and geodetic coordinate systems.
This routine receives geocentric coordinates (X, Y, Z) in meters and converts it into geodetic coordinates given in latitude, longitude, and height. This algorithm uses Newton- Raphson's convergence algorithm, and will stop iteration at values less than 50 cm. Will also stop iteration when maxIteractionsForConvergence is reached.
- Exceptions:
-