VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtCoordinateDisplay.h
Go to the documentation of this file.
1 /*********************************************************************
2  * Copyright (c) 2020 MaK Technologies, Inc.
3  * All rights reserved.
4  ********************************************************************/
5 
9 
10 #pragma once
11 #include <vrvUtil/vrvUtil.h>
12 #include <vrvUtil/DtUnicode.h>
14 #include <matrix/vlVector.h>
15 
16 class DtTaitBryan;
17 
18 namespace makVrv
19 {
20  class DtCoordinateSystem;
21 
25  {
26  public:
27 
34  typedef std::list<DistanceUnits> SupportedPositionDistanceUnits;
35  typedef std::list<OrientationUnits> SupportedPositionAngularUnits;
36  typedef std::list<std::string> SupportedCSForGridLines;
37 
38  public:
44  DtCoordinateDisplay( const DtCoordinateSystem& coordSys );
45 
47  virtual ~DtCoordinateDisplay();
48 
49  public:
51  virtual DtCoordinateDisplay* clone() const = 0;
52 
53  virtual DtUnicode name() const = 0;
54 
59  virtual DtUnicode gridBoxLabel(const DtVector& lowerLeftGeocPos,
60  const DtVector& upperRightGeocPos );
61 
62  // Deriving systems need to override one or the other of these,
63  // depending on which type of position units they use. GridSpacing
64  // is provided for autoPrecision implementations
65 
72  virtual DtUnicode northSouthGridLabel( DistanceUnits unit,
73  const DtVector& geocPos, int decimals, double gridSpacing, bool minimal = false );
74 
81  virtual DtUnicode northSouthGridLabel( OrientationUnits unit,
82  const DtVector& geocPos, int decimals, double gridSpacing, bool minimal = false );
83 
90  virtual DtUnicode eastWestGridLabel( DistanceUnits unit,
91  const DtVector& geocPos, int decimals, double gridSpacing, bool minimal = false );
92 
99  virtual DtUnicode eastWestGridLabel( OrientationUnits unit,
100  const DtVector& geocPos, int decimals, double gridSpacing, bool minimal=false );
101 
105  virtual bool clipXToGrid( double inStartX, double inEndX, double constantY,
106  double& clippedStartX, double& clippedEndX );
107 
109  virtual bool clipYToGrid( double inStartY, double inEndY, double constantX,
110  double& clippedStartY, double& clippedEndY );
111 
114  virtual void shiftGridLineAnchors( double xSpacing, double ySpacing,
115  double& shiftX, double& shifY );
116 
118  virtual bool usesDecimalsOnGridLines() const;
119 
121  virtual double maxGridSpacing() const;
122 
124  virtual double minGridSpacing() const;
125 
126  virtual DistanceUnits xUnitsFor( DistanceUnits unit ) const = 0;
127 
128  virtual DistanceUnits yUnitsFor( DistanceUnits unit ) const = 0;
129 
130  virtual DistanceUnits zUnitsFor( DistanceUnits unit ) const = 0;
131 
132  virtual DtUnicode xAxisLabel() const = 0;
133  virtual DtUnicode yAxisLabel() const = 0;
134  virtual DtUnicode zAxisLabel() const = 0;
135 
139  virtual std::vector<std::string> convertPositionToStringList(
140  DistanceUnits unit, const DtVector& geocPos, int decimals ) const = 0;
141 
148  virtual std::vector<DtUnicode> convertPositionToNotatedStringList(
149  DistanceUnits unit, DtUnicode unitNotation, const DtVector& geocPos, int decimals, bool minimal = false) const = 0;
150 
154  virtual void convertToGeocentric( const std::string& x,
155  const std::string& y, const std::string& z, DistanceUnits distUnits,
156  DistanceUnits altUnits, DtVector& vector ) = 0;
157 
160  virtual DtVector convertFromGeocentric( const DtVector& vector ) const = 0;
161 
163  virtual DtTaitBryan headingPitchRollFor( const DtVector& geocPos,
164  const DtTaitBryan& geocOri ) const = 0;
165 
167  virtual DtTaitBryan localOrientationFor( const DtVector& location,
168  const DtTaitBryan& geocOri ) const = 0;
169 
173  virtual void regularExpressionValidator( std::string& x, std::string& y,
174  std::string& z ) = 0;
175 
176  virtual DtTaitBryan topoOrientationFor( const DtVector& geocPos,
177  const DtTaitBryan& geocOri ) const;
178 
179  virtual DtVector geocToLocalVector(const DtVector& geocLoc,
180  const DtVector& geocVec ) const;
181 
187  const SupportedPositionDistanceUnits& supportedPositionDistanceUnits() const;
188 
190  bool isSupportedPositionUnit( DistanceUnits unit) const;
191 
193  void addSupportedPositionUnit( DistanceUnits unitToSupport );
194 
196  void removeSupportedPositionUnit( DistanceUnits unitToRemove );
197 
202  const SupportedPositionAngularUnits& supportedPositionAngularUnits() const;
203 
205  bool isSupportedPositionUnit( OrientationUnits unit) const;
206 
208  void addSupportedPositionUnit( OrientationUnits unitToSupport );
209 
211  void removeSupportedPositionUnit( OrientationUnits unitToRemove );
212 
215  const SupportedCSForGridLines& supportedCSForGridLines() const;
216 
219  bool isSupportedCSForGridLines( const std::string& cs ) const;
220 
222  void addSupportedCSForGridLines( const std::string& cs );
223 
225  void removeSupportedCSForGridLines( const std::string& cs );
226 
227  public:
241  static std::string removeNegativeZeroIfNeeded(const char* ptr);
242 
252  static std::string cleanupNumericalString(const char* buffer, int decimals);
253 
254  protected:
255 
260 
261  };
262 
263 }
VelocityUnits
Enumeration of the different velocity units.
Definition: DtDisplayUnitsSettingsRecord.h:73
A unicode string. DtUnicode stores a UTF-16 encoded unicode string. Code Point, a Unicode character...
Definition: DtUnicode.h:33
#define DT_DLL_VRVUTIL
Definition: vrvUtil.h:34
Abstract interface class for all coordinate system displays.
Definition: DtCoordinateDisplay.h:24
std::list< DistanceUnits > SupportedPositionDistanceUnits
Definition: DtCoordinateDisplay.h:34
SupportedCSForGridLines mySupportedCSForGridLines
Definition: DtCoordinateDisplay.h:259
CoordSys
Enumeration of the different coordinate system types.
Definition: DtDisplayUnitsSettingsRecord.h:30
makArchives::DtDisplayUnitsSettingsRecord::AccelerationUnits AccelerationUnits
Definition: DtCoordinateDisplay.h:31
SupportedPositionAngularUnits mySupportedPositionAngularUnits
Definition: DtCoordinateDisplay.h:258
Contains DLL export macros.
DistanceUnits
Enumeration of the different distance units.
Definition: DtDisplayUnitsSettingsRecord.h:57
RotVelocityUnits
Enumeration of the different rotational velocity units.
Definition: DtDisplayUnitsSettingsRecord.h:113
makArchives::DtDisplayUnitsSettingsRecord::DistanceUnits DistanceUnits
Definition: DtCoordinateDisplay.h:29
std::list< std::string > SupportedCSForGridLines
Definition: DtCoordinateDisplay.h:36
std::list< OrientationUnits > SupportedPositionAngularUnits
Definition: DtCoordinateDisplay.h:35
The DtCoordinateSystem is used to manage the current coordinate system of the scene.
Definition: DtCoordinateSystem.h:40
OrientationUnits
Enumeration of the different orientation units.
Definition: DtDisplayUnitsSettingsRecord.h:102
const DtCoordinateSystem & myCoordinateSystem
Definition: DtCoordinateDisplay.h:256
makArchives::DtDisplayUnitsSettingsRecord::VelocityUnits VelocityUnits
Definition: DtCoordinateDisplay.h:30
SupportedPositionDistanceUnits mySupportedPositionDistanceUnits
Definition: DtCoordinateDisplay.h:257
makArchives::DtDisplayUnitsSettingsRecord::RotVelocityUnits RotVelocityUnits
Definition: DtCoordinateDisplay.h:33
Contains the DtDisplayUnitsSettingsRecord class declaration.
makArchives::DtDisplayUnitsSettingsRecord::CoordSys CoordSys
Definition: DtCoordinateDisplay.h:28
makArchives::DtDisplayUnitsSettingsRecord::OrientationUnits OrientationUnits
Definition: DtCoordinateDisplay.h:32
AccelerationUnits
Enumeration of the different acceleration units.
Definition: DtDisplayUnitsSettingsRecord.h:89

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)