VR-Link API Documentation for HLA 1516
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members | 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:

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().
static void setThrowExceptionOnConversionFrom0Geocentric (bool enable)
 Call to cause an exception to be thrown when an attempt is made to convert a 0,0,0 geocentric coordinate to geodetic.
static void setNotifyConversionFrom0Geocentric (bool enable)
 Set the notification that a 0,0,0 coordinate was called.

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
static bool theThrowExceptionOnConversionFrom0Geocentric
static bool theNotifyOnConversionFrom0Geocentric

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

DtReferenceEllipsoid::DtReferenceEllipsoid ( const DtMapDatum datum)
virtual DtReferenceEllipsoid::~DtReferenceEllipsoid ( )
virtual

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
const DtMapDatum& DtReferenceEllipsoid::mapDatum ( ) const
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.

static void DtReferenceEllipsoid::setNotifyConversionFrom0Geocentric ( bool  enable)
static

Set the notification that a 0,0,0 coordinate was called.

By default, it is on. This should not be disabled unless you know what you are doing.

static void DtReferenceEllipsoid::setThrowExceptionOnConversionFrom0Geocentric ( bool  enable)
static

Call to cause an exception to be thrown when an attempt is made to convert a 0,0,0 geocentric coordinate to geodetic.

Should only be enabled to debug the source of such errors.

void DtReferenceEllipsoid::useMapDatum ( const DtMapDatum datum)

Member Data Documentation

double DtReferenceEllipsoid::ellipse_a
protected
double DtReferenceEllipsoid::ellipse_a_sq
protected

equatorial radius

double DtReferenceEllipsoid::ellipse_a_sq_over_b
protected

polar semi-diameter squared

double DtReferenceEllipsoid::ellipse_b
protected

flattening (a-b)/a

double DtReferenceEllipsoid::ellipse_b_sq
protected

polar semi-diameter

double DtReferenceEllipsoid::ellipse_c1
protected

ellipticity 2f-f*f

double DtReferenceEllipsoid::ellipse_e
protected

a*a/b

double DtReferenceEllipsoid::ellipse_f
protected

radius squared

int DtReferenceEllipsoid::myInited
protected
DtMapDatum DtReferenceEllipsoid::myMapDatum
protected
unsigned int DtReferenceEllipsoid::theMaxIterationsForConvergence
staticprotected
bool DtReferenceEllipsoid::theNotifyOnConversionFrom0Geocentric
staticprotected
bool DtReferenceEllipsoid::theThrowExceptionOnConversionFrom0Geocentric
staticprotected

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

Document ID: Generated on Thu Feb 22 04:26:36 EST 2018 from SVN revision 186468
Copyright © 2005-2016 VT MÄK. All Rights Reserved (www.mak.com)