VR-Forces 4.0.4 Class Documentation
include/vrvUtil/DtCoordinateDisplay.h
Go to the documentation of this file.
00001 /*********************************************************************
00002  * Copyright (c) 2011 MaK Technologies, Inc.
00003  * All rights reserved.
00004  ********************************************************************/
00005 /*********************************************************************
00006  * $RCSfile: DtCoordinateDisplay.h,v $ $Revision: 1.8 $ $State: Exp $
00007  ********************************************************************/
00008 
00012 
00013 #pragma once
00014 #include <vrvUtil/vrvUtil.h>
00015 #include <vrvUtil/DtUnicode.h>
00016 #include <makArchives/DtDisplayUnitsSettingsRecord.h>
00017 
00018 class DtVector;
00019 class DtTaitBryan;
00020 
00021 namespace makVrv
00022 {
00023    class DtCoordinateSystem;
00024 
00027    class DT_DLL_VRVUTIL DtCoordinateDisplay
00028    {
00029    public:
00030 
00031       typedef makArchives::DtDisplayUnitsSettingsRecord::CoordSys CoordSys;
00032       typedef makArchives::DtDisplayUnitsSettingsRecord::DistanceUnits DistanceUnits;
00033       typedef makArchives::DtDisplayUnitsSettingsRecord::VelocityUnits VelocityUnits;
00034       typedef makArchives::DtDisplayUnitsSettingsRecord::AccelerationUnits AccelerationUnits;
00035       typedef makArchives::DtDisplayUnitsSettingsRecord::OrientationUnits OrientationUnits;
00036       typedef makArchives::DtDisplayUnitsSettingsRecord::RotVelocityUnits RotVelocityUnits;
00037       typedef std::list<DistanceUnits> SupportedPositionDistanceUnits;
00038       typedef std::list<OrientationUnits> SupportedPositionAngularUnits;
00039       typedef std::list<std::string> SupportedCSForGridLines;
00040 
00041 
00047       DtCoordinateDisplay( const DtCoordinateSystem& coordSys );
00048 
00050       virtual ~DtCoordinateDisplay();
00051 
00053       virtual DtCoordinateDisplay* clone() const = 0;
00054 
00055       virtual DtUnicode name() = 0;
00056 
00061       virtual DtUnicode gridBoxLabel(const DtVector& lowerLeftGeocPos,
00062          const DtVector& upperRightGeocPos );
00063       
00064       // Deriving systems need to override one or the other of these,
00065       // depending on which type of position units they use.  GridSpacing
00066       // is provided for autoPrecision implementations
00067 
00069       virtual DtUnicode northSouthGridLabel( DistanceUnits unit,
00070          const DtVector& geocPos, int decimals, double gridSpacing );
00071       
00073       virtual DtUnicode northSouthGridLabel( OrientationUnits unit,
00074          const DtVector& geocPos, int decimals, double gridSpacing );
00075 
00077       virtual DtUnicode eastWestGridLabel( DistanceUnits unit,
00078          const DtVector& geocPos, int decimals, double gridSpacing );
00079       
00081       virtual DtUnicode eastWestGridLabel( OrientationUnits unit,
00082          const DtVector& geocPos, int decimals, double gridSpacing );
00083 
00087       virtual bool clipXToGrid( double inStartX, double inEndX, double constantY, 
00088          double& clippedStartX, double& clippedEndX );
00089 
00091       virtual bool clipYToGrid( double inStartY, double inEndY, double constantX, 
00092          double& clippedStartY, double& clippedEndY );
00093 
00096       virtual void shiftGridLineAnchors( double xSpacing, double ySpacing, 
00097          double& shiftX, double& shifY );
00098 
00100       virtual bool usesDecimalsOnGridLines() const;
00101 
00103       virtual double maxGridSpacing() const;
00104 
00106       virtual double minGridSpacing() const;
00107 
00108       virtual DistanceUnits xUnitsFor( DistanceUnits unit ) = 0;
00109 
00110       virtual DistanceUnits yUnitsFor( DistanceUnits unit ) = 0;
00111 
00112       virtual DistanceUnits zUnitsFor( DistanceUnits unit ) = 0;
00113 
00114       virtual DtUnicode xAxisLabel() = 0;
00115       virtual DtUnicode yAxisLabel() = 0;
00116       virtual DtUnicode zAxisLabel() = 0;
00117 
00121       virtual std::vector<std::string> convertPositionToStringList(
00122          DistanceUnits unit, const DtVector& geocPos, int decimals ) = 0;
00123 
00127       virtual void convertToGeocentric( const std::string& x, 
00128          const std::string& y, const std::string& z, DistanceUnits distUnits,
00129          DistanceUnits altUnits, DtVector& vector ) = 0;
00130 
00133       virtual DtVector convertFromGeocentric( const DtVector& vector ) const = 0;
00134 
00136       virtual DtTaitBryan headingPitchRollFor( const DtVector& geocPos,
00137          const DtTaitBryan& geocOri ) const = 0;
00138 
00140       virtual DtTaitBryan localOrientationFor( const DtVector& location,
00141          const DtTaitBryan& geocOri ) const = 0;
00142 
00146       virtual void regularExpressionValidator( std::string& x, std::string& y, 
00147          std::string& z ) = 0;
00148 
00149       virtual DtTaitBryan topoOrientationFor( const DtVector& geocPos, 
00150          const DtTaitBryan& geocOri ) const;
00151 
00152       virtual DtVector geocToLocalVector(const DtVector& geocLoc, 
00153          const DtVector& geocVec ) const;
00154 
00160       const SupportedPositionDistanceUnits& supportedPositionDistanceUnits() const;
00161 
00163       bool isSupportedPositionUnit( DistanceUnits unit) const;
00164 
00166       void addSupportedPositionUnit( DistanceUnits unitToSupport );
00167 
00169       void removeSupportedPositionUnit( DistanceUnits unitToRemove );
00170 
00175       const SupportedPositionAngularUnits& supportedPositionAngularUnits() const;
00176 
00178       bool isSupportedPositionUnit( OrientationUnits unit) const;
00179 
00181       void addSupportedPositionUnit( OrientationUnits unitToSupport );
00182 
00184       void removeSupportedPositionUnit( OrientationUnits unitToRemove );
00185       
00188       const SupportedCSForGridLines& supportedCSForGridLines() const;
00189 
00192       bool isSupportedCSForGridLines( const std::string& cs ) const;
00193 
00195       void addSupportedCSForGridLines( const std::string& cs );
00196 
00198       void removeSupportedCSForGridLines( const std::string& cs );
00199 
00200    protected:
00201 
00202       const DtCoordinateSystem& myCoordinateSystem;
00203       SupportedPositionDistanceUnits mySupportedPositionDistanceUnits;
00204       SupportedPositionAngularUnits mySupportedPositionAngularUnits;
00205       SupportedCSForGridLines mySupportedCSForGridLines;
00206 
00207    };
00208 
00209 }

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)