VR-Forces 5.0.3 Developer's Guide
 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. Used to determine the 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. Coordinates are in local database coordinates The coordinat...
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
These aren&#39;t really topographic coordinate transforms; they transform to from a coordinate system tha...
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. This affects how you set up the turn splines! ...
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 Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)