15 #include <matrix/vlVector.h>
16 #include <matrix/vlTaitBryan.h>
17 #include <matrix/coordTransform.h>
44 bool useAcceleration,
bool useHighGroundClamp,
const DtAttachedTerrain* attachedTerrain);
61 const int drivingLane,
double headingDiff,
bool useLocalPos =
false,
DtVector currentLocalPos = DtVector::zero());
65 virtual bool turnValid(
int currentLane);
68 const int passingLane);
72 virtual bool modifyTurnSpline(
const DtVector ¤tLocalPos,
const DtRailSegment * currentSegment,
const DtRailSegment * nextSegment,
const int currentLane,
const int passingLane);
75 virtual void setUpLaneSwitch(
const DtVector& projectedLocation,
DtRailSegment *currentSeg,
const int currentLane,
76 const int passingLane);
80 double drivingSpeed,
int passingLane,
DtTime simTime = 0.0);
83 virtual void updateNoMovement();
86 virtual void movementComplete();
98 virtual const DtCoordTransform & localToBodyTransform()
const;
101 virtual void determinePositionAndSetFromEnd(
const DtRailSegment * currentSeg,
const int currentLane);
113 virtual void useFuel(
double fuelUsed);
115 virtual bool checkEntityImmobilized();
122 virtual double fuelLeft()
const;
141 virtual void updateRepository(
const DtVector & localPosition,
143 const DtTaitBryan & localOrientation,
const DtVector& rotationalVelocity,
149 virtual double calculateAcceleration(
double desiredSpeed);
164 virtual void calculateOrientationAndPosition(
165 const DtVector& newLocalProjectedLocation,
double newHeading,
166 DtDcm& newLocalOrientation,
DtVector& newLocalPosition);
179 bool groundClamp(
double heading,
const DtVector& location,
186 void groundClampHighFidelity(
double heading,
const DtVector& location,
194 void groundClampLowFidelity(
double heading,
const DtVector& location,
198 virtual DtVector calculateRotationalVelocity(
199 const DtTaitBryan& newTopoOrientation,
200 const DtTaitBryan& oldTopoOrientation,
double dT);
205 virtual void calculateDirectionOfLinearMotion(
206 const DtDcm& newLocalOrientation,
const DtVector& newLocalPosition,
207 DtDcm& newLocalDirectionOfLinearMotion);
211 virtual DtVector calculateBodyAcceleration(
double desiredSpeed,
212 const DtVector& oldBodyVelocity,
double dT);
214 virtual DtVector calculateBodyVelocity(
218 virtual DtVector calculateProjectedLocation(
220 const DtVector& oldBodyVelocity,
const DtVector & newBodyVelocity,
double newHeading);
225 virtual bool rotationalVelocityShouldBeClamped(
const DtVector&
226 bodyRotationalVelocity);
231 virtual bool passedTurnPoint(
double distSq,
double & differance);
246 int lanePos,
DtVector projectedPos);
250 virtual void determinePosition(
const DtRailSegment * currentSeg,
const int currentLane,
251 DtVector& newLocalProjectedLocation);