VR-Forces 4.3.1 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions
makVrv::DtGreatCircleCurveGenerator Class Reference

DtGreatCircleCurveGenerator generates a set of geodetic points that follow a great circle at a radius based on the earth equatorial radius PLUS the average altitude of the start and end points. More...

Public Types

typedef std::vector< DtVectorGreatCircleCurve
 A set of geodetic points describing a great circle curve; the DtVector represents latitude, longitude (both in radians), and altitude (in meters)

Public Member Functions

 DtGreatCircleCurveGenerator (const DtVector &startGeod)
 Standard constructor; provides the start of the great circle arc (in radians and meters)
 DtGreatCircleCurveGenerator (const DtGreatCircleCurveGenerator &orig)
 Copy Constructor.
DtGreatCircleCurveGeneratoroperator= (const DtGreatCircleCurveGenerator &)
 Assignment Operator.
virtual ~DtGreatCircleCurveGenerator ()
 Virtual destructor.
virtual void setRadius (double radius)
 Set the radius (in meters) used for all spherical calculations; by default, the equatorial radius 6378137.
virtual double radius () const
 Get the radius used for all spherical calculations.
virtual const GreatCircleCurvegenerateCurve (const DtVector &endGeod, double heightScale=0., int maxSegments=500., double preferredSegmentSize=1000.)
 Generate a set of geodetic points for a great circle curve.
virtual const GreatCircleCurvecurve () const
 Get the most recently generated great circle curve.
virtual double arcLengthTo (const DtVector &endGeod) const
 Get the arcLength between startGeod and endGeod, at the altitude of the average of the two points' heights.
virtual double initialBearingTo (const DtVector &endGeod) const
 Get the initial bearing from the start to the destination.
virtual DtVector calcPercentAlongGreatCircle (const DtVector &endGeod, double percentage, double heightScale=0.)
 Calculate the geodetic point on a great circle arc from our starting point a percentage along the way to the destination point.
virtual double altitudeForPoint (const DtVector &endGeod, double percent, double heightScale) const
 Find the altitude of a given point based on linear interpolation from the starting altitude to the ending altitude.
virtual double radiusAtLatitude (const DtReferenceEllipsoid &ellipsoid, double lat) const
 Returns the earth radius at the specified latitude (radians) for the ellipsoid currently in use.

Protected Member Functions

virtual void generateMeridionalCurve (const DtVector &endGeod, int numSegments, double heightScale)
 Generate a curve for the special case where the entire curve lies along a meridian.
virtual void generateNonmeridionalCurve (const DtVector &endGeod, int numSegments, double heightScale)
 Generate the curve for the normal (non-meridional) case.

Protected Attributes

GreatCircleCurve myCurve
DtVector myStartGeod
double myRadius

Private Member Functions

 DtGreatCircleCurveGenerator ()
 Default, unimplemented constructor.

Detailed Description

DtGreatCircleCurveGenerator generates a set of geodetic points that follow a great circle at a radius based on the earth equatorial radius PLUS the average altitude of the start and end points.

This curve will then beappropriate even for objects well above the earth's surface. Optionally, the curve will be given a parabolic exaggeration based on a scale factor and the curve's arc length.

Member Typedef Documentation

A set of geodetic points describing a great circle curve; the DtVector represents latitude, longitude (both in radians), and altitude (in meters)

Constructor & Destructor Documentation

makVrv::DtGreatCircleCurveGenerator::DtGreatCircleCurveGenerator ( const DtVector startGeod)

Standard constructor; provides the start of the great circle arc (in radians and meters)

makVrv::DtGreatCircleCurveGenerator::DtGreatCircleCurveGenerator ( const DtGreatCircleCurveGenerator orig)

Copy Constructor.

virtual makVrv::DtGreatCircleCurveGenerator::~DtGreatCircleCurveGenerator ( )
virtual

Virtual destructor.

makVrv::DtGreatCircleCurveGenerator::DtGreatCircleCurveGenerator ( )
private

Default, unimplemented constructor.

Member Function Documentation

DtGreatCircleCurveGenerator& makVrv::DtGreatCircleCurveGenerator::operator= ( const DtGreatCircleCurveGenerator )

Assignment Operator.

virtual void makVrv::DtGreatCircleCurveGenerator::setRadius ( double  radius)
virtual

Set the radius (in meters) used for all spherical calculations; by default, the equatorial radius 6378137.

is used.

virtual double makVrv::DtGreatCircleCurveGenerator::radius ( ) const
virtual

Get the radius used for all spherical calculations.

virtual const GreatCircleCurve& makVrv::DtGreatCircleCurveGenerator::generateCurve ( const DtVector endGeod,
double  heightScale = 0.,
int  maxSegments = 500.,
double  preferredSegmentSize = 1000. 
)
virtual

Generate a set of geodetic points for a great circle curve.

virtual const GreatCircleCurve& makVrv::DtGreatCircleCurveGenerator::curve ( ) const
virtual

Get the most recently generated great circle curve.

virtual double makVrv::DtGreatCircleCurveGenerator::arcLengthTo ( const DtVector endGeod) const
virtual

Get the arcLength between startGeod and endGeod, at the altitude of the average of the two points' heights.

virtual double makVrv::DtGreatCircleCurveGenerator::initialBearingTo ( const DtVector endGeod) const
virtual

Get the initial bearing from the start to the destination.

virtual DtVector makVrv::DtGreatCircleCurveGenerator::calcPercentAlongGreatCircle ( const DtVector endGeod,
double  percentage,
double  heightScale = 0. 
)
virtual

Calculate the geodetic point on a great circle arc from our starting point a percentage along the way to the destination point.

Optionally scale the elevation.

virtual double makVrv::DtGreatCircleCurveGenerator::altitudeForPoint ( const DtVector endGeod,
double  percent,
double  heightScale 
) const
virtual

Find the altitude of a given point based on linear interpolation from the starting altitude to the ending altitude.

Then add a parabolic exaggeration, where the exaggerated height, calculated as the arc's length * the heightScale, is the apex of the parabola above the unexaggerated curve

virtual double makVrv::DtGreatCircleCurveGenerator::radiusAtLatitude ( const DtReferenceEllipsoid &  ellipsoid,
double  lat 
) const
virtual

Returns the earth radius at the specified latitude (radians) for the ellipsoid currently in use.

virtual void makVrv::DtGreatCircleCurveGenerator::generateMeridionalCurve ( const DtVector endGeod,
int  numSegments,
double  heightScale 
)
protectedvirtual

Generate a curve for the special case where the entire curve lies along a meridian.

virtual void makVrv::DtGreatCircleCurveGenerator::generateNonmeridionalCurve ( const DtVector endGeod,
int  numSegments,
double  heightScale 
)
protectedvirtual

Generate the curve for the normal (non-meridional) case.

Member Data Documentation

GreatCircleCurve makVrv::DtGreatCircleCurveGenerator::myCurve
protected
DtVector makVrv::DtGreatCircleCurveGenerator::myStartGeod
protected
double makVrv::DtGreatCircleCurveGenerator::myRadius
protected

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

Document ID: Generated on Wed Jul 29 00:55:00 EDT 2015 from SVN revision 155257
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)