VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtCoordinateConverter.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 2014 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 
8 
9 #pragma once
10 
11 #include <vrvUtil/vrvUtil.h>
12 
13 #include <matrix/geodeticCoord.h>
14 #include <matrix/utmReferencePoint.h>
15 #include <matrix/vlDcm.h>
16 #include <matrix/vlVector.h>
17 #include <string>
18 
19 namespace makVrv
20 {
21 
26 {
27 public:
28 
29  static const char* NoOp;
30  static const char* Geocentric;
31  static const char* UTM;
33  static const char* Lambert;
34  static const char* FlatEarth;
35  static const char* Cartesian;
36 
37 public:
38 
39  typedef DtCoordinateConverter* (*CreatorFn)();
40 
41 public:
42 
44  virtual ~DtCoordinateConverter();
45 
47  virtual const std::string& type() const;
48 
50  virtual DtCoordinateConverter* clone() const = 0;
51 
53  virtual bool init(const std::string& originstring) = 0;
54 
56  virtual std::string stringRep() = 0;
57 
59  virtual bool zIsAlt() const;
60 
62  virtual bool usesOffsetFile() const;
63 
66  virtual DtGeodeticCoord databaseOrigin() const;
67 
69  virtual void setGeocOriginOffset(const DtVector& offset){};
70 
73  virtual void reset();
74 
75  /* inspectors/mutators for DCM's */
77  virtual const DtDcm& nedToCigDcm() const;
78 
80  virtual const DtDcm& cigToNedDcm() const;
81 
83  virtual const DtDcm& geocToCigDcm() const;
84 
87  virtual const DtDcm& cigToGeocDcm() const;
88 
90  virtual const DtDcm& geocToNedDcm() const;
91 
94 
96  virtual const DtDcm& cigToEnuDcm() const;
97 
99  virtual const DtDcm& nedToGeocDcm() const;
100 
101  /*************************** conversions **********************************/
103  virtual void geocToCig(const DtVector& geoc, DtVector& out) const = 0;
105  virtual void cigToGeoc(const DtVector& in, DtVector& geoc) const = 0;
106 
109  virtual void setupTopoFrame(const DtVector& truth);
110 
112  virtual void cigToEnu_coordTrans(const DtVector& cigPos,
113  DtVector& enuPos) const;
114 
116  virtual void cigToEnu_vecTrans(const DtVector& cigVec,
117  DtVector& enuVec) const;
118 
120  virtual void enuToCig_coordTrans(const DtVector& enuPos,
121  DtVector& cigPos) const;
122 
125  virtual void enuToCig_vecTrans(const DtVector& enuVec,
126  DtVector& cigVec) const;
127 
129  virtual DtVector& enuToCig_vecTrans(const DtVector& origin,
130  const DtVector& offset) const;
131 
134  virtual const DtTaitBryan& nedToCig_EulerTrans(
135  const DtTaitBryan& topo) const;
136 
137  /* ---------------------- Utilities ---------------------------- */
139  virtual DtVector up(const DtVector& orig) const;
140 
142  virtual void topoSurface(const DtVector& o, DtVector& surface) const;
143 
144  const DtDcm nedToEnuDcm() const
145  {
146  return myNedToEnuDcm;
147  }
148 
149 public:
150 
151  static double convertToDouble(const std::string& str);
152  static double convertToDouble(const DtDegMinSec& dms);
153  static DtDegMinSec convertToDmsLat(double deg);
154  static DtDegMinSec convertToDmsLon(double deg);
155 
157  static bool isCoordinateSystemProjected( const std::string& csType );
158 
159 protected:
160 
162  DtCoordinateConverter(const std::string& t);
163 
165  std::string polarDirectionToStr(int dir);
166 
168  std::string parseLatLng( const DtDegMinSec& lat, const DtDegMinSec& lng);
169 
170 private:
171 
174 
176  DtCoordinateConverter& operator=(const DtCoordinateConverter& orig);
177 
178 protected:
179 
181  std::string myType;
183  bool myZAlt;
184 
186  DtGeodeticCoord myGeodOrigin;
187 
191 
194 
197 
199  const DtDcm myNedToEnuDcm;
200 
203 
206 };
207 
209 void DT_DLL_VRVUTIL DtQuaternionToEulerDeg(const double x, const double y, const double z,
210  const double w, double& yawOut, double& pitchOut, double& rollOut);
211 
213 void DT_DLL_VRVUTIL DtQuaternionToEulerRad(const double x, const double y, const double z,
214  const double w, double& yawOut, double& pitchOut, double& rollOut);
215 
217 void DT_DLL_VRVUTIL DtEulerToQuaternionDeg(const double yaw, const double pitch , const double roll,
218  double& xOut, double& yOut, double& zOut, double& wOut);
219 
221 void DT_DLL_VRVUTIL DtEulerToQuaternionRad(const double yaw, const double pitch , const double roll,
222  double& xOut, double& yOut, double& zOut, double& wOut);
223 
224 }
void DT_DLL_VRVUTIL DtQuaternionToEulerDeg(const double x, const double y, const double z, const double w, double &yawOut, double &pitchOut, double &rollOut)
Converts Quaternions to Eulers. Eulers are in degrees.
#define DT_DLL_VRVUTIL
Definition: vrvUtil.h:34
DtDcm myGeocToNedDcm
Definition: DtCoordinateConverter.h:190
DtGeodeticCoord myGeodOrigin
initializing system
Definition: DtCoordinateConverter.h:186
DtCoordinateConverter is the base class for &#39;local (cig) to geocentric&#39; converters.
Definition: DtCoordinateConverter.h:25
voidpf uLong int origin
Definition: ioapi.h:42
static const char * Geocentric
Does no conversion.
Definition: DtCoordinateConverter.h:30
const DtDcm myNedToEnuDcm
Definition: DtCoordinateConverter.h:199
void DT_DLL_VRVUTIL DtEulerToQuaternionRad(const double yaw, const double pitch, const double roll, double &xOut, double &yOut, double &zOut, double &wOut)
Converts from Eulers to Quaternions. Eulers are in degrees.
DtDcm myNedToGeocDcm
topo frame DCM&#39;s
Definition: DtCoordinateConverter.h:189
void DT_DLL_VRVUTIL DtEulerToQuaternionDeg(const double yaw, const double pitch, const double roll, double &xOut, double &yOut, double &zOut, double &wOut)
Converts from Eulers to Quaternions. Eulers are in degrees.
bool myUsesWarbreaker
Definition: DtCoordinateConverter.h:182
bool myZAlt
Definition: DtCoordinateConverter.h:183
Contains DLL export macros.
virtual void setGeocOriginOffset(const DtVector &offset)
set origin offset (geoc cig origin)
Definition: DtCoordinateConverter.h:69
DtDcm myNed2CigEulerDcm
to-euler DCM&#39;s
Definition: DtCoordinateConverter.h:202
DtDcm myGeocToCigDcm
Definition: DtCoordinateConverter.h:195
static const char * Lambert
Converts between UTM and geocentric.
Definition: DtCoordinateConverter.h:33
const DtDcm nedToEnuDcm() const
Definition: DtCoordinateConverter.h:144
std::string myType
flags
Definition: DtCoordinateConverter.h:181
DtDcm myCigToNedDcm
Definition: DtCoordinateConverter.h:193
static const char * NoOp
Definition: DtCoordinateConverter.h:29
static const char * FlatEarth
Converts between Lambert and geocentric.
Definition: DtCoordinateConverter.h:34
DtDcm myCigToGeocDcm
Definition: DtCoordinateConverter.h:196
DtDcm myCigToEnuDcm
Definition: DtCoordinateConverter.h:198
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
DtVector myLastLocation
DtCoordTransform myGeocToNedTransform;.
Definition: DtCoordinateConverter.h:205
void DT_DLL_VRVUTIL DtQuaternionToEulerRad(const double x, const double y, const double z, const double w, double &yawOut, double &pitchOut, double &rollOut)
Converts Quaternions to Eulers. Eulers are in radians.
voidpf uLong offset
Definition: ioapi.h:42
static const char * Cartesian
Converts between Flat Earth and geocentric.
Definition: DtCoordinateConverter.h:35
DtDcm myNedToCigDcm
Definition: DtCoordinateConverter.h:192

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)