VR-Forces 4.6 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 
20 class DtRailSegment;
21 class DtAttachedTerrain;
23 
26 #define DT_ROAD_MOVE_COAST_DECEL_FRACTION 0.5
27 
30 #define DT_ROAD_MOVE_DESTROYED_DECELERATION -5.0
31 
42 {
43 
44 public:
45 
48  bool useHighGroundClamp,const DtAttachedTerrain* attachedTerrain);
49 
51  virtual ~DtRoadMovementUpdater();
52 
55 
56  virtual bool init();
57 
58  virtual void clear();
59 
60  virtual void setEntityState(DtVrfMovingObjectStateRepository* state);
61  virtual void setPSR(DtRailMovementControllerPSR* psr);
63  virtual void movementComplete();
64 
66 
75  virtual void updateRailAndWorldPosition(DtRoadSegment* currentSeg, double newAccel,
76  double dT, double simTime = 0.0);
77 
80  virtual void updateNoMovement();
81 
85  virtual void updateFromPSR(const DtVector localPos, DtRailSegment * currentSeg);
86 
87 protected:
88 
93  virtual void kinematicUpdate(const double oldSpeed, const double accel,
94  const double dt, double& deltaPosition, double& newSpeed,
95  double &actualAccel);
96 
112  virtual void doKinematicUpdateAlongRail(
113  const double dt,
114  DtRoadSegment* currentSeg,
115  const int roadLaneNum,
116  const double oldPositionInLane,
117  const double oldSpeed,
118  double & accel,
119  double & newPositionInLane,
120  double & newLateralOffset,
121  double & laneChangeHeadingOffset,
122  double & newSpeed,
123  double & newRotationRate);
124 
140  virtual void computePositionInDownstreamSegment(
141  DtRoadSegment* & currentSeg,
142  int & roadLaneNum,
143  double & newPositionInLane,
144  const double newLateralOffset,
145  double &segmentCurveHeadingOffset,
146  DtVector& localPosition,
147  int & segmentIndex);
148 
168  virtual void updateLateralOffset(const double currentOffset,
169  const double distanceBetweenLanes, const double speed,
170  const double xMove,
171  double & newLateralOffset, double& newHeadingOffset,
172  double &headingChangeRate);
173 
181  virtual void updatePsrWithNewState(
182  const int roadLaneNum,
183  const bool isSwitchingLanes,
184  const int roadSegmentIndex,
185  const double positionInLane,
186  double lateralOffset,
187  const double newSpeed,
188  const double newAccel,
189  DtRoadSegment* currentSegment);
190 
199  virtual void computeBodyMotionVectors(const double speed,
200  const double accel, const double turnRate, const double dt,
201  DtVector & bodyVelocity, DtVector & bodyAcceleration);
202 
208  virtual void computeRepositoryUpdateVariables(
209  const DtVector & newLocalPosition,
210  const DtVector & newBodyVelocity,
211  const DtVector & newBodyAcceleration,
212  const DtDcm & newLocalOrientation,
213  const double newRotationRate,
214  DtVector & newRelativeVelocity,
215  DtVector & newRelativeAcceleration,
216  DtTaitBryan & newLocalOrientationTb,
217  DtVector & newBodyRotationalVelocity
218  );
219 
226  virtual void useFuel(double fuelUsed);
227 
228  virtual bool isEntityImmobilized();
229 
235  virtual double fuelLeft() const;
236 
254  virtual void updateRepository(const DtVector & localPosition,
255  const DtVector & localVelocity, const DtVector & localAcceleration,
256  const DtTaitBryan & localOrientation, const DtVector& rotationalVelocity,
257  double newHeading);
258 
284  virtual void calculateOrientationAndPosition(
285  const DtVector& newLocalProjectedLocation, const double newHeading,
286  DtDcm& newLocalOrientation, DtVector& newLocalPosition);
287 
291  virtual void calculateOriginLocation(
292  const DtVector & turnCenterLocation,
293  const double heading,
294  DtVector & originLocation);
295 
307  bool groundClamp(const double heading, const DtVector& location,
308  DtAttachedTerrain& terrain, DtVector& newNormal);
309 
314  void groundClampHighFidelity(const double heading, const DtVector& location,
315  DtAttachedTerrain& terrain, DtVector& newNormal);
316 
322  void groundClampLowFidelity(const double heading, const DtVector& location,
323  DtAttachedTerrain& terrain, DtVector& newNormal);
324 
325 private:
328 
331 
333  const DtRoadMovementUpdater & operator=(const
334  DtRoadMovementUpdater & orig);
335 
336 protected:
340 
347 
351 
354 
355 };
356 
357 
358 

Document ID: Generated on Thu Apr 12 03:15:37 EDT 2018 from SVN revision 187986
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)