VR-Forces 5.0.2 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
kinematicTools.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2012 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
10 
11 #include "vrfutil/vrfutilDefines.h"
12 #include <math.h>
13 #include <errno.h>
14 #include <matrix/LibMatrix.h>
15 #include <vl/topoView.h>
16 #include <matrix/vlTaitBryan.h>
17 #include <matrix/3dBoundingVolume.h>
18 
19 #include <map>
20 
22 #include <boost/math/special_functions/fpclassify.hpp>
23 
24 #define DtSIGN(x) (((x) > (0.0)) ? (1.0) : (-1.0))
25 
26 #define DtALMOST(x, y, e) (((x)<=((y)+(e))) && ((x)>=((y)-(e))))
27 
28 #define DtGRAVITY_CONSTANT (9.81)
29 #define DtPI_OVER_TWO (1.570796327)
30 #define DtTWO_PI (6.283185307)
31 #define DtMETERS_TO_FEET (3.2808)
32 #define DtMETERS_PER_SEC_TO_MPH (2.23)
33 #define DtLN2 (0.693147181)
34 #define DtNM_2_METERS (1852.0)
35 
36 #define SIN(x) DtSin(x)
37 #define COS(x) DtCos(x)
38 #define TAN(x) DtTan(x)
39 
40 #define ASIN(x) DtAsin(x)
41 #define ACOS(x) DtAcos(x)
42 #define ATAN(x) DtAtan(x)
43 #define ATAN2(y, x) DtAtan2((y), (x))
44 
45 #define DtFRand() ((double) rand() / RAND_MAX)
46 #define DtIRandom(from, to) DtIntRandom(from, to)
47 
48 class DtGeodeticCoord;
49 class Coordinate_System;
50 class DtChord;
51 class DtExtent;
52 class DtLocalVector;
53 class DtLocalVertexList;
54 class DtListItem;
56 class DtPoint;
59 class DtVertexList;
60 
63 DT_DLL_vrfutil double gRand();
64 
68 DT_DLL_vrfutil double centralLimitGaussian(int numDraws);
69 
75 
76 DT_DLL_vrfutil void Dt3DKinematicsTick(const DtVector& Position,
77  const DtVector& LinearVelocity,
78  const DtVector& LinearAcceleration,
79  DtConstDcm orientation,
80  const DtVector& angVelocity,
81  const DtVector& angAcceleration,
82  double DeltaTime,
83  DtVectorRef newPosition,
84  DtVectorRef newVelocity,
85  DtDcm& newOrientation,
86  DtVectorRef newAngVelocity);
87 
88 DT_DLL_vrfutil void Dt3DDynamicsTick(const DtVector& LinearForce,
89  double vehicleMass,
90  DtVectorRef newLinearAcceleration,
91  const DtVector& torque,
92  DtConstDcm vehicleInertia,
93  DtVectorRef newAngAcceleration);
94 
95 DT_DLL_vrfutil void DtGravityForce(double mass,
96  DtVectorRef returnForce);
97 
98 DT_DLL_vrfutil void DtResolve(const DtVector& forcePos,
99  const DtVector& force,
100  DtVectorRef resultTorqueAboutOrigin);
101 
102 DT_DLL_vrfutil void DtParallelAxisTheorem(DtConstDcm inertiaInOriginalFrame,
103  double mass,
104  const DtVector& newToOriginal,
105  DtDcm& inertiaInNewFrame);
106 
107 DT_DLL_vrfutil void DtRotateInertia(DtDcm inertiaInOriginalFrame,
108  DtDcm originalToNew,
109  DtDcm& inertiaInNewFrame);
110 
111 DT_DLL_vrfutil double DtPIDServo(double error,
112  double errorIntegral,
113  double velocity,
114  double proportionalGain,
115  double integralGain,
116  double derivativeGain,
117  double biasForce = 0.0,
118  double* control = 0);
119 
133  const double deceleration, const double dt, const double ownSpeed,
134  const double distance, const double targetSpeed, const double errorDecelValue = -1e10);
135 
149  const double deceleration, const double dt, const double ownSpeed,
150  const double distance, const double targetSpeed, const double errorDecelValue = -1e10);
151 
152 
153 DT_DLL_vrfutil void DtBlockInertia(const double xLen,
154  const double yLen,
155  const double zLen,
156  const double mass,
157  DtDcm& inertia);
158 
160  double tolerance = 0.0);
161 
162 DT_DLL_vrfutil void DtDcmFromColumns(DtDcm& result,
163  const DtVector& col1,
164  const DtVector& col2,
165  const DtVector& col3);
166 
167 DT_DLL_vrfutil void DtDcmFromRows(DtDcm& result,
168  const DtVector& row1,
169  const DtVector& row2,
170  const DtVector& row3);
171 
172 
173 
182 DT_DLL_vrfutil bool DtPointInCone(const DtVector& coneEndPosition,
183  const DtVector& coneAxis,
184  const double coneAngle,
185  const DtVector& testPoint,
186  double* testAnglePtr = 0);
187 
188 
189 DT_DLL_vrfutil bool DtPointInWedge(const DtVector& wedgeEndPosition,
190  const DtVector& wedgeAxis,
191  const double wedgeAngle,
192  const DtVector& testPoint);
193 
194 DT_DLL_vrfutil DtFloat64 DtFastDist(const DtVector& pt1, const DtVector& pt2);
195 
197 DT_DLL_vrfutil void DtVecLimit(DtVectorRef vec,
198  double limit);
199 
200 inline double DtVecMag(const DtVector& vec)
201 {
202  return sqrt(vec[DtX]*vec[DtX] + vec[DtY]*vec[DtY] + vec[DtZ]*vec[DtZ]);
203 };
204 
205 inline double DtVecMagSquared(const DtVector& vec)
206 {
207  return vec[DtX]*vec[DtX] + vec[DtY]*vec[DtY] + vec[DtZ]*vec[DtZ];
208 };
209 
210 DT_DLL_vrfutil void DtRotX(double angle, DtDcm& rotMat);
211 DT_DLL_vrfutil void DtRotY(double angle, DtDcm& rotMat);
212 DT_DLL_vrfutil void DtRotZ(double angle, DtDcm& rotMat);
213 DT_DLL_vrfutil void DtBodyToLocalRef_to_Euler(DtConstDcm body2ref, DtTaitBryan *e);
214 DT_DLL_vrfutil void DtEuler_to_BodyToLocalRef(const DtTaitBryan &euler, DtDcm& body2ref);
215 DT_DLL_vrfutil const DtDcm & enu2ned();
216 DT_DLL_vrfutil const DtDcm & ned2enu();
217 
218 DT_DLL_vrfutil void DtRotX2(double sinAng, double cosAng, DtDcm& rotMat);
219 DT_DLL_vrfutil void DtRotY2(double sinAng, double cosAng, DtDcm& rotMat);
220 DT_DLL_vrfutil void DtRotZ2(double sinAng, double cosAng, DtDcm& rotMat);
221 
224 DT_DLL_vrfutil void DtRotBodyX(double angle, DtDcm& rotMat);
225 DT_DLL_vrfutil void DtRotBodyY(double angle, DtDcm& rotMat);
226 DT_DLL_vrfutil void DtRotBodyZ(double angle, DtDcm& rotMat);
227 
229 {
230  public:
231  DtPoleFilterType(double freq);
232  void setPole(double freq);
233  void output(DtTaitBryan* input,
234  double dT,
235  DtTaitBryan* output);
236  void output(const DtVector& input,
237  double dT,
238  DtVectorRef output);
239  double output(double input,
240  double dT);
241 
242  double getPole() { return poleFreq; }
243  const DtVector& getPrevOutput() { return prevOutput; }
244 
245  private:
246  double poleFreq;
248 };
253 {
254  public:
255  DtNonLinearOutputType(double nonlinearity,
256  double gain = 1.0)
257  {
258  DtGain = gain;
259  DtExponent = nonlinearity+1.0;
260  }
261 
262  void DtSetGain(double gain) { DtGain = gain; }
263  void DtSetNonLinearity(double nonlinearity) { DtExponent = nonlinearity+1.0; }
264 
265  double DtGetGain() { return DtGain; }
266  double DtGetNonLinearity() { return DtExponent-1.0; }
267  double DtOutput(double input)
268  {
269  return DtSIGN(input) * DtGain * pow(fabs(input), DtExponent);
270  }
271 
272  private:
273  double DtGain;
274  double DtExponent;
275 
276 };
277 
278 DT_DLL_vrfutil void DtCircleVerts(double radius,
279  int npts,
280  double* xCoords,
281  double* yCoords);
282 
285 
286 
288 DT_DLL_vrfutil void DtSpacesToDashes(char* str);
289 
290 
295 DT_DLL_vrfutil char* DtGetFilenameExtension(char* fileName, char* extension);
296 
297 
304 // y is left
305 // z is up
308 // Y is forward
309 // z is up
310 
312  const DtVector& rightPoint,
313  const DtVector& rearPoint,
314  DtDcm& orientation,
315  bool yIsForward=false);
316 
319  const DtVector& rightPoint,
320  const DtVector& otherPoint,
321  double cosHeading,
322  double sinHeading,
323  DtDcm& orientation,
324  bool upsideDown = false);
325 
328  const DtVector& rightPoint, const DtVector& otherPoint, double heading,
329  const DtDcm& topoToLocal, DtDcm& orientation);
330 
331 
335 DT_DLL_vrfutil bool DtCalculateNormal(const DtVector& pointA,
336  const DtVector& pointB, const DtVector& pointC, DtVector& normal);
337 
338 
341 DT_DLL_vrfutil void DtCalculateOrientation(DtVector localNormal, double heading,
342  const DtDcm& topoToLocal, DtDcm& localOrientation);
343 
344 
345 DT_DLL_vrfutil double DtFindZInPlane(const double posx, const double posy,
346  const DtVector& pointInPlane, const DtVector& normal);
347 
352 DT_DLL_vrfutil DtVector DtIntersectLineWithPlane(const DtVector& point, const DtVector& direction,
353  const DtVector& pointInPlane, const DtVector& planeNormal,
354  bool* noIntersection = 0);
355 
360  const DtChord& chord, const DtVector& lower, const DtVector& upper,
361  DtVrfChordIntersectRecordList* intList = 0);
362 
366  const DtChord& chord,
367  const DtVector& p1, const DtVector& p2, const DtVector& p3,
368  DtVector* result = 0, double* t = 0);
369 
372  double x1, double y1, double x2, double y2,
373  double z11, double z21, double z12, double z22,
374  double x, double y);
375 
379  const DtChord& chord,
380  double x1, double y1, double x2, double y2,
381  double z11, double z21, double z12, double z22,
384  double tolerance = 1e-20);
385 
389  double heading, const DtVector& position, DtDcm& bodyToRef);
390 
396 DT_DLL_vrfutil void DtTopoEulerToBodyToLocal(const DtTaitBryan& topoEuler,
397  const Coordinate_System& coordSystem, const DtVector& localPosition,
398  DtDcm& bodyToLocalDcm);
399 
400 DT_DLL_vrfutil DtDcm DtRotZToBodyToLocal(const Coordinate_System& coordSystem, double angle,
401  const DtVector& position);
402 DT_DLL_vrfutil DtDcm DtRotYToBodyToLocal(const Coordinate_System& coordSystem, double angle,
403  const DtVector& position);
404 DT_DLL_vrfutil DtDcm DtRotXToBodyToLocal(const Coordinate_System& coordSystem, double angle,
405  const DtVector& position);
406 
409 DT_DLL_vrfutil double DtHeadingFromGeocAToGeocB(const DtVector& geocA, const DtVector& geocB);
410 
414 
415 
417 
418 DT_DLL_vrfutil double DtSin(double r);
419 
420 inline double DtCos(double r)
421 {
422  return DtSin(r + DtPI_OVER_TWO);
423 }
424 
425 DT_DLL_vrfutil double DtTan(double r);
426 DT_DLL_vrfutil double DtAsin(double x);
427 
428 inline double DtAcos(double x)
429 {
430  return DtPI_OVER_TWO + DtAsin(-x);
431 }
432 
433 DT_DLL_vrfutil double DtAtan(double x);
434 DT_DLL_vrfutil double DtAtan2(double y, double x);
435 
436 DT_DLL_vrfutil bool DtSameSign(double x, double y);
437 
438 DT_DLL_vrfutil bool DtPointInSegment(const DtVector& testPoint, const DtVector& segStart,
439  const DtVector& segEnd);
440 
441 /*******************************************************************************
447  *******************************************************************************/
448 
466  DtVector Q1, DtVector* I0 = 0, DtVector* I1 = 0,
467  double* isectParam1 = 0, double *isectParam2 = 0,
468  bool* parallel = 0, bool* collinear = 0);
469 
477 
481 
485  const Coordinate_System& coordinateSystem);
486 
489 
490 DT_DLL_vrfutil double altitudeOfPosition(const DtVector& localPosition,
491  const Coordinate_System& coordinateSystem);
492 DT_DLL_vrfutil double altitudeOfPosition(const DtPoint& localPosition,
493  const Coordinate_System& coordinateSystem);
495 
498 
499 DT_DLL_vrfutil void setAltitudeOfPosition(DtVector& localPosition, double newAltitude,
500  const Coordinate_System& coordinateSystem);
501 DT_DLL_vrfutil void setAltitudeOfPosition(DtPoint& localPosition, double newAltitude,
502  const Coordinate_System& coordinateSystem);
504 
505 
511 
514 DT_DLL_vrfutil double headingAngleTo(const DtVector& observerPosition,
515  const DtVector& targetPosition, const Coordinate_System& coordinateSystem);
516 
519 DT_DLL_vrfutil double elevationAngleTo(const DtVector& observerPosition,
520  const DtVector& targetPosition, const Coordinate_System& coordinateSystem);
521 
524 DT_DLL_vrfutil double bankAngleTo(const DtVector& observerPosition,
525  const DtVector& targetPosition, const Coordinate_System& coordinateSystem);
526 
529 DT_DLL_vrfutil double distSquaredTo2D(const DtVector& position1, const DtVector& position2,
530  const Coordinate_System& coordinateSystem);
531 
537 DT_DLL_vrfutil bool inside(const DtVector& localPoint,
538  const DtLocalVertexList& localVertexList,
539  const Coordinate_System& coordinateSystem);
540 
541 DT_DLL_vrfutil bool insideEllipsoid(const DtVector& localPoint,
542  const DtLocalVertexList& localVertexList,
543  const Coordinate_System& coordinateSystem);
544 
545 
551 DT_DLL_vrfutil bool leftOf(const DtVector& localPoint,
552  const DtLocalVertexList& localVertexList,
553  const Coordinate_System& coordinateSystem);
554 
560 DT_DLL_vrfutil double headingAngleTo(const DtVector& localPoint,
561  const DtLocalVertexList& localVertexList,
562  const Coordinate_System& coordinateSystem);
563 
568 DT_DLL_vrfutil double elevationAngleTo(const DtVector& localPoint,
569  const DtLocalVertexList& localVertexList,
570  const Coordinate_System& coordinateSystem);
571 
578 DT_DLL_vrfutil double localDistSquaredTo(const DtVector& localPoint,
579  const DtLocalVertexList& localVertexList,
580  const Coordinate_System& coordinateSystem);
581 
586 DT_DLL_vrfutil double distSquaredTo2D(const DtVector& localPoint,
587  const DtLocalVertexList& localVertexList,
588  const Coordinate_System& coordinateSystem);
589 
599 DT_DLL_vrfutil double distToBoundingVolume(const DtVector& localBaseLocation,
600  const Dt3dBoundingVolume& box, const DtTaitBryan& boxToLocalOrientation,
601  const DtVector& testPoint);
602 
608 DT_DLL_vrfutil bool intersects(const DtVector& localPoint1,
609  const DtVector& localPoint2, const DtLocalVertexList& localVertexList,
610  const Coordinate_System& coordinateSystem);
611 
614 DT_DLL_vrfutil DtListItem* getClosestVertex2D(const DtVector& localPoint,
615  const DtLocalVertexList& localVertexList,
616  const Coordinate_System& coordinateSystem);
617 
621 DT_DLL_vrfutil bool getClosestLine2D(const DtVector& localPoint,
622  DtVector& localLinePt1, DtVector& localLinePt2,
623  const DtLocalVertexList& localVertexList,
624  const Coordinate_System& coordinateSystem);
625 
630 DT_DLL_vrfutil double distanceSquaredPointToLine2D(const DtVector& localPoint,
631  const DtVector& localLinePt1, const DtVector& localLinePt2,
632  const Coordinate_System& coordinateSystem);
633 
637  const DtVector& topoLinePt1, const DtVector & topoLinePoint2);
638 
642 DT_DLL_vrfutil double distanceSquaredPointToPoint2D(const DtVector& localLinePt1,
643  const DtVector& localLinePt2, const Coordinate_System& coordinateSystem);
644 
650 DT_DLL_vrfutil double closestPointAlongChord2D( const DtPoint& chordStart,
651  const DtPoint& chordEnd,
652  const DtPoint& testPoint, DtPoint & closestPoint,
653  const Coordinate_System& coordSys);
654 
668  const DtVector& point, const Coordinate_System& coordinateSystem,
669  DtLocalVectorIterator& localVertexIterator);
670 
675  const DtVector& point, const DtLocalVertexList& vertices,
676  int startingIndex, bool reverseDirection,
677  const Coordinate_System& coordinateSystem);
678 
687 
688 inline double dotProd2D(const DtVector& v1, const DtVector& v2)
689 {
690  return v1[0]*v2[0] + v1[1]*v2[1];
691 }
692 
693 inline double magnitudeSquared2D(const DtVector &v)
694 {
695  return dotProd2D(v, v);
696 }
697 
698 inline double crossProduct2D(const DtVector& v1, const DtVector& v2)
699 {
700  return v1[0]*v2[1] - v1[1]*v2[0];
701 }
702 
704 {
705  DtVector res(v[1], -v[0], v[2]);
706  return res;
707 }
708 
709 inline void normalize2D(DtVector& v)
710 {
711  double length = sqrt(magnitudeSquared2D(v));
712  if (length > 0.0)
713  {
714  v[0] /= length;
715  v[1] /= length;
716  }
717 }
718 
720 inline double vectorAngle2D(DtVector& v)
721 {
722  return DtModPerLo(atan2(v[1], v[0]), -M_PI, M_PI);
723 }
727 
739 DT_DLL_vrfutil void localVectorToGeocentricVector(const DtVector &geocentricPosition,
740  const DtVector& localVector, const Coordinate_System& coordinateSystem,
741  DtVector& geocentricVector);
742 
755  const DtTaitBryan& localOrientation,
756  const Coordinate_System& coordinateSystem,
757  DtTaitBryan& geocentricOrientation);
758 
763  const DtDcm& newOrientation,
764  const DtDcm& oldOrientation, double dT);
765 
768 DT_DLL_vrfutil double calculateSpeedForArrival(double distance, double currentSpeed, double acceleration,
769  double deceleration, double timeToArrive);
770 
781 DT_DLL_vrfutil void geocentricVectorToLocalVector(const DtVector &geocentricPosition,
782  const DtVector& geocentricVector, const Coordinate_System& coordinateSystem,
783  DtVector& localVector);
784 
797  const DtVector& geocentricPosition,
798  const DtTaitBryan& geocentricOrientation,
799  const Coordinate_System& coordinateSystem,
800  DtTaitBryan& localOrientation);
801 
803 DT_DLL_vrfutil int DtIntRandom(int iFrom, int iTo);
804 
806 DT_DLL_vrfutil bool DtIsValidNumber(double x);
807 
810 DT_DLL_vrfutil double DtHoursMinutesSeconds2Seconds(double hours, double minutes, double seconds);
811 
813 DT_DLL_vrfutil void DtSeconds2HoursMinutesSeconds(double totalSeconds, int& hoursOut,
814  int& minutesOut, double& secondsOut);
815 
817 DT_DLL_vrfutil unsigned int DtVRFGetThreadId();
818 
820 DT_DLL_vrfutil double calculateLengthOfLine(const std::vector<DtVector>& points);
821 
824 DT_DLL_vrfutil double calculateLengthOfLine(const Coordinate_System& coordinateSystem, const std::vector<DtVector>& points);
825 
828 DT_DLL_vrfutil void calculateLengthAndWidthOfShape(const Coordinate_System& coordSytem, const std::vector<DtVector>& points,
829  double& length, double& width);
830 
832 DT_DLL_vrfutil void calculateLengthAndWidthOfShape(const std::vector<DtVector>& points,
833  double& length, double& width);
834 
837 
843  const DtVector & currentLocalPos, const DtVector & localVelocity,
844  const Coordinate_System& coordinateSystem);
845 
857 DT_DLL_vrfutil double illuminationValueAtPosition(const DtGeodeticCoord& position, time_t time,
858  double nighttimeMaximum = 0.1, double illuminationMinimum = 0.001, bool useDayNightIlluminationModel = true,
859  int* sunstate = 0);
860 
867 DT_DLL_vrfutil bool calculateEstimatedTot(const DtVector& localCurrentPos, const DtVector& localTargetPos,
868  double orderedSpeed, double currentSimTime, double currentSpeed, double acceleration,
869  const Coordinate_System& coordinateSystem, double& totResult, double& speedResult);
870 
877 DT_DLL_vrfutil bool calculateEstimatedTot(const DtVector& localCurrentPos, const DtLocalVertexList& localVertexList,
878  double orderedSpeed, double currentSimTime, double currentSpeed, double acceleration,
879  const Coordinate_System& coordinateSystem, double& totResult, double& speedResult);
880 
882 inline bool checkForNAN(const DtVector& vector)
883 {
884  if (boost::math::isnan(vector.x()) ||
885  boost::math::isnan(vector.y()) ||
886  boost::math::isnan(vector.z()))
887  {
888  return true;
889  }
890  else
891  {
892  return false;
893  }
894 }
895 
897 inline bool checkForNAN(const DtTaitBryan& tb)
898 {
899  if (boost::math::isnan(tb.phi()) ||
900  boost::math::isnan(tb.psi()) ||
901  boost::math::isnan(tb.theta()))
902  {
903  return true;
904  }
905  else
906  {
907  return false;
908  }
909 }
910 
912 inline bool checkForNAN(const DtDcm& dcm)
913 {
914  if (boost::math::isnan(dcm[0].x()) ||
915  boost::math::isnan(dcm[0].y()) ||
916  boost::math::isnan(dcm[0].z()) ||
917  boost::math::isnan(dcm[1].x()) ||
918  boost::math::isnan(dcm[1].y()) ||
919  boost::math::isnan(dcm[1].z()) ||
920  boost::math::isnan(dcm[2].x()) ||
921  boost::math::isnan(dcm[2].y()) ||
922  boost::math::isnan(dcm[2].z()))
923  {
924  return true;
925  }
926  else
927  {
928  return false;
929  }
930 }
931 
933 DT_DLL_vrfutil std::map<std::string, std::string> convertToStdStringMap(const std::map<DtString, DtString>& source,
934  bool convertValueForXml = false);
935 
938 
939 #include <boost/algorithm/string.hpp>
940 template< typename SequenceSequenceT, typename RangeT, typename PredicateT >
941 inline SequenceSequenceT& oldBoostSplit(
942  SequenceSequenceT& Result,
943  RangeT& Input,
944  PredicateT Pred,
945  boost::algorithm::token_compress_mode_type eCompress=boost::algorithm::token_compress_off )
946 {
947  if (Input.length())
948  {
949  ::boost::algorithm::iter_split(
950  Result,
951  Input,
952  ::boost::algorithm::token_finder( Pred, eCompress ) );
953  }
954 
955  return Result;
956 }
957 
967 DT_DLL_vrfutil bool isPointWithinCorridor(double& heading, double corridorWidth,
968  double corridorHeight, const DtVector& localPoint, const DtLocalVertexList& localVertexList,
969  const Coordinate_System& coordinateSystemRef);
970 
978 DT_DLL_vrfutil bool isChordWithinCorridor(const DtChord& localChord, const DtLocalVertexList& localVertexList,
979  double corridorWidth, double corridorHeight, const Coordinate_System& coordinateSystemRef);
980 
988 DT_DLL_vrfutil bool isPointRoughlyWithinCorridor(double corridorWidth,
989  double corridorHeight, const DtVector& localPoint, const DtExtent & lineExtent,
990  const Coordinate_System& coordinateSystemRef);
991 
999 DT_DLL_vrfutil bool isChordRoughlyWithinCorridor(const DtChord& localChord, const DtExtent& lineExtent,
1000  double corridorWidth, double corridorHeight, const Coordinate_System& coordinateSystemRef);
1001 
1006 DT_DLL_vrfutil double getHeadingFromGeocentric(const DtVector& firstPoint, const DtVector& secondPoint);
1007 
1010 DT_DLL_vrfutil bool calculateGeometricCenter(const DtVertexList& vertices, DtVector& geometricCenter);
DT_DLL_vrfutil void DtParallelAxisTheorem(DtConstDcm inertiaInOriginalFrame, double mass, const DtVector &newToOriginal, DtDcm &inertiaInNewFrame)
double DtVecMag(const DtVector &vec)
Definition: kinematicTools.h:200
DT_DLL_vrfutil char * DtGetFilenameExtension(char *fileName, char *extension)
Extract the extension from the fileName, excluding the period(.). Returns 0 if no period is found...
NOTE: This entire class is deprecated, in favor of Dt3dChord.
Definition: chord.h:40
double DtGetGain()
Definition: kinematicTools.h:265
#define DtSIGN(x)
Boost includes.
Definition: kinematicTools.h:24
DT_DLL_vrfutil bool isChordWithinCorridor(const DtChord &localChord, const DtLocalVertexList &localVertexList, double corridorWidth, double corridorHeight, const Coordinate_System &coordinateSystemRef)
This function determines whether a given chord intersects with the volume defined by the corridor...
DtVrfChordIntersectionRecord represents a list of DtChordIntersectRecords. This is useful for followi...
Definition: vrfChordIntersectRecordList.h:31
double DtOutput(double input)
Definition: kinematicTools.h:267
DT_DLL_vrfutil void DtResolve(const DtVector &forcePos, const DtVector &force, DtVectorRef resultTorqueAboutOrigin)
DT_DLL_vrfutil bool DtIsValidNumber(double x)
Returns true if the number is not infinite or not nan.
DT_DLL_vrfutil void localOrientationToGeocentricOrientation(const DtVector geocentricPosition, const DtTaitBryan &localOrientation, const Coordinate_System &coordinateSystem, DtTaitBryan &geocentricOrientation)
Transforms an orientation matrix in for going from body to local coordinates (database coordinates) t...
DT_DLL_vrfutil double illuminationValueAtPosition(const DtGeodeticCoord &position, time_t time, double nighttimeMaximum=0.1, double illuminationMinimum=0.001, bool useDayNightIlluminationModel=true, int *sunstate=0)
Give a geodetic coordinate and a UTC time, return an illumination value (0 - 1) at that position base...
DT_DLL_vrfutil const DtDcm & ned2enu()
DT_DLL_vrfutil double getHeadingFromGeocentric(const DtVector &firstPoint, const DtVector &secondPoint)
This function returns the heading of an object with two points in geocentric Basically this is used t...
#define DtPI_OVER_TWO
Definition: kinematicTools.h:29
DT_DLL_vrfutil bool setCurrentVertexToClosestInDirectionOfTraversal(const DtVector &point, const Coordinate_System &coordinateSystem, DtLocalVectorIterator &localVertexIterator)
Sets current vertex in localVertexIterator to that vertex closest to the given point, in the direction of travel. This may or may not be the overall closest vertex, depending on whether or not the closest vertex is &#39;behind&#39; the given point. If there is no &#39;next&#39; vertex along the direction of traversal, then sets that to be the current vertex. If there is a next vertex along the direction of traversal, then tests the heading angle formed between a vector from the point to the current vertex and the vector going from the current vertex to the next. If this angle is &gt; 0 (opposite the direction of traversal), then sets the current vertex to be the next vertex (because moving to current vertex would require turning opposite to the sense of the traversal). Otherwise, sets the current vertex to be the overall closest vertex (closest vertex is already in the direction of the traversal).
double DtVecMagSquared(const DtVector &vec)
Definition: kinematicTools.h:205
DT_DLL_vrfutil void DtRotateInertia(DtDcm inertiaInOriginalFrame, DtDcm originalToNew, DtDcm &inertiaInNewFrame)
I in frame B.
DT_DLL_vrfutil double DtAsin(double x)
DT_DLL_vrfutil DtListItem * getClosestVertex2D(const DtVector &localPoint, const DtLocalVertexList &localVertexList, const Coordinate_System &coordinateSystem)
Sets vertex to be the vertex closest in 2D to point in localVertexList. Position and vertex list must...
double vectorAngle2D(DtVector &v)
This is a heading if v is in topo coordinates.
Definition: kinematicTools.h:720
DT_DLL_vrfutil void setAltitudeOfPosition(DtVector &localPosition, double newAltitude, const Coordinate_System &coordinateSystem)
Alters localPosition to have the specified altitude (above 0 altitude). localPosition must be in the ...
DT_DLL_vrfutil void DtRotZ2(double sinAng, double cosAng, DtDcm &rotMat)
DT_DLL_vrfutil void DtRotBodyZ(double angle, DtDcm &rotMat)
DT_DLL_vrfutil bool DtInSegment(DtVector P, DtVector P0, DtVector P1)
DtInSegment(): determine if a collinear Point P is inside a Segment P0 to P1.
DT_DLL_vrfutil void DtRotX2(double sinAng, double cosAng, DtDcm &rotMat)
DT_DLL_vrfutil double altitudeOfPosition(const DtVector &localPosition, const Coordinate_System &coordinateSystem)
DT_DLL_vrfutil double distToBoundingVolume(const DtVector &localBaseLocation, const Dt3dBoundingVolume &box, const DtTaitBryan &boxToLocalOrientation, const DtVector &testPoint)
Returns the distance of the testPoint to the bounding volume. This is the perpendicular distance to t...
DT_DLL_vrfutil void DtRotY2(double sinAng, double cosAng, DtDcm &rotMat)
double poleFreq
Definition: kinematicTools.h:246
File: lclVecIter.h.
Definition: localVectorIterator.h:25
DT_DLL_vrfutil DtPoint DtVector2DtPoint(const DtVector &p)
DtVector rotateRight2D(const DtVector &v)
Definition: kinematicTools.h:703
DT_DLL_vrfutil double DtSin(double r)
DT_DLL_vrfutil double maxAccelerationFromConstraint(const double deceleration, const double dt, const double ownSpeed, const double distance, const double targetSpeed, const double errorDecelValue=-1e10)
This function computes the maximum acceleration that an entity can use during the next tick and still...
DT_DLL_vrfutil double gRand()
Generates a Gaussian random number. Calls centralLimitGaussian() with the number of draws set to 6...
DT_DLL_vrfutil bool DtPointInSegment(const DtVector &testPoint, const DtVector &segStart, const DtVector &segEnd)
DT_DLL_vrfutil double DtPIDServo(double error, double errorIntegral, double velocity, double proportionalGain, double integralGain, double derivativeGain, double biasForce=0.0, double *control=0)
I in frame B.
DT_DLL_vrfutil const DtDcm & enu2ned()
DT_DLL_vrfutil bool insideEllipsoid(const DtVector &localPoint, const DtLocalVertexList &localVertexList, const Coordinate_System &coordinateSystem)
DT_DLL_vrfutil double DtFindZInPlane(const double posx, const double posy, const DtVector &pointInPlane, const DtVector &normal)
DT_DLL_vrfutil unsigned int DtIntersectChordWithBilinearSurface(const DtChord &chord, double x1, double y1, double x2, double y2, double z11, double z21, double z12, double z22, DtVrfChordIntersectionRecord &isect1, DtVrfChordIntersectionRecord &isect2, double tolerance=1e-20)
Find intersection between bilinear interpolated surface and line.
DT_DLL_vrfutil double headingAngleTo(const DtVector &observerPosition, const DtVector &targetPosition, const Coordinate_System &coordinateSystem)
Local(database) functions for performing topocentric 2-D geometry operations on points and vertex li...
DT_DLL_vrfutil DtDcm DtRotYToBodyToLocal(const Coordinate_System &coordSystem, double angle, const DtVector &position)
DT_DLL_vrfutil double centralLimitGaussian(int numDraws)
Generates a Gaussian random number (an approximation), from a series of n uniform random number draws...
DT_DLL_vrfutil double DtBilinearInterpolate(double x1, double y1, double x2, double y2, double z11, double z21, double z12, double z22, double x, double y)
Returns result of bilinear interpolation on grid defined by (x1,y1) to (x1,y2) at point (x...
double DtExponent
Definition: kinematicTools.h:274
A nonlinearity of zero gives you a simple linear relation: output = gain * input. Increasing positive...
Definition: kinematicTools.h:252
DT_DLL_vrfutil DtVector localGravityAcceleration(const DtVector &localPosition, const Coordinate_System &coordinateSystem)
Terrain related functions.
const DtVector & getPrevOutput()
Definition: kinematicTools.h:243
The DtExtent represents an axis-aligned 3d bounding box.
Definition: extent.h:43
DT_DLL_vrfutil bool leftOf(const DtVector &localPoint, const DtLocalVertexList &localVertexList, const Coordinate_System &coordinateSystem)
Returns true if localPoint is left of the localVertexList in 2D. Always returns false if this has onl...
DT_DLL_vrfutil bool DtChordIntersectsExtentArea(const DtChord &chord, const DtVector &lower, const DtVector &upper, DtVrfChordIntersectRecordList *intList=0)
Returns true if the chord intersects the extent area (i.e. including the interior points)...
DT_DLL_vrfutil void Dt3DDynamicsTick(const DtVector &LinearForce, double vehicleMass, DtVectorRef newLinearAcceleration, const DtVector &torque, DtConstDcm vehicleInertia, DtVectorRef newAngAcceleration)
DT_DLL_vrfutil void DtRotBodyX(double angle, DtDcm &rotMat)
Returns a matrix for converting from the new system to the old system where both systems are using bo...
DT_DLL_vrfutil DtVector DtPoint2DtVector(const DtPoint &p)
DT_DLL_vrfutil double calculateLengthOfLine(const std::vector< DtVector > &points)
Given the points return the length of the line. Assumes points are geocentric.
DT_DLL_vrfutil double distanceSquaredPointToPoint2D(const DtVector &localLinePt1, const DtVector &localLinePt2, const Coordinate_System &coordinateSystem)
Returns the distance^2 from point1 to point2 in 2D. All points must be in the coordinate system given...
double DtGain
Definition: kinematicTools.h:273
DT_DLL_vrfutil int DtIntersect2D_Segments(DtVector P0, DtVector P1, DtVector Q0, DtVector Q1, DtVector *I0=0, DtVector *I1=0, double *isectParam1=0, double *isectParam2=0, bool *parallel=0, bool *collinear=0)
Description:
DT_DLL_vrfutil bool calculateEstimatedTot(const DtVector &localCurrentPos, const DtVector &localTargetPos, double orderedSpeed, double currentSimTime, double currentSpeed, double acceleration, const Coordinate_System &coordinateSystem, double &totResult, double &speedResult)
Returns the estimated time-on-target to a local target position, given local current position...
DT_DLL_vrfutil double elevationAngleTo(const DtVector &observerPosition, const DtVector &targetPosition, const Coordinate_System &coordinateSystem)
Returns the elevation angle in radians from observer position to target position. Positions must be i...
DT_DLL_vrfutil void DtTrigInit()
Functions for trig table lookups.
DT_DLL_vrfutil double DtHeadingFromGeocAToGeocB(const DtVector &geocA, const DtVector &geocB)
Expects geocentric coordinates. Standing at point A, returns the heading along which you would need t...
DT_DLL_vrfutil double DtAtan(double x)
double DtCos(double r)
Definition: kinematicTools.h:420
DT_DLL_vrfutil bool inside(const DtVector &localPoint, const DtLocalVertexList &localVertexList, const Coordinate_System &coordinateSystem)
Returns true if localPoint is inside localVertexList in 2D. Always returns false if localVertexList i...
DT_DLL_vrfutil void DtRotBodyY(double angle, DtDcm &rotMat)
DT_DLL_vrfutil bool DtIntersectChordWithTriangle(const DtChord &chord, const DtVector &p1, const DtVector &p2, const DtVector &p3, DtVector *result=0, double *t=0)
Returns the point of intersection between a chord and a triangle. Takes into account end points of ch...
DtVector prevOutput
Definition: kinematicTools.h:247
DT_DLL_vrfutil unsigned int DtVRFGetThreadId()
Gets the current thread id.
DT_DLL_vrfutil bool isPointWithinCorridor(double &heading, double corridorWidth, double corridorHeight, const DtVector &localPoint, const DtLocalVertexList &localVertexList, const Coordinate_System &coordinateSystemRef)
This function determines whether a given point is within a corridor and if so it populates the headin...
DT_DLL_vrfutil void DtRotY(double angle, DtDcm &rotMat)
DT_DLL_vrfutil DtVector DtCalculateRotationalVelocity(const DtDcm &newOrientation, const DtDcm &oldOrientation, double dT)
Calculates rotational velocity from new and old orientation body DCMs. Which coordinate system is use...
Definition: coordSystem.h:54
DT_DLL_vrfutil double distanceSquaredPointToLine2D(const DtVector &localPoint, const DtVector &localLinePt1, const DtVector &localLinePt2, const Coordinate_System &coordinateSystem)
Returns the distance^2 from point to linePt1-linePt2 in topographic 2D. All points must be in the giv...
void DtSetGain(double gain)
Definition: kinematicTools.h:262
DT_DLL_vrfutil void DtBlockInertia(const double xLen, const double yLen, const double zLen, const double mass, DtDcm &inertia)
DT_DLL_VRVCORE double distance(const makVrv::DtCoordinateSystem &, const DtVector &from, const DtVector &to)
Returns the distance from the two points. Coordinates are in local database coordinates The coordinat...
DT_DLL_vrfutil double DtTan(double r)
DT_DLL_vrfutil double angle(double vec1[3], double vec2[3])
Definition: localVector.h:25
DT_DLL_vrfutil void DtVecLimit(DtVectorRef vec, double limit)
If mag(vec)&gt;limit, shortens vector to mag = limit.
DT_DLL_vrfutil void localVectorToGeocentricVector(const DtVector &geocentricPosition, const DtVector &localVector, const Coordinate_System &coordinateSystem, DtVector &geocentricVector)
local(database)/geocentric conversion functions
class DtVertexList:
Definition: vertexList.h:22
DT_DLL_vrfutil void DtBodyToRefFromHeadingAndPosition(const Coordinate_System &coordSystem, double heading, const DtVector &position, DtDcm &bodyToRef)
Calculates a Dcm for rotating from a body coordinate system, defined by a given heading (no pitch or ...
DT_DLL_vrfutil void geocentricOrientationToLocalOrientation(const DtVector &geocentricPosition, const DtTaitBryan &geocentricOrientation, const Coordinate_System &coordinateSystem, DtTaitBryan &localOrientation)
Transforms an orientation matrix in for going from body to local coordinates (database coordinates) t...
DT_DLL_vrfutil double closestPointAlongChord2D(const DtPoint &chordStart, const DtPoint &chordEnd, const DtPoint &testPoint, DtPoint &closestPoint, const Coordinate_System &coordSys)
Finds the closest point along the chord defined by chordStart and chordEnd to testPoint. This point is returned as closestPoint, and the distance between testPoint and closestPoint is returned. All calculations are done in 2D, and all points must be in the coordinate system provided.
DT_DLL_vrfutil DtVector DtIntersectLineWithPlane(const DtVector &point, const DtVector &direction, const DtVector &pointInPlane, const DtVector &planeNormal, bool *noIntersection=0)
Returns the point of intersection between a line (defined by a point and a direction vector) and a pl...
DT_DLL_vrfutil double maxAccelerationFromInterceptConstraint(const double deceleration, const double dt, const double ownSpeed, const double distance, const double targetSpeed, const double errorDecelValue=-1e10)
This function is like maxAccelerationFromConstraint, but it assumes that the goal is to intercept a t...
DT_DLL_vrfutil void DtSeconds2HoursMinutesSeconds(double totalSeconds, int &hoursOut, int &minutesOut, double &secondsOut)
Converts totalSeconds into hours, minutes, and seconds.
double dotProd2D(const DtVector &v1, const DtVector &v2)
---------------------------------------------------------------------------- 2D functions on 3D topo...
Definition: kinematicTools.h:688
double DtFloat64
Definition: vrvControlStructTypes.h:36
DT_DLL_vrfutil void DtEuler_to_BodyToLocalRef(const DtTaitBryan &euler, DtDcm &body2ref)
DT_DLL_vrfutil int closestVertexInDirectionOfTraversal(const DtVector &point, const DtLocalVertexList &vertices, int startingIndex, bool reverseDirection, const Coordinate_System &coordinateSystem)
Returns the index of the vertex in the list that is closest to the given point, in the specified dire...
bool checkForNAN(const DtVector &vector)
Checks for not a number (NAN) values.
Definition: kinematicTools.h:882
double DtAcos(double x)
Definition: kinematicTools.h:428
DT_DLL_vrfutil double calculateSpeedForArrival(double distance, double currentSpeed, double acceleration, double deceleration, double timeToArrive)
Given a distance, current speed, max acceleration, max deceleration, and desired arrival time...
DT_DLL_vrfutil DtDcm DtRotZToBodyToLocal(const Coordinate_System &coordSystem, double angle, const DtVector &position)
void normalize2D(DtVector &v)
Definition: kinematicTools.h:709
DT_DLL_vrfutil double gaussianRandom()
Generates a Gaussian random number using the Marsaglia polar method. See e.g. Wikipedia (http://en...
const char * source
Definition: lz4.h:442
DT_DLL_vrfutil int DtIntRandom(int iFrom, int iTo)
Returns a random number from the base to the max.
double crossProduct2D(const DtVector &v1, const DtVector &v2)
Definition: kinematicTools.h:698
DT_DLL_vrfutil void Dt3DKinematicsTick(const DtVector &Position, const DtVector &LinearVelocity, const DtVector &LinearAcceleration, DtConstDcm orientation, const DtVector &angVelocity, const DtVector &angAcceleration, double DeltaTime, DtVectorRef newPosition, DtVectorRef newVelocity, DtDcm &newOrientation, DtVectorRef newAngVelocity)
Definition: asyncJobServer.h:39
DT_DLL_vrfutil void DtOrientationFromThreePointsAndHeading(const DtVector &leftPoint, const DtVector &rightPoint, const DtVector &otherPoint, double cosHeading, double sinHeading, DtDcm &orientation, bool upsideDown=false)
This form preserves heading; the previous one does not!
DT_DLL_vrfutil void DtRotZ(double angle, DtDcm &rotMat)
DT_DLL_vrfutil void DtBodyToLocalRef_to_Euler(DtConstDcm body2ref, DtTaitBryan *e)
DT_DLL_vrfutil double DtHoursMinutesSeconds2Seconds(double hours, double minutes, double seconds)
DT_DLL_vrfutil std::map< std::string, std::string > convertToStdStringMap(const std::map< DtString, DtString > &source, bool convertValueForXml=false)
Converts DtString to std::string map.
DT_DLL_vrfutil bool DtSameSign(double x, double y)
DT_DLL_vrfutil void DtDcmFromRows(DtDcm &result, const DtVector &row1, const DtVector &row2, const DtVector &row3)
DT_DLL_vrfutil void DtGravityForce(double mass, DtVectorRef returnForce)
DT_DLL_vrfutil DtFloat64 DtFastDist(const DtVector &pt1, const DtVector &pt2)
DT_DLL_vrfutil void DtCalculateOrientation(DtVector localNormal, double heading, const DtDcm &topoToLocal, DtDcm &localOrientation)
Calculates the orientation from the specified local normal and heading.
Definition: vrfChordIntersectionRecord.h:19
double magnitudeSquared2D(const DtVector &v)
Definition: kinematicTools.h:693
DT_DLL_vrfutil void DtSpacesToDashes(char *str)
Inline versions of some functions in LibMatrix. NOTE: that unlike the LibMatrix counterpart.
DT_DLL_vrfutil double distanceSquaredPointToLineTopographic(const DtVector &topoPoint, const DtVector &topoLinePt1, const DtVector &topoLinePoint2)
Same as distanceSquaredPointToLine2D, except that the points are assumed to be in topographic coordin...
double DtGetNonLinearity()
Definition: kinematicTools.h:266
DT_DLL_vrfutil double bankAngleTo(const DtVector &observerPosition, const DtVector &targetPosition, const Coordinate_System &coordinateSystem)
Returns the bank angle in radians from observer position to target position. Positions must be in the...
DT_DLL_vrfutil bool getClosestLine2D(const DtVector &localPoint, DtVector &localLinePt1, DtVector &localLinePt2, const DtLocalVertexList &localVertexList, const Coordinate_System &coordinateSystem)
Sets linePt1 and linePt2 to be the vertices of the line segment closest in 2D to point in localVertex...
DT_DLL_vrfutil bool calculateGeometricCenter(const DtVertexList &vertices, DtVector &geometricCenter)
Calculates the geometric center of the given vertex list. Returns true. Will use strictly geocentric ...
DT_DLL_vrfutil bool isPointRoughlyWithinCorridor(double corridorWidth, double corridorHeight, const DtVector &localPoint, const DtExtent &lineExtent, const Coordinate_System &coordinateSystemRef)
This function roughly determines whether a point may be within a corridor.
SequenceSequenceT & oldBoostSplit(SequenceSequenceT &Result, RangeT &Input, PredicateT Pred, boost::algorithm::token_compress_mode_type eCompress=boost::algorithm::token_compress_off)
Replace boost split with version that returns an empty set if the supplied string has no length...
Definition: kinematicTools.h:941
DT_DLL_vrfutil void geocentricVectorToLocalVector(const DtVector &geocentricPosition, const DtVector &geocentricVector, const Coordinate_System &coordinateSystem, DtVector &localVector)
Transforms a vector in geocentric coordinates to local (database) coordinates. Inputs: geocentricPosi...
DT_DLL_vrfutil bool DtCalculateNormal(const DtVector &pointA, const DtVector &pointB, const DtVector &pointC, DtVector &normal)
Calculates the normal formed by the plane containing points A, B, and C.
#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
DT_DLL_vrfutil double DtAtan2(double y, double x)
DT_DLL_vrfutil void DtDcmFromColumns(DtDcm &result, const DtVector &col1, const DtVector &col2, const DtVector &col3)
DT_DLL_vrfutil bool isChordRoughlyWithinCorridor(const DtChord &localChord, const DtExtent &lineExtent, double corridorWidth, double corridorHeight, const Coordinate_System &coordinateSystemRef)
This function determines whether a given chord roughly intersects with the volume defined by the corr...
DT_DLL_vrfutil bool DtPointInCone(const DtVector &coneEndPosition, const DtVector &coneAxis, const double coneAngle, const DtVector &testPoint, double *testAnglePtr=0)
Test if a point is in a cone. All quantities are assumed to be in the same coordinate system...
DtNonLinearOutputType(double nonlinearity, double gain=1.0)
Definition: kinematicTools.h:255
DT_DLL_vrfutil bool intersects(const DtVector &localPoint1, const DtVector &localPoint2, const DtLocalVertexList &localVertexList, const Coordinate_System &coordinateSystem)
Returns true if the line segment localPoint1-localPoint2 intersects any line segment in localVert...
DT_DLL_vrfutil double localDistSquaredTo(const DtVector &localPoint, const DtLocalVertexList &localVertexList, const Coordinate_System &coordinateSystem)
Returns the distance from localPoint to the closest vertex in localVertexList. If localVertexList is ...
DT_DLL_vrfutil bool DtPointInWedge(const DtVector &wedgeEndPosition, const DtVector &wedgeAxis, const double wedgeAngle, const DtVector &testPoint)
DT_DLL_vrfutil DtVector calculateWorldVelocityFromPosition(const DtVector &currentWorldPos, const DtVector &currentLocalPos, const DtVector &localVelocity, const Coordinate_System &coordinateSystem)
If the database is in a projected system, error is introduced in the velocity when converting it to g...
DT_DLL_vrfutil void calculateLengthAndWidthOfShape(const Coordinate_System &coordSytem, const std::vector< DtVector > &points, double &length, double &width)
Given points and the coordinate system those points are in find the length/width of the given polygon...
Definition: kinematicTools.h:228
DT_DLL_vrfutil void DtRotX(double angle, DtDcm &rotMat)
double getPole()
Definition: kinematicTools.h:242
class DtLocalVertexList:
Definition: localVertexList.h:20
DT_DLL_vrfutil bool DtVectorIsZero(const DtVector &v, double tolerance=0.0)
void DtSetNonLinearity(double nonlinearity)
Definition: kinematicTools.h:263
DT_DLL_vrfutil void DtTopoEulerToBodyToLocal(const DtTaitBryan &topoEuler, const Coordinate_System &coordSystem, const DtVector &localPosition, DtDcm &bodyToLocalDcm)
Calculates the rotation matrix for going from a body to local (database) reference frame...
DT_DLL_vrfutil DtDcm DtRotXToBodyToLocal(const Coordinate_System &coordSystem, double angle, const DtVector &position)
Definition: point.h:34
DT_DLL_vrfutil void DtOrientationFromThreePoints(const DtVector &leftPoint, const DtVector &rightPoint, const DtVector &rearPoint, DtDcm &orientation, bool yIsForward=false)
Given the world position of the three big-wheel points, this returns the resulting orientation of big...
DT_DLL_vrfutil void DtCircleVerts(double radius, int npts, double *xCoords, double *yCoords)
DT_DLL_vrfutil double distSquaredTo2D(const DtVector &position1, const DtVector &position2, const Coordinate_System &coordinateSystem)
Returns the (2D) squared distance between given position. Positions must be in the given coordinate s...

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)