VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
roadMovementUpdater.h
Go to the documentation of this file.
1 
2 
3 
4 
5 #pragma once
6 
7 //#include "railPSR.h"
8 #include <vector>
9 #include <matrix/vlVector.h>
10 #include <matrix/vlTaitBryan.h>
11 #include <matrix/coordTransform.h>
12 
15 #include "vrfmodel/roadSegment.h"
16 
19 class DtRailSegment;
20 class DtAttachedTerrain;
22 
25 #define DT_ROAD_MOVE_COAST_DECEL_FRACTION 0.5
26 
29 #define DT_ROAD_MOVE_DESTROYED_DECELERATION -5.0
30 
41 {
42 
43 public:
44 
47  bool useHighGroundClamp,const DtAttachedTerrain* attachedTerrain);
48 
50  virtual ~DtRoadMovementUpdater();
51 
54 
55  virtual bool init();
56 
57  virtual void clear();
58 
59  virtual void setEntityState(DtVrfMovingObjectStateRepository* state);
60  virtual void setPSR(DtRailMovementControllerPSR* psr);
62  virtual void movementComplete();
63 
65 
74  virtual void updateRailAndWorldPosition(DtRoadSegment* currentSeg, double newAccel,
75  double dT, double simTime = 0.0);
76 
79  virtual void updateNoMovement();
80 
84  virtual void updateFromPSR(const DtVector localPos, DtRailSegment * currentSeg);
85 
86 protected:
87 
92  virtual void kinematicUpdate(const double oldSpeed, const double accel,
93  const double dt, double& deltaPosition, double& newSpeed,
94  double &actualAccel);
95 
111  virtual void doKinematicUpdateAlongRail(
112  const double dt,
113  DtRoadSegment* currentSeg,
114  const int roadLaneNum,
115  const double oldPositionInLane,
116  const double oldSpeed,
117  double & accel,
118  double & newPositionInLane,
119  double & newLateralOffset,
120  double & laneChangeHeadingOffset,
121  double & newSpeed,
122  double & newRotationRate);
123 
139  virtual void computePositionInDownstreamSegment(
140  DtRoadSegment* & currentSeg,
141  int & roadLaneNum,
142  double & newPositionInLane,
143  const double newLateralOffset,
144  double &segmentCurveHeadingOffset,
145  DtVector& localPosition,
146  int & segmentIndex);
147 
167  virtual void updateLateralOffset(const double currentOffset,
168  const double distanceBetweenLanes, const double speed,
169  const double xMove,
170  double & newLateralOffset, double& newHeadingOffset,
171  double &headingChangeRate);
172 
180  virtual void updatePsrWithNewState(
181  const int roadLaneNum,
182  const bool isSwitchingLanes,
183  const int roadSegmentIndex,
184  const double positionInLane,
185  double lateralOffset,
186  const double newSpeed,
187  const double newAccel,
188  DtRoadSegment* currentSegment);
189 
198  virtual void computeBodyMotionVectors(const double speed,
199  const double accel, const double turnRate, const double dt,
200  DtVector & bodyVelocity, DtVector & bodyAcceleration);
201 
207  virtual void computeRepositoryUpdateVariables(
208  const DtVector & newLocalPosition,
209  const DtVector & newBodyVelocity,
210  const DtVector & newBodyAcceleration,
211  const DtDcm & newLocalOrientation,
212  const double newRotationRate,
213  DtVector & newRelativeVelocity,
214  DtVector & newRelativeAcceleration,
215  DtTaitBryan & newLocalOrientationTb,
216  DtVector & newBodyRotationalVelocity
217  );
218 
225  virtual void useFuel(double fuelUsed);
226 
227  virtual bool isEntityImmobilized();
228 
234  virtual double fuelLeft() const;
235 
253  virtual void updateRepository(const DtVector & localPosition,
254  const DtVector & localVelocity, const DtVector & localAcceleration,
255  const DtTaitBryan & localOrientation, const DtVector& rotationalVelocity,
256  double newHeading);
257 
283  virtual void calculateOrientationAndPosition(
284  const DtVector& newLocalProjectedLocation, const double newHeading,
285  DtDcm& newLocalOrientation, DtVector& newLocalPosition);
286 
290  virtual void calculateOriginLocation(
291  const DtVector & turnCenterLocation,
292  const double heading,
293  DtVector & originLocation);
294 
306  bool groundClamp(const double heading, const DtVector& location,
307  DtAttachedTerrain& terrain, DtVector& newNormal);
308 
313  void groundClampHighFidelity(const double heading, const DtVector& location,
314  DtAttachedTerrain& terrain, DtVector& newNormal);
315 
321  void groundClampLowFidelity(const double heading, const DtVector& location,
322  DtAttachedTerrain& terrain, DtVector& newNormal);
323 
324 private:
327 
330 
332  const DtRoadMovementUpdater & operator=(const
333  DtRoadMovementUpdater & orig);
334 
335 protected:
339 
346 
350 
353 
354 };
355 
356 
357 

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)