VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
scriptGeometry.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 #pragma once
6 
8 #include <matrix/vlVector.h>
10 #include <matrix/geodeticCoord.h>
11 
16 
17 class DtVectorGeoc3D;
18 class DtVector3D;
19 class DtVectorOffset3D;
20 
23  : public DtAsciiSerializable
24 #ifdef DtObjectDebugger_Enable
25  , public DtObjectDebugger<DtLocation3D>
26 #endif
27 {
28 public:
31 
34  DtLocation3D(const DtVector &vect);
35  DtLocation3D(const DtGeodeticCoord &geodCoord);
36  DtLocation3D(const DtLocation3D& orig);
37  DtLocation3D();
38  virtual ~DtLocation3D() override;
39  DtLocation3D& operator=(const DtLocation3D& orig);
40 
42  DtLocation3D(const double latitude, const double longitude,
43  const double altitudeMSL);
44 
48  DtLocation3D makeCopy() const;
49 
50  //-------------------------------------------
53 
55  virtual DtString objectType() const override;
56 
58  virtual DtString serialize() override;
59 
62  virtual bool deserialize(const DtString& data) override;
63 
65  static DtAsciiSerializable* creator();
67  //--------------------------------------------
68 
73  DtVector getGeocentric() const;
74  DtGeodeticCoord geodLocation() const;
75 
81  void setGeodeticFromVector(const DtVector& geodeticData);
82  DtVector getGeodeticVector(void) const;
83 
87  double getLat() const;
88  void setLat(const double lat);
89  double getLon() const;
90  void setLon(const double lon);
91  double getAlt() const;
92  void setAlt(const double alt);
94 
96  double distanceToLocation3D(const DtLocation3D &location) const;
97 
98  bool isNearLocation3D(const DtLocation3D &loc, const double error) const;
99 
103  bool isInsidePolygon(const std::vector<DtLocation3D> polyPoints)const;
104 
108  bool isLeftOfLine(const DtLocation3D &loc1, const DtLocation3D & loc2) const;
109 
113 
118  DtVector3D vectorToLoc3D(const DtLocation3D &location) const;
119 
121  DtVectorGeoc3D vectorGeocToLoc3D(const DtLocation3D &location) const;
122 
124  DtLocation3D addVector3D(const DtVector3D &vec) const;
125 
128  DtLocation3D addVectorGeoc3D(const DtVectorGeoc3D &vec) const;
129 
131  void setGeocentric(double x, double y, double z);
132 
134  void getGeocentricCoords(double& x, double& y, double& z) const;
135 
136  bool operator==(const DtLocation3D&) const;
137  bool operator!=(const DtLocation3D& orig) const
138  {
139  return !(*this == orig);
140  }
141 
143  bool isValid() const;
144 
145 protected:
149  DtGeodeticCoord myGeodLocation;
150 };
151 
153 
154 DT_DLL_vrfutil std::ostream& operator<<(std::ostream& stream, const DtLocation3D& loc);
155 
162  : public DtAsciiSerializable
163 #ifdef DtObjectDebugger_Enable
164  , public DtObjectDebugger<DtVector3D>
165 #endif
166 {
167 public:
170 
172  DtVector3D();
173  DtVector3D(const DtVector &vect);
174  DtVector3D(const DtVector3D& vect);
175  virtual ~DtVector3D() override;
176  DtVector3D& operator=(const DtVector3D& orig);
177  DtVector nedVector() const;
178 
180  DtVector3D(const double north, const double east, const double down);
181 
185  void setFromGeocentricVector(const DtVector &geocVec, DtLocation3D& origin);
186 
190  DtVector3D makeCopy() const;
191 
192  //-------------------------------------------
195 
197  virtual DtString objectType() const override;
198 
200  virtual DtString serialize() override;
201 
204  virtual bool deserialize(const DtString& data) override;
205 
207  static DtAsciiSerializable* creator();
209  //--------------------------------------------
210 
212  void setNorthEastDown(const double north, const double east,
213  const double down);
217  void setBearingInclRange(const double bearing, const double inclination,
218  const double range);
219 
224  double getBearing(void) const;
226  double getInclination(void)const;
228  double getRange(void)const;
230 
231  double getNorth(void)const;
233  double getEast(void) const;
235  double getDown(void) const;
238 
241  DtVector3D getScaled(const double scale) const;
242  DtVector3D getNegated(void) const;
243  DtVector3D getUnit(void) const;
244 
246  DtVector3D addVector3D(const DtVector3D &vec) const;
247 
249  DtVector3D crossVector3D(const DtVector3D &vec) const;
250 
252  double dotVector3D(const DtVector3D &vec) const;
253 
257  DtVector3D addOffset(const DtVectorOffset3D & offset) const;
258 
262  double headingDiff(const DtVector3D &vec) const;
263 
266  DtVectorGeoc3D makeVectorGeoc3DAtLoc(const DtLocation3D &loc) const;
267 
268  bool operator==(const DtVector3D&) const;
269  bool operator!=(const DtVector3D& orig) const
270  {
271  return !(*this == orig);
272  }
273 
274 protected:
276  DtVector myNEDVector;
277 };
278 
280 
281 DT_DLL_vrfutil std::ostream& operator<<(std::ostream& stream, const DtVector3D& vec);
282 
290  : public DtVector3D
291 #ifdef DtObjectDebugger_Enable
292  , public DtObjectDebugger<DtVector2D>
293 #endif
294 {
295 public:
298 
302  DtVector2D();
303  DtVector2D(const DtVector &vect);
304  DtVector2D(const DtVector3D& vect);
305  virtual ~DtVector2D() override;
306  DtVector2D& operator=(const DtVector3D& orig);
307 
309  DtVector2D(const double north, const double east);
310 
312  virtual DtString objectType() const override;
313 
315  static DtAsciiSerializable* creator();
316 
317  void setNorth(const double north);
318  void setEast(const double east);
319 
321  DtVector2D addVector2D(const DtVector3D& vec);
322 
324  double crossVector2D(const DtVector3D &vec);
325 
327  double dotVector2D(const DtVector3D &vec);
328 
330  DtVector2D addOffset2D(const DtVectorOffset3D &vec);
331 
332  bool operator==(const DtVector2D&) const;
333  bool operator!=(const DtVector2D& orig) const
334  {
335  return !(*this == orig);
336  }
337 };
338 
340 
341 DT_DLL_vrfutil std::ostream& operator<<(std::ostream& stream, const DtVector2D& vec);
342 
343 
348  : public DtAsciiSerializable
349 #ifdef DtObjectDebugger_Enable
350  , public DtObjectDebugger<DtVectorGeoc3D>
351 #endif
352 {
353 public:
354  DtVectorGeoc3D(const DtVector &vect);
355  DtVectorGeoc3D(const DtVectorGeoc3D& orig);
356  virtual ~DtVectorGeoc3D() override;
357  DtVectorGeoc3D& operator=(const DtVectorGeoc3D& orig);
358 
359  DtVector geocVector() const;
360 
361  //-------------------------------------------
364 
366  virtual DtString objectType() const override;
367 
369  virtual DtString serialize() override;
370 
373  virtual bool deserialize(const DtString& data) override;
374 
376  static DtAsciiSerializable* creator();
378  //--------------------------------------------
379 
383  DtVectorGeoc3D makeCopy() const;
384 
387  DtVector3D makeVector3DAtLoc(const DtLocation3D loc) const;
388 
391  DtVectorGeoc3D getScaled(const double scale) const;
392  DtVectorGeoc3D getNegated(void) const;
393  DtVectorGeoc3D getUnit(void) const;
395 
397  DtVectorGeoc3D crossVectorGeoc3D(const DtVectorGeoc3D &vec) const;
398 
400  double dotVectorGeoc3D(const DtVectorGeoc3D &vec) const;
401 
402 
404  double getLength() const;
405 
406  bool operator==(const DtVectorGeoc3D&) const;
407  bool operator!=(const DtVectorGeoc3D& orig) const
408  {
409  return !(*this == orig);
410  }
411 
412 protected:
413  DtVector myGeocVector;
414 };
415 
417 
418 DT_DLL_vrfutil std::ostream& operator<<(std::ostream& stream, const DtVectorGeoc3D& vec);
419 
427 
429  : public DtAsciiSerializable
430 #ifdef DtObjectDebugger_Enable
431  , public DtObjectDebugger<DtVectorOffset3D>
432 #endif
433 {
434 public:
436 
439  DtVectorOffset3D(const DtVector &vect);
440  DtVectorOffset3D(const DtVectorOffset3D& orig);
441  virtual ~DtVectorOffset3D() override;
442  DtVectorOffset3D& operator=(const DtVectorOffset3D& orig);
443 
445  DtVectorOffset3D(double right, double forward, double up);
446 
449  void setFromBodyVector(const DtVector &vect);
450 
454  DtVectorOffset3D makeCopy() const;
455 
456  //-------------------------------------------
459 
461  virtual DtString objectType() const override;
462 
464  virtual DtString serialize() override;
465 
468  virtual bool deserialize(const DtString& data) override;
469 
471  static DtAsciiSerializable* creator();
473  //--------------------------------------------
474 
477  double getRight(void) const;
478  void setRight(const double right);
479  double getForward(void) const;
480  void setForward(const double forward);
481  double getUp(void) const;
482  void setUp(const double up);
484 
487  DtVectorOffset3D getScaled(const double scale) const;
488  DtVectorOffset3D getNegated(void) const;
489  DtVectorOffset3D getUnit(void) const;
491 
493  DtVectorOffset3D addOffset(const DtVectorOffset3D offset) const;
494 
496  DtVectorOffset3D crossVectorOffset3D(const DtVectorOffset3D &vec) const;
497 
499  double dotVectorOffset3D(const DtVectorOffset3D &vec) const;
500 
504  DtVector3D makeVectorRefToDirection(const DtVector3D dirVect) const;
505 
506  DtVector vector() const;
507 
508  bool operator==(const DtVectorOffset3D&) const;
509  bool operator!=(const DtVectorOffset3D& orig) const
510  {
511  return !(*this == orig);
512  }
513 protected:
515  DtVector myVector;
516 };
517 
519 
521 DT_DLL_vrfutil std::ostream& operator<<(std::ostream& stream, const DtVectorOffset3D& vec);
522 
static DtAsciiSerializable * creator()
Returns a new object of this type with default values.
voidpf uLong int origin
Definition: ioapi.h:42
Definition: asciiSerializable.h:40
virtual bool deserialize(const DtString &)=0
This function should take the string that was serialized via serialize() and fill this object with th...
DT_DLL_terrainCS bool operator==(const DtDegMinSec &lhs, const DtDegMinSec &rhs)
#define DT_DEFINE_OBJECT_DEBUGGER_NAME(type)
Definition: objectCounter.h:31
Default on in debug, off in release.
Definition: objectCounter.h:27
DtVector myVector
Stores components right, forward, and up.
Definition: scriptGeometry.h:515
DT_DLL_features std::ostream & operator<<(std::ostream &, const DtFeatureTransform &)
std::ostream output.
virtual DtString serialize()=0
The following characters are reserved and cannot be used in serialization: &#39;|&#39;, &#39;:&#39;.
DtVector myGeocVector
Definition: scriptGeometry.h:413
bool operator!=(const DtVector3D &orig) const
Components are north-east-down.
Definition: scriptGeometry.h:269
VectorOffset3D is a direction vector that is relative to some direction specified by a Vector3D...
Definition: scriptGeometry.h:428
DtVector myNEDVector
Components are north-east-down.
Definition: scriptGeometry.h:276
bool operator!=(const DtVectorOffset3D &orig) const
Definition: scriptGeometry.h:509
DtVector3D & operator=(const DtVector3D &orig)
bool operator!=(const DtVectorGeoc3D &orig) const
Definition: scriptGeometry.h:407
Definition: asyncJobServer.h:39
DtVector2D is a vector in earth-relative coordinates, e.g. east-north. Its direction in space depends...
Definition: scriptGeometry.h:289
virtual DtString objectType() const =0
Should return the string name of this object. The object name should not be part of the serialization...
DtVector3D is a vector in earth-relative coordinates, e.g. east-north or heading-range. Its direction in space depends on where on the earth it is attached (like topocentric coordinates).
Definition: scriptGeometry.h:161
voidpf stream
Definition: ioapi.h:39
VectorGeoc3D is a direction in 3-space, i.e. a vector in geocentric coordinates.
Definition: scriptGeometry.h:347
bool operator!=(const DtVector2D &orig) const
Definition: scriptGeometry.h:333
DtGeodeticCoord myGeodLocation
The private data. Kept in geodetic (lat, lon, alt) (units radians, radians, meters) assuming that mor...
Definition: scriptGeometry.h:149
bool operator!=(const DtLocation3D &orig) const
Definition: scriptGeometry.h:137
#define DT_DLL_vrfutil
This file is used to determine how to build Disable inconsistent dll linkage warning Visual Studio 6...
Definition: vrfutilDefines.h:34
voidpf uLong offset
Definition: ioapi.h:42
virtual DtString objectType() const override
Inherited from DtAsciiSerializable.
A location3D is a point in space, i.e. a geocentric coordinate.
Definition: scriptGeometry.h:22

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)