VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
railSplineCalculator.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2010 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 #pragma once
6 
15 
16 #include <vector>
17 #include <list>
18 #include <matrix/vlVector.h>
19 #include <matrix/vlTaitBryan.h>
20 #include <matrix/coordTransform.h>
21 
22 class DtRailSegment;
23 class Coordinate_System;
24 
26 {
27 public:
29 
30  virtual ~DtRailSplineCalculator();
31 
33  virtual bool setUpTurnSpline(const DtRailSegment * currentSeg,const DtRailSegment * nextSeg,
34  const int currentLane,const int desiredLane,Coordinate_System * coordinateSystem,bool useDefinedEntry = false,
35  DtVector entryPt = DtVector::zero());
36 
38  virtual bool setUpLaneSwitchSpline(const DtVector& projectedLocation,const DtRailSegment *currentSeg,const double bvolHL,
39  const int currentLane,const int desiredLane,Coordinate_System * coordinateSystem);
40 
41  virtual bool recalculateSpline(const DtRailSegment * currentSeg,const DtRailSegment * nextSeg, const int currentLane,
42  const int passingLane,const int previousSwitchDirection,Coordinate_System * coordinateSystem);
43 
44  virtual bool modifySpline(const DtVector & currentLocalPos,const DtRailSegment * currentSeg,const DtRailSegment * nextSeg, const int currentLane,const int passingLane,
45  Coordinate_System * coordinateSystem);
46 
50  virtual void calculateTurnPath(const DtVector & pathEntryPt,const DtVector & pathMidPt,const DtVector & pathExitPt);
51 
54  virtual DtVector determinePositionAlongCurve(double distance);
55 
57  virtual std::list<DtVector> getCurvePoints();
58 
60  virtual double calculateTurnHeading(double oldHeading);
61 
62  virtual double calculateLaneSwitchHeading(double oldHeading);
63 
64  virtual bool finishTurn(double oldHeading, double newHeading);
65  virtual bool finishLaneSwitch(double oldHeading,double newHeading);
66 
69  virtual const DtVector & splineLocalEntryPoint() const;
70  virtual const DtVector & splineLocalMidPoint() const;
71  virtual const DtVector & splineLocalExitPoint() const;
72 
73  virtual const int turnEntryLane() const;
74  virtual void setDrivingOnLeft(bool left);
75  virtual bool drivingOnLeft() const;
76 
78  virtual void setTurnDirection(const int dir);
79  virtual const int turnDirection() const;
80 
81  virtual void setLocalToTopoTransform(const DtCoordTransform & transform);
82  virtual void setTopoToLocalTransform(const DtCoordTransform & transform);
83 
84  virtual void clear();
85 
86 private:
89  const DtRailSplineCalculator& orig);
90 
92  DtRailSplineCalculator& operator=(
93  const DtRailSplineCalculator& orig);
94 
95 protected:
100  double mySplineTime;
104 
109  DtCoordTransform myLocalToTopoTransform;
110  DtCoordTransform myTopoToLocalTransform;
112 
120 
126  std::vector<DtVector> mySplineCoefficents;
127 };
128 
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
std::vector< DtVector > mySplineCoefficents
The spline coefficents used to determine a position along a curve.
Definition: railSplineCalculator.h:126
DtRailSegment are segments entities can follow when using the rail movement system.
Definition: railSegment.h:23
DtCoordTransform myLocalToTopoTransform
These aren&#39;t really topographic coordinate transforms; they transform to from a coordinate system tha...
Definition: railSplineCalculator.h:109
double mySplineTime
Keeps track of the parametric time, where we are on the curve.
Definition: railSplineCalculator.h:100
DtVector myLocalMidPoint
Definition: railSplineCalculator.h:123
double myHeadingShift
This is the difference between our current heading and desired heading.
Definition: railSplineCalculator.h:103
Definition: coordSystem.h:54
DT_DLL_VRVCORE double distance(const makVrv::DtCoordinateSystem &, const DtVector &from, const DtVector &to)
Returns the distance from the two points.
double myTotalSplineDistance
This is the distance along the current segment from turn entry point to end point plus the the distan...
Definition: railSplineCalculator.h:98
DtVector myLocalEntryPoint
The points used to generate the spline in local coordinates.
Definition: railSplineCalculator.h:122
DtCoordTransform myTopoToLocalTransform
Definition: railSplineCalculator.h:110
int myTurnDirection
Direction of the curve–going to left(-1) or right(1)
Definition: railSplineCalculator.h:114
bool myDrivingOnLeft
Are we driving on the left or right side of the road.
Definition: railSplineCalculator.h:119
DtVector myLocalExitPoint
Definition: railSplineCalculator.h:124
int myTurnEntryLane
Lane we use to enter the turn.
Definition: railSplineCalculator.h:116
Definition: railSplineCalculator.h:25

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)