VR-Forces 5.0.2 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 | Static Public Member Functions | Protected Attributes
makVrv::DtCoordinateDisplay Class Referenceabstract

Abstract interface class for all coordinate system displays.

Inheritance diagram for makVrv::DtCoordinateDisplay:
Inheritance graph
[legend]

Public Types

typedef
makArchives::DtDisplayUnitsSettingsRecord::CoordSys 
CoordSys
 
typedef
makArchives::DtDisplayUnitsSettingsRecord::DistanceUnits 
DistanceUnits
 
typedef
makArchives::DtDisplayUnitsSettingsRecord::VelocityUnits 
VelocityUnits
 
typedef
makArchives::DtDisplayUnitsSettingsRecord::AccelerationUnits 
AccelerationUnits
 
typedef
makArchives::DtDisplayUnitsSettingsRecord::OrientationUnits 
OrientationUnits
 
typedef
makArchives::DtDisplayUnitsSettingsRecord::RotVelocityUnits 
RotVelocityUnits
 
typedef std::list< DistanceUnitsSupportedPositionDistanceUnits
 
typedef std::list
< OrientationUnits
SupportedPositionAngularUnits
 
typedef std::list< std::string > SupportedCSForGridLines
 

Public Member Functions

 DtCoordinateDisplay (const DtCoordinateSystem &coordSys)
 
virtual ~DtCoordinateDisplay ()
 
virtual DtCoordinateDisplayclone () const =0
 
virtual DtUnicode name () const =0
 
virtual DtUnicode gridBoxLabel (const DtVector &lowerLeftGeocPos, const DtVector &upperRightGeocPos)
 
virtual DtUnicode northSouthGridLabel (DistanceUnits unit, const DtVector &geocPos, int decimals, double gridSpacing, bool minimal=false)
 
virtual DtUnicode northSouthGridLabel (OrientationUnits unit, const DtVector &geocPos, int decimals, double gridSpacing, bool minimal=false)
 
virtual DtUnicode eastWestGridLabel (DistanceUnits unit, const DtVector &geocPos, int decimals, double gridSpacing, bool minimal=false)
 
virtual DtUnicode eastWestGridLabel (OrientationUnits unit, const DtVector &geocPos, int decimals, double gridSpacing, bool minimal=false)
 
virtual bool clipXToGrid (double inStartX, double inEndX, double constantY, double &clippedStartX, double &clippedEndX)
 
virtual bool clipYToGrid (double inStartY, double inEndY, double constantX, double &clippedStartY, double &clippedEndY)
 
virtual void shiftGridLineAnchors (double xSpacing, double ySpacing, double &shiftX, double &shifY)
 
virtual bool usesDecimalsOnGridLines () const
 
virtual double maxGridSpacing () const
 
virtual double minGridSpacing () const
 
virtual DistanceUnits xUnitsFor (DistanceUnits unit) const =0
 
virtual DistanceUnits yUnitsFor (DistanceUnits unit) const =0
 
virtual DistanceUnits zUnitsFor (DistanceUnits unit) const =0
 
virtual DtUnicode xAxisLabel () const =0
 
virtual DtUnicode yAxisLabel () const =0
 
virtual DtUnicode zAxisLabel () const =0
 
virtual std::vector< std::string > convertPositionToStringList (DistanceUnits unit, const DtVector &geocPos, int decimals) const =0
 
virtual std::vector< DtUnicodeconvertPositionToNotatedStringList (DistanceUnits unit, DtUnicode unitNotation, const DtVector &geocPos, int decimals, bool minimal=false) const =0
 
virtual void convertToGeocentric (const std::string &x, const std::string &y, const std::string &z, DistanceUnits distUnits, DistanceUnits altUnits, DtVector &vector)=0
 
virtual DtVector convertFromGeocentric (const DtVector &vector) const =0
 
virtual DtTaitBryan headingPitchRollFor (const DtVector &geocPos, const DtTaitBryan &geocOri) const =0
 
virtual DtTaitBryan localOrientationFor (const DtVector &location, const DtTaitBryan &geocOri) const =0
 
virtual void regularExpressionValidator (std::string &x, std::string &y, std::string &z)=0
 
virtual DtTaitBryan topoOrientationFor (const DtVector &geocPos, const DtTaitBryan &geocOri) const
 
virtual DtVector geocToLocalVector (const DtVector &geocLoc, const DtVector &geocVec) const
 
const
SupportedPositionDistanceUnits
supportedPositionDistanceUnits () const
 
bool isSupportedPositionUnit (DistanceUnits unit) const
 
void addSupportedPositionUnit (DistanceUnits unitToSupport)
 
void removeSupportedPositionUnit (DistanceUnits unitToRemove)
 
const
SupportedPositionAngularUnits
supportedPositionAngularUnits () const
 
bool isSupportedPositionUnit (OrientationUnits unit) const
 
void addSupportedPositionUnit (OrientationUnits unitToSupport)
 
void removeSupportedPositionUnit (OrientationUnits unitToRemove)
 
const SupportedCSForGridLinessupportedCSForGridLines () const
 
bool isSupportedCSForGridLines (const std::string &cs) const
 
void addSupportedCSForGridLines (const std::string &cs)
 
void removeSupportedCSForGridLines (const std::string &cs)
 

Static Public Member Functions

static std::string removeNegativeZeroIfNeeded (const char *ptr)
 
static std::string cleanupNumericalString (const char *buffer, int decimals)
 

Protected Attributes

const DtCoordinateSystemmyCoordinateSystem
 
SupportedPositionDistanceUnits mySupportedPositionDistanceUnits
 
SupportedPositionAngularUnits mySupportedPositionAngularUnits
 
SupportedCSForGridLines mySupportedCSForGridLines
 

Member Typedef Documentation

Constructor & Destructor Documentation

makVrv::DtCoordinateDisplay::DtCoordinateDisplay ( const DtCoordinateSystem coordSys)

CTOR DtUnitConverterCollection is a collection of classes used to convert between different units (meters, feet, miles, etc.) DtCoordinateSystem is used to do coordinate system conversions, when possible.

virtual makVrv::DtCoordinateDisplay::~DtCoordinateDisplay ( )
virtual

DTOR.

Member Function Documentation

virtual DtCoordinateDisplay* makVrv::DtCoordinateDisplay::clone ( ) const
pure virtual
virtual DtUnicode makVrv::DtCoordinateDisplay::name ( ) const
pure virtual
virtual DtUnicode makVrv::DtCoordinateDisplay::gridBoxLabel ( const DtVector lowerLeftGeocPos,
const DtVector upperRightGeocPos 
)
virtual

Some systems (such as MGRS) are not just positions but boxes with grid designators. This function should return "" if a system has no grid boxes, otherwise return a label suitable for the lower left-hand corner of that box.

Reimplemented in makVrv::DtMgrsCoordinateDisplay, and makVrv::DtUtmCoordinateDisplay.

virtual DtUnicode makVrv::DtCoordinateDisplay::northSouthGridLabel ( DistanceUnits  unit,
const DtVector geocPos,
int  decimals,
double  gridSpacing,
bool  minimal = false 
)
virtual

Get a north / south label with linear units.

Parameters
unitThe linear distance unit being used
geocPosThe geocentric position to get a gridline label for
decimalsThe number of decimals places to include in gridline label
gridSpacingA spacing parameter for gridlines
minimalReturn a 'minimal' version of the grid label - behavior defined by the child class

Reimplemented in makVrv::DtMgrsCoordinateDisplay, makVrv::DtUtmCoordinateDisplay, makVrv::DtDatabaseCoordinateDisplay, makVrv::DtGeocentricCoordinateDisplay, and SngCoordinateDisplay.

virtual DtUnicode makVrv::DtCoordinateDisplay::northSouthGridLabel ( OrientationUnits  unit,
const DtVector geocPos,
int  decimals,
double  gridSpacing,
bool  minimal = false 
)
virtual

Get a north / south label with angular units.

Parameters
unitThe angular orientation unit being used
geocPosThe geocentric position to get a gridline label for
decimalsThe number of decimals places to include in gridline label
gridSpacingA spacing parameter for gridlines
minimalReturn a 'minimal' version of the grid label - behavior defined by the child class

Reimplemented in makVrv::DtGeodeticDmsCoordinateDisplay, makVrv::DtGeodeticDdmCoordinateDisplay, and makVrv::DtGeodeticDecCoordinateDisplay.

virtual DtUnicode makVrv::DtCoordinateDisplay::eastWestGridLabel ( DistanceUnits  unit,
const DtVector geocPos,
int  decimals,
double  gridSpacing,
bool  minimal = false 
)
virtual

Get an east / west label with linear units.

Parameters
unitThe linear distance unit being used
geocPosThe geocentric position to get a gridline label for
decimalsThe number of decimals places to include in gridline label
gridSpacingA spacing parameter for gridlines
minimalReturn a 'minimal' version of the grid label - behavior defined by the child class

Reimplemented in makVrv::DtMgrsCoordinateDisplay, makVrv::DtUtmCoordinateDisplay, makVrv::DtDatabaseCoordinateDisplay, makVrv::DtGeocentricCoordinateDisplay, and SngCoordinateDisplay.

virtual DtUnicode makVrv::DtCoordinateDisplay::eastWestGridLabel ( OrientationUnits  unit,
const DtVector geocPos,
int  decimals,
double  gridSpacing,
bool  minimal = false 
)
virtual

Get an east / west label with angular units.

Parameters
unitThe angular orientation unit being used
geocPosThe geocentric position to get a gridline label for
decimalsThe number of decimals places to include in gridline label
gridSpacingA spacing parameter for gridlines
minimalReturn a 'minimal' version of the grid label - behavior defined by the child class

Reimplemented in makVrv::DtGeodeticDmsCoordinateDisplay, makVrv::DtGeodeticDdmCoordinateDisplay, and makVrv::DtGeodeticDecCoordinateDisplay.

virtual bool makVrv::DtCoordinateDisplay::clipXToGrid ( double  inStartX,
double  inEndX,
double  constantY,
double clippedStartX,
double clippedEndX 
)
virtual

Clip a line segment in LOCAL coordinates to an existing grid defined by this coord system, if any. Returns false if entire segment is outside grid.

Reimplemented in makVrv::DtMgrsCoordinateDisplay.

virtual bool makVrv::DtCoordinateDisplay::clipYToGrid ( double  inStartY,
double  inEndY,
double  constantX,
double clippedStartY,
double clippedEndY 
)
virtual

Returns false if entire segment is outside grid.

Reimplemented in makVrv::DtMgrsCoordinateDisplay.

virtual void makVrv::DtCoordinateDisplay::shiftGridLineAnchors ( double  xSpacing,
double  ySpacing,
double shiftX,
double shifY 
)
virtual

Normally, grid lines are started at database 0,0. This allows a shift to start them somewhere else (like a UTM zone origin)

Reimplemented in makVrv::DtGeodeticDmsCoordinateDisplay, and makVrv::DtUtmCoordinateDisplay.

virtual bool makVrv::DtCoordinateDisplay::usesDecimalsOnGridLines ( ) const
virtual

Enable/disable the decimals spinbox on grid settings dialog.

Reimplemented in makVrv::DtUtmCoordinateDisplay.

virtual double makVrv::DtCoordinateDisplay::maxGridSpacing ( ) const
virtual

Maximum grid spacing allowed. 0. returned if unlimited.

Reimplemented in makVrv::DtMgrsCoordinateDisplay.

virtual double makVrv::DtCoordinateDisplay::minGridSpacing ( ) const
virtual

Minimum grid spacing allowed. 0. returned if unlimited.

Reimplemented in makVrv::DtMgrsCoordinateDisplay.

virtual DistanceUnits makVrv::DtCoordinateDisplay::xUnitsFor ( DistanceUnits  unit) const
pure virtual
virtual DistanceUnits makVrv::DtCoordinateDisplay::yUnitsFor ( DistanceUnits  unit) const
pure virtual
virtual DistanceUnits makVrv::DtCoordinateDisplay::zUnitsFor ( DistanceUnits  unit) const
pure virtual
virtual DtUnicode makVrv::DtCoordinateDisplay::xAxisLabel ( ) const
pure virtual
virtual DtUnicode makVrv::DtCoordinateDisplay::yAxisLabel ( ) const
pure virtual
virtual DtUnicode makVrv::DtCoordinateDisplay::zAxisLabel ( ) const
pure virtual
virtual std::vector<std::string> makVrv::DtCoordinateDisplay::convertPositionToStringList ( DistanceUnits  unit,
const DtVector geocPos,
int  decimals 
) const
pure virtual

Takes the x, y, z values that comes in and creates a string array of three strings that represent the values. This call assumes the values being passed in are in geocentric values.

Implemented in makVrv::DtMgrsCoordinateDisplay, makVrv::DtGeodeticDmsCoordinateDisplay, makVrv::DtUtmCoordinateDisplay, makVrv::DtGeodeticDdmCoordinateDisplay, makVrv::DtDatabaseCoordinateDisplay, SngCoordinateDisplay, makVrv::DtGeocentricCoordinateDisplay, and makVrv::DtGeodeticDecCoordinateDisplay.

virtual std::vector<DtUnicode> makVrv::DtCoordinateDisplay::convertPositionToNotatedStringList ( DistanceUnits  unit,
DtUnicode  unitNotation,
const DtVector geocPos,
int  decimals,
bool  minimal = false 
) const
pure virtual

Convert the geocentric position to a vector of notated strings.

Parameters
unitThe distance unit of the values passed in
unitNotationThe notation that corresponds to the distance unit
geocPosThe geocentric position to convert
decimalsThe number of decimal places to include
minimalReturn a 'minimal' version of the grid label - behavior defined by the child class

Implemented in makVrv::DtMgrsCoordinateDisplay, makVrv::DtGeodeticDmsCoordinateDisplay, makVrv::DtUtmCoordinateDisplay, makVrv::DtGeodeticDdmCoordinateDisplay, makVrv::DtDatabaseCoordinateDisplay, makVrv::DtGeocentricCoordinateDisplay, SngCoordinateDisplay, and makVrv::DtGeodeticDecCoordinateDisplay.

virtual void makVrv::DtCoordinateDisplay::convertToGeocentric ( const std::string &  x,
const std::string &  y,
const std::string &  z,
DistanceUnits  distUnits,
DistanceUnits  altUnits,
DtVector vector 
)
pure virtual

Converts the given coordinates (in string rep) from the base units to geocentric. Note that the coordinates must be in the units of this collection.

Implemented in makVrv::DtGeodeticDmsCoordinateDisplay, makVrv::DtMgrsCoordinateDisplay, makVrv::DtUtmCoordinateDisplay, makVrv::DtDatabaseCoordinateDisplay, makVrv::DtGeocentricCoordinateDisplay, SngCoordinateDisplay, and makVrv::DtGeodeticDecCoordinateDisplay.

virtual DtVector makVrv::DtCoordinateDisplay::convertFromGeocentric ( const DtVector vector) const
pure virtual

Converts the vector from geocentric to local. Assumes the vector is in geocentric coordinates.

Implemented in makVrv::DtGeodeticDmsCoordinateDisplay, makVrv::DtUtmCoordinateDisplay, SngCoordinateDisplay, makVrv::DtDatabaseCoordinateDisplay, and makVrv::DtGeocentricCoordinateDisplay.

virtual DtTaitBryan makVrv::DtCoordinateDisplay::headingPitchRollFor ( const DtVector geocPos,
const DtTaitBryan &  geocOri 
) const
pure virtual
virtual DtTaitBryan makVrv::DtCoordinateDisplay::localOrientationFor ( const DtVector location,
const DtTaitBryan &  geocOri 
) const
pure virtual
virtual void makVrv::DtCoordinateDisplay::regularExpressionValidator ( std::string &  x,
std::string &  y,
std::string &  z 
)
pure virtual

Returns a the regexes for validating the XYZ values for this coordsys. Need X, Y and Z because they may be different for a given coordinate system.

Implemented in makVrv::DtGeodeticDmsCoordinateDisplay, makVrv::DtUtmCoordinateDisplay, makVrv::DtMgrsCoordinateDisplay, SngCoordinateDisplay, makVrv::DtGeocentricCoordinateDisplay, makVrv::DtDatabaseCoordinateDisplay, makVrv::DtGeodeticDdmCoordinateDisplay, and makVrv::DtGeodeticDecCoordinateDisplay.

virtual DtTaitBryan makVrv::DtCoordinateDisplay::topoOrientationFor ( const DtVector geocPos,
const DtTaitBryan &  geocOri 
) const
virtual
virtual DtVector makVrv::DtCoordinateDisplay::geocToLocalVector ( const DtVector geocLoc,
const DtVector geocVec 
) const
virtual
const SupportedPositionDistanceUnits& makVrv::DtCoordinateDisplay::supportedPositionDistanceUnits ( ) const

Retrieve the the list of DistanceUnits supported by this cs display for displaying positions (coordnates).Different coordinate displays can support different distance units for position display (or, in some cases, none). For example, UTM only xupports meters. On the other hand, Local Cartesian Coordinates can be displayed in any DistanceUnit.

bool makVrv::DtCoordinateDisplay::isSupportedPositionUnit ( DistanceUnits  unit) const

Determine if the specified distance unit is supported.

void makVrv::DtCoordinateDisplay::addSupportedPositionUnit ( DistanceUnits  unitToSupport)

Add support for a new distance unit type.

void makVrv::DtCoordinateDisplay::removeSupportedPositionUnit ( DistanceUnits  unitToRemove)

Remove support for a distance unit type.

const SupportedPositionAngularUnits& makVrv::DtCoordinateDisplay::supportedPositionAngularUnits ( ) const

Retrieve the the list of OrientationUnits supported by this cs display

for displaying positions (coordnates). Different coordinate displays can support different angular units for position display (or, in some cases, none). For example, Geodetic currently supports degrees.

bool makVrv::DtCoordinateDisplay::isSupportedPositionUnit ( OrientationUnits  unit) const

Determine if the specified distance unit is supported.

void makVrv::DtCoordinateDisplay::addSupportedPositionUnit ( OrientationUnits  unitToSupport)

Add support for a new distance unit type.

void makVrv::DtCoordinateDisplay::removeSupportedPositionUnit ( OrientationUnits  unitToRemove)

Remove support for a distance unit type.

const SupportedCSForGridLines& makVrv::DtCoordinateDisplay::supportedCSForGridLines ( ) const

Retrieve the the list of coordinate systems that can have grid lines drawn using this display type.

bool makVrv::DtCoordinateDisplay::isSupportedCSForGridLines ( const std::string &  cs) const

Determine if this display supports grid lines for the specified coordinate system.

void makVrv::DtCoordinateDisplay::addSupportedCSForGridLines ( const std::string &  cs)

Add grid line support for a coordinate system.

void makVrv::DtCoordinateDisplay::removeSupportedCSForGridLines ( const std::string &  cs)

Remove grid line support for a coordinate system.

static std::string makVrv::DtCoordinateDisplay::removeNegativeZeroIfNeeded ( const char ptr)
static

Utility function to prevent the -0 case in numeric strings.

Parameters
ptrA pointer to a C-style string representing a numeric value

This function removes '-' from a c-style string, if a negative zero is found in the string, and returns the result as a std::string. If a negative zero is not found in the string, this function returns the std::string equivalent of ptr. It is assumed that if the string has a '-', it is at ptr[0].

For example,

  • "-0.0" => "0.0"
  • "-0.01" => "-0.01"
  • "-0.000" => "0.000"
static std::string makVrv::DtCoordinateDisplay::cleanupNumericalString ( const char buffer,
int  decimals 
)
static

Cleans up a string representation of any numerical value.

Parameters
buffThe string representation of the numerical value to clean up
decimalsThe maximum number of decimal places the numerical value will have This function cleans up a string representation by only keeping significant digits. Additionally, any "-0" values will be rounded to "0". For example,
  • "2" instead of "2.000"
  • "2.02" instead of "2.020"
  • "0" instead of "-0.000"

Member Data Documentation

const DtCoordinateSystem& makVrv::DtCoordinateDisplay::myCoordinateSystem
protected
SupportedPositionDistanceUnits makVrv::DtCoordinateDisplay::mySupportedPositionDistanceUnits
protected
SupportedPositionAngularUnits makVrv::DtCoordinateDisplay::mySupportedPositionAngularUnits
protected
SupportedCSForGridLines makVrv::DtCoordinateDisplay::mySupportedCSForGridLines
protected

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

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)