VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Protected Attributes | Private Member Functions
DtRailSplineCalculator Class Reference

Public Member Functions

 DtRailSplineCalculator ()
 
virtual ~DtRailSplineCalculator ()
 
virtual bool setUpTurnSpline (const DtRailSegment *currentSeg, const DtRailSegment *nextSeg, const int currentLane, const int desiredLane, Coordinate_System *coordinateSystem, bool useDefinedEntry=false, DtVector entryPt=DtVector::zero())
 
virtual bool setUpLaneSwitchSpline (const DtVector &projectedLocation, const DtRailSegment *currentSeg, const double bvolHL, const int currentLane, const int desiredLane, Coordinate_System *coordinateSystem)
 
virtual bool recalculateSpline (const DtRailSegment *currentSeg, const DtRailSegment *nextSeg, const int currentLane, const int passingLane, const int previousSwitchDirection, Coordinate_System *coordinateSystem)
 
virtual bool modifySpline (const DtVector &currentLocalPos, const DtRailSegment *currentSeg, const DtRailSegment *nextSeg, const int currentLane, const int passingLane, Coordinate_System *coordinateSystem)
 
virtual void calculateTurnPath (const DtVector &pathEntryPt, const DtVector &pathMidPt, const DtVector &pathExitPt)
 
virtual DtVector determinePositionAlongCurve (double distance)
 
virtual std::list< DtVector > getCurvePoints ()
 
virtual double calculateTurnHeading (double oldHeading)
 
virtual double calculateLaneSwitchHeading (double oldHeading)
 
virtual bool finishTurn (double oldHeading, double newHeading)
 
virtual bool finishLaneSwitch (double oldHeading, double newHeading)
 
virtual const DtVector & splineLocalEntryPoint () const
 
virtual const DtVector & splineLocalMidPoint () const
 
virtual const DtVector & splineLocalExitPoint () const
 
virtual const int turnEntryLane () const
 
virtual void setDrivingOnLeft (bool left)
 
virtual bool drivingOnLeft () const
 
virtual void setTurnDirection (const int dir)
 
virtual const int turnDirection () const
 
virtual void setLocalToTopoTransform (const DtCoordTransform &transform)
 
virtual void setTopoToLocalTransform (const DtCoordTransform &transform)
 
virtual void clear ()
 

Protected Attributes

double myTotalSplineDistance
 
double mySplineTime
 
double myHeadingShift
 
int myTurnDirection
 
int myTurnEntryLane
 
bool myDrivingOnLeft
 
DtVector myLocalEntryPoint
 
DtVector myLocalMidPoint
 
DtVector myLocalExitPoint
 
std::vector< DtVector > mySplineCoefficents
 
DtCoordTransform myLocalToTopoTransform
 
DtCoordTransform myTopoToLocalTransform
 

Private Member Functions

 DtRailSplineCalculator (const DtRailSplineCalculator &orig)
 
DtRailSplineCalculatoroperator= (const DtRailSplineCalculator &orig)
 

Constructor & Destructor Documentation

DtRailSplineCalculator::DtRailSplineCalculator ( )
virtual DtRailSplineCalculator::~DtRailSplineCalculator ( )
virtual
DtRailSplineCalculator::DtRailSplineCalculator ( const DtRailSplineCalculator orig)
private

copy constructor

Member Function Documentation

virtual bool DtRailSplineCalculator::setUpTurnSpline ( const DtRailSegment currentSeg,
const DtRailSegment nextSeg,
const int  currentLane,
const int  desiredLane,
Coordinate_System coordinateSystem,
bool  useDefinedEntry = false,
DtVector  entryPt = DtVector::zero() 
)
virtual

Set up spline to achieve turning from one segment to another. Returns true if able to construct a spline.

virtual bool DtRailSplineCalculator::setUpLaneSwitchSpline ( const DtVector &  projectedLocation,
const DtRailSegment currentSeg,
const double  bvolHL,
const int  currentLane,
const int  desiredLane,
Coordinate_System coordinateSystem 
)
virtual

Set up spline to achieve a lane switch.

virtual bool DtRailSplineCalculator::recalculateSpline ( const DtRailSegment currentSeg,
const DtRailSegment nextSeg,
const int  currentLane,
const int  passingLane,
const int  previousSwitchDirection,
Coordinate_System coordinateSystem 
)
virtual
virtual bool DtRailSplineCalculator::modifySpline ( const DtVector &  currentLocalPos,
const DtRailSegment currentSeg,
const DtRailSegment nextSeg,
const int  currentLane,
const int  passingLane,
Coordinate_System coordinateSystem 
)
virtual
virtual void DtRailSplineCalculator::calculateTurnPath ( const DtVector &  pathEntryPt,
const DtVector &  pathMidPt,
const DtVector &  pathExitPt 
)
virtual

generates the turn path needed to provide a smooth turn that connects the segments on the path. Uses 3 points in the intersection to generate a simple quadratic spline curve. Points are in whatever coordinate systems the supplied path points are in.

virtual DtVector DtRailSplineCalculator::determinePositionAlongCurve ( double  distance)
virtual

If the entity is using turn smoothing and it is currently turning this will find where on the curve the entity is.

virtual std::list<DtVector> DtRailSplineCalculator::getCurvePoints ( )
virtual

Generate a set of about 10 points that lie along the spline from start to end. For debugging.

virtual double DtRailSplineCalculator::calculateTurnHeading ( double  oldHeading)
virtual

Starting from the old heading add the percentage of the difference covered given the spline time.

virtual double DtRailSplineCalculator::calculateLaneSwitchHeading ( double  oldHeading)
virtual
virtual bool DtRailSplineCalculator::finishTurn ( double  oldHeading,
double  newHeading 
)
virtual
virtual bool DtRailSplineCalculator::finishLaneSwitch ( double  oldHeading,
double  newHeading 
)
virtual
virtual const DtVector& DtRailSplineCalculator::splineLocalEntryPoint ( ) const
virtual

These are the generated local entry,mid, exit points for the spline transformed from the pathEntryPt,pathMidPt, pathExitPt supplied to the calculateTurnPath function.

virtual const DtVector& DtRailSplineCalculator::splineLocalMidPoint ( ) const
virtual
virtual const DtVector& DtRailSplineCalculator::splineLocalExitPoint ( ) const
virtual
virtual const int DtRailSplineCalculator::turnEntryLane ( ) const
virtual
virtual void DtRailSplineCalculator::setDrivingOnLeft ( bool  left)
virtual
virtual bool DtRailSplineCalculator::drivingOnLeft ( ) const
virtual
virtual void DtRailSplineCalculator::setTurnDirection ( const int  dir)
virtual

These are set by the updater when setUpTurn is called to intialize the spline calculator.

virtual const int DtRailSplineCalculator::turnDirection ( ) const
virtual
virtual void DtRailSplineCalculator::setLocalToTopoTransform ( const DtCoordTransform &  transform)
virtual
virtual void DtRailSplineCalculator::setTopoToLocalTransform ( const DtCoordTransform &  transform)
virtual
virtual void DtRailSplineCalculator::clear ( )
virtual
DtRailSplineCalculator& DtRailSplineCalculator::operator= ( const DtRailSplineCalculator orig)
private

assignment operator

Member Data Documentation

double DtRailSplineCalculator::myTotalSplineDistance
protected

This is the distance along the current segment from turn entry point to end point plus the the distance along the next segment to the turn exit point.

double DtRailSplineCalculator::mySplineTime
protected

Keeps track of the parametric time, where we are on the curve.

double DtRailSplineCalculator::myHeadingShift
protected

This is the difference between our current heading and desired heading. Used to determine the heading of the entity as it moves along the spline.

DtCoordTransform DtRailSplineCalculator::myLocalToTopoTransform
protected

These aren't really topographic coordinate transforms; they transform to from a coordinate system that has xy in the horizontal plane (like topographic) but x oriented in the segment direction.

DtCoordTransform DtRailSplineCalculator::myTopoToLocalTransform
protected

These aren't really topographic coordinate transforms; they transform to from a coordinate system that has xy in the horizontal plane (like topographic) but x oriented in the segment direction.

int DtRailSplineCalculator::myTurnDirection
protected

Direction of the curve–going to left(-1) or right(1)

int DtRailSplineCalculator::myTurnEntryLane
protected

Lane we use to enter the turn.

bool DtRailSplineCalculator::myDrivingOnLeft
protected

Are we driving on the left or right side of the road. This affects how you set up the turn splines!

DtVector DtRailSplineCalculator::myLocalEntryPoint
protected

The points used to generate the spline in local coordinates.

DtVector DtRailSplineCalculator::myLocalMidPoint
protected
DtVector DtRailSplineCalculator::myLocalExitPoint
protected
std::vector<DtVector> DtRailSplineCalculator::mySplineCoefficents
protected

The spline coefficents used to determine a position along a curve.


The documentation for this class was generated from the following file:

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)