VR-Link API Documentation for DIS
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes
DtReferenceEllipsoid Class Reference

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...

+ Collaboration diagram for DtReferenceEllipsoid:

List of all members.

Public Member Functions

 DtReferenceEllipsoid (const DtMapDatum &datum)
virtual ~DtReferenceEllipsoid ()
void useMapDatum (const DtMapDatum &datum)
const DtMapDatummapDatum () 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

Detailed Description

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


Constructor & Destructor Documentation


Member Function Documentation

void DtReferenceEllipsoid::geo_to_rad ( double  deg,
double  min,
double  sec,
double *  radian 
) const [protected]
void DtReferenceEllipsoid::geocentric_to_geodetic ( double  xp,
double  yp,
double  zp,
double *  lat,
double *  lon,
double *  height 
) const [protected]

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:
DtExceptionwhen maximum iterations reached.
void DtReferenceEllipsoid::geocentricToGeodetic ( const DtVector gc,
DtVector gd 
) const
void DtReferenceEllipsoid::geodetic_to_geocentric ( double  lat,
double  lon,
double  height,
double *  x,
double *  y,
double *  z 
) const [protected]
void DtReferenceEllipsoid::geodeticToGeocentric ( const DtVector gd,
DtVector gc 
) const
void DtReferenceEllipsoid::initialize_ellipsoid ( double  a,
double  f 
) [protected]
static unsigned int DtReferenceEllipsoid::maxIterationsForConvergence ( ) [static]

Returns the maximum number of iterations used in geocentric_to_geodetic().

void DtReferenceEllipsoid::rad_to_geo ( double  radian,
double *  deg,
double *  min,
double *  sec 
) const [protected]
static void DtReferenceEllipsoid::setMaxIterationsForConvergence ( unsigned int  maxItr) [static]

sets the maximum number of iterations to preform when converting from geocentric to geodetic.

This is used by the geocentric_to_geodetic() function. The default value is 5000.


Member Data Documentation

double DtReferenceEllipsoid::ellipse_a [protected]

equatorial radius

polar semi-diameter squared

double DtReferenceEllipsoid::ellipse_b [protected]

flattening (a-b)/a

polar semi-diameter

ellipticity 2f-f*f

double DtReferenceEllipsoid::ellipse_e [protected]

a*a/b

double DtReferenceEllipsoid::ellipse_f [protected]

radius squared

unsigned int DtReferenceEllipsoid::theMaxIterationsForConvergence [static, protected]

The documentation for this class was generated from the following file:

Document ID: Generated on Mon May 14 08:06:18 EDT 2012 from SVN revision 114750
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)