15 #include <matrix/vlVector.h>
16 #include <matrix/vlTaitBryan.h>
17 #include <matrix/coordTransform.h>
45 bool useAcceleration,
bool useHighGroundClamp,
const DtAttachedTerrain* attachedTerrain);
62 const int drivingLane,
double headingDiff,
bool useLocalPos =
false,
DtVector currentLocalPos = DtVector::zero());
66 virtual bool turnValid(
int currentLane);
69 const int passingLane);
73 virtual bool modifyTurnSpline(
const DtVector ¤tLocalPos,
const DtRailSegment * currentSegment,
const DtRailSegment * nextSegment,
const int currentLane,
const int passingLane);
76 virtual void setUpLaneSwitch(
const DtVector& projectedLocation,
DtRailSegment *currentSeg,
const int currentLane,
77 const int passingLane);
81 double drivingSpeed,
int passingLane,
DtTime simTime = 0.0);
84 virtual void updateNoMovement();
87 virtual void movementComplete();
99 virtual const DtCoordTransform & localToBodyTransform()
const;
102 virtual void determinePositionAndSetFromEnd(
const DtRailSegment * currentSeg,
const int currentLane);
106 virtual bool checkIfMoveOntoEmbarked(
const DtVector& localPosition);
108 virtual bool checkAndDisembarkIfEmbarked(
const DtVector& localPosition);
120 virtual void useFuel(
double fuelUsed);
122 virtual bool checkEntityImmobilized();
129 virtual double fuelLeft()
const;
148 virtual void updateRepository(
const DtVector & localPosition,
150 const DtTaitBryan & localOrientation,
const DtVector& rotationalVelocity,
156 virtual double calculateAcceleration(
double desiredSpeed);
171 virtual void calculateOrientationAndPosition(
172 const DtVector& newLocalProjectedLocation,
double newHeading,
173 DtDcm& newLocalOrientation,
DtVector& newLocalPosition);
186 bool groundClamp(
double heading,
const DtVector& location,
193 void groundClampHighFidelity(
double heading,
const DtVector& location,
201 void groundClampLowFidelity(
double heading,
const DtVector& location,
205 virtual DtVector calculateRotationalVelocity(
206 const DtTaitBryan& newTopoOrientation,
207 const DtTaitBryan& oldTopoOrientation,
double dT);
212 virtual void calculateDirectionOfLinearMotion(
213 const DtDcm& newLocalOrientation,
const DtVector& newLocalPosition,
214 DtDcm& newLocalDirectionOfLinearMotion);
218 virtual DtVector calculateBodyAcceleration(
double desiredSpeed,
219 const DtVector& oldBodyVelocity,
double dT);
221 virtual DtVector calculateBodyVelocity(
225 virtual DtVector calculateProjectedLocation(
227 const DtVector& oldBodyVelocity,
const DtVector & newBodyVelocity,
double newHeading);
232 virtual bool rotationalVelocityShouldBeClamped(
const DtVector&
233 bodyRotationalVelocity);
238 virtual bool passedTurnPoint(
double distSq,
double & differance);
253 int lanePos,
DtVector projectedPos);
257 virtual void determinePosition(
const DtRailSegment * currentSeg,
const int currentLane,
258 DtVector& newLocalProjectedLocation);