VR-Forces 4.0.4 Class Documentation
include/vrfmodel/railSplineCalculator.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2010 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: railSplineCalculator.h,v $ $Revision: 1.1 $ $State: Exp $
00007 ** Created: 10/6/10 MEM
00008 *******************************************************************************/
00009 
00013 
00018 #include "vrfmodel/vrfmodelDefines.h"
00019 
00020 #include <vector>
00021 #include <matrix/vlVector.h>
00022 #include <matrix/vlTaitBryan.h>
00023 #include <matrix/coordTransform.h>
00024 
00025 class DtRailSegment;
00026 class Coordinate_System;
00027 
00028 class DT_DLL_vrfmodel DtRailSplineCalculator 
00029 {
00030 public:
00031    DtRailSplineCalculator();
00032 
00033    virtual ~DtRailSplineCalculator();
00034 
00036    virtual bool setUpTurnSpline(const DtRailSegment * currentSeg,const DtRailSegment * nextSeg,
00037                 const int currentLane,const int desiredLane,Coordinate_System * coordinateSystem,bool useDefinedEntry = false,
00038                 DtVector entryPt = DtVector::zero());
00039 
00041    virtual bool setUpLaneSwitchSpline(const DtVector& projectedLocation,const DtRailSegment *currentSeg,const double bvolHL,
00042                                                const int currentLane,const int desiredLane,Coordinate_System * coordinateSystem);
00043 
00044    virtual bool recalculateSpline(const DtRailSegment * currentSeg,const DtRailSegment * nextSeg, const int currentLane,
00045       const int passingLane,const int previousSwitchDirection,Coordinate_System * coordinateSystem);
00046 
00047    virtual bool modifySpline(const DtVector & currentLocalPos,const DtRailSegment * currentSeg,const DtRailSegment * nextSeg, const int currentLane,const int passingLane,
00048                                           Coordinate_System * coordinateSystem);
00049 
00053    virtual void calculateTurnPath(const DtVector & pathEntryPt,const DtVector & pathMidPt,const DtVector & pathExitPt);
00054 
00057    virtual DtVector determinePositionAlongCurve(double distance);
00058 
00060    virtual double calculateTurnHeading(double oldHeading);
00061 
00062    virtual double calculateLaneSwitchHeading(double oldHeading);
00063 
00064    virtual bool finishTurn(double oldHeading, double newHeading);
00065    virtual bool finishLaneSwitch(double oldHeading,double newHeading);
00066 
00069    virtual const DtVector & splineLocalEntryPoint() const;
00070    virtual const DtVector & splineLocalMidPoint() const;
00071    virtual const DtVector & splineLocalExitPoint() const;
00072 
00073    virtual const int turnEntryLane() const;
00074    virtual void setDrivingOnLeft(bool left);
00075    virtual bool drivingOnLeft() const;
00076 
00078    virtual void setTurnDirection(const int dir);
00079    virtual const int turnDirection() const;
00080 
00081    virtual void setLocalToTopoTransform(const DtCoordTransform & transform);
00082    virtual void setTopoToLocalTransform(const DtCoordTransform & transform);
00083 
00084    virtual void clear();
00085 
00086 private:
00088    DtRailSplineCalculator(
00089       const DtRailSplineCalculator& orig);
00090 
00092    DtRailSplineCalculator& operator=(
00093       const DtRailSplineCalculator& orig);
00094 
00095 protected:
00098    double            myTotalSplineDistance;
00100    double            mySplineTime; 
00103    double            myHeadingShift;
00104 
00106    DtCoordTransform  myLocalToTopoTransform;
00107    DtCoordTransform  myTopoToLocalTransform;
00108 
00110    int               myTurnDirection;
00112    int               myTurnEntryLane;
00115    bool              myDrivingOnLeft;
00116 
00118    DtVector          myLocalEntryPoint;
00119    DtVector          myLocalMidPoint;
00120    DtVector          myLocalExitPoint;
00122    std::vector<DtVector> mySplineCoefficents;
00123 };
00124 

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)