VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties 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. 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.

Public Types

typedef std::vector< DtVector > GreatCircleCurve
 

Public Member Functions

 DtGreatCircleCurveGenerator (const DtVector &startGeod)
 
 DtGreatCircleCurveGenerator (const DtGreatCircleCurveGenerator &orig)
 
DtGreatCircleCurveGeneratoroperator= (const DtGreatCircleCurveGenerator &)
 
virtual ~DtGreatCircleCurveGenerator ()
 
virtual void setRadius (double radius)
 
virtual double radius () const
 
virtual const GreatCircleCurvegenerateCurve (const DtVector &endGeod, double heightScale=0., int maxSegments=500., double preferredSegmentSize=1000.)
 
virtual const GreatCircleCurvecurve () const
 
virtual double arcLengthTo (const DtVector &endGeod) const
 
virtual double initialBearingTo (const DtVector &endGeod) const
 
virtual DtVector calcPercentAlongGreatCircle (const DtVector &endGeod, double percentage, double heightScale=0.)
 
virtual double altitudeForPoint (const DtVector &endGeod, double percent, double heightScale) const
 
virtual double radiusAtLatitude (const DtReferenceEllipsoid &ellipsoid, double lat) const
 

Protected Member Functions

virtual void generateMeridionalCurve (const DtVector &endGeod, int numSegments, double heightScale)
 
virtual void generateNonmeridionalCurve (const DtVector &endGeod, int numSegments, double heightScale)
 

Protected Attributes

GreatCircleCurve myCurve
 
DtVector myStartGeod
 
double myRadius
 

Private Member Functions

 DtGreatCircleCurveGenerator ()
 

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 Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)