VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
fixedWingActuatorComponent.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
13 #include <vlpi/disEnums.h>
15 #include <matrix/LibMatrix.h>
16 
17 #if DtHLA
18 #include <vl/rtiNamespace.h>
19 #endif
20 
21 class DtString;
22 class DtSimManager;
27 
29 class DtInputPortGroup;
32 class DtBooleanInputPort;
34 
47 {
48 
49 public:
50 
54  DtVrfObject* owner,
55  DtSimManager* simManager,
56  DtComponentDescriptor* desc = 0,
57  DtReaderWriterRegistry* parentRegistry = 0);
58 
59 
64 
67  virtual bool init();
68 
71  virtual const char* type() const;
72 
75  virtual void tick();
76 
80  static DtSimComponent * creator(const DtString& name,
81  DtVrfObject* owner,
82  DtSimManager* simManager,
83  DtComponentDescriptor* desc = 0,
84  DtReaderWriterRegistry* parentRegistry = 0);
85 
86 public:
90  virtual void calculateBodyVelocity(const DtVector& oldRelativeVelocity,
91  const DtDcm& newLocalOrientation, DtVector& newBodyVelocity);
92 
96  virtual void calculateAirborneAcceleration(const DtVector oldLocalPosition,
97  double oldSpeed, const DtDcm& newLocalOrientation,
98  const DtVector& newBodyVelocity, double throttle,
99  DtVector& newRelativeAcceleration);
100 
101 protected:
102 
104  virtual void doFlying();
105 
107  virtual void doTaxiing();
108 
111  virtual bool isTouchingDown(const DtVector& newLocalPosition,
112  const DtVector& newRelativeVelocity);
113 
116  virtual bool isTakingOff(bool isOnGround, double speed);
117 
118  virtual bool updateGroundInteractionPoints(
119  DtGroundInteractionPt *left,
120  DtGroundInteractionPt *right,
121  DtGroundInteractionPt *nose,
122  DtGroundInteractionPt *center,
123  const DtDcm& localOrientation,
124  const DtVector& localPosition,
125  double halfHeightOfTerrainIntersectChord);
126 
131  virtual double calculateYawRate(double pedal);
132 
134  virtual double calculatePitchRate(double stickYValue);
135 
137  virtual double calculateRollRate(double stickXValue);
138 
139  virtual void calculateBodyRotationRates(double pedal, double stickXValue,
140  double stickYValue, DtVector& newBodyRotationRates);
141 
144  virtual void calculateOrientation(const DtDcm&
145  oldLocalOrientation, const DtVector& newBodyRotationRates,
146  DtDcm& newLocalOrientation);
147 
149  virtual void calculateBodyGravity(const DtVector oldLocalPosition,
150  const DtDcm& newLocalOrientation, DtVector& newBodyGravityAcceleration);
151 
154  virtual void calculateThrustAcceleration(double throttle,
155  DtVector& newBodyThrustAccleration);
156 
161  virtual void calculateDragAcceleration(double oldSpeed,
162  const DtVector& newBodyVelocity, bool flapsDeployed,
163  DtVector& newBodyDragAccleration);
164 
169  virtual void fallFromSky(const DtString& reason = DtString::nullString());
170 
171  virtual bool collidesWithGround(const DtVector& oldLocalPosition,
172  const DtVector& newLocalPosition, DtVector& localCenterGoundPosition);
173 
175  void integrate(const DtVector& oldLocalPosition,
176  const DtVector& oldRelativeVelocity,
177  const DtVector& newRelativeAcceleration, DtVector& newLocalPosition,
178  DtVector& newRelativeVelocity,
179  double maxSpeed = 0);
180 
182 
185  virtual void useFuel(double fuelUsed);
186  virtual double fuelLeft() const;
187 
189  virtual double fullMass() const;
190 
192  virtual double currentMass() const;
193 
198  virtual double calculateHeading(double oldHeading,
199  double steering, double dT, double speed, double turningRadius);
201  virtual void calculateScalarVelocityAndAcceleration(
202  double oldPitch, double &scalarVelocity, double &scalarAcceleration);
203  virtual double calculateMaxGroundSpeed();
204  virtual double calculateMaxGroundAcceleration();
208  virtual double calculateAcceleration(double pitch, double maxSpeed,
209  double maxAccel, double newSpeed);
210  virtual double calculateAccelerationFromThrottle();
211 
213  virtual double calculateAccelerationFromSlope(double slope);
214 
215  virtual double calculateAccelerationFromResistance(double maxSpeed,
216  double maxAccel);
217  virtual double calculateAccelerationFromBrake(double otherAccels);
218 
219  virtual DtVector calculateProjectedLocation(
220  const DtVector& oldLocalPosition, const DtVector& newBodyAcceleration,
221  const DtVector& oldBodyVelocity, double newHeading);
222 
223  virtual void calculateOrientationAndPositionOnGround(
224  const DtVector& newLocalProjectedLocation, double newHeading,
225  DtDcm& newLocalOrientation, DtVector& newLocalPosition);
227 
228  virtual void updateRepository(const DtVector& newLocalPosition,
229  const DtVector& newRelativeVelocity,
230  const DtVector& newRelativeAcceleration,
231  const DtDcm& newLocalOrientation, const DtVector& newBodyRotationRates,
232  bool isOnGround, const DtAppearance& newAppearance);
233 
234  virtual void updateDisplay() const;
235 
238  virtual double maxThrustAcceleration() const;
239  virtual double maxClimbRate() const;
240  virtual double maxYawVelocity() const;
241  virtual double maxPitchVelocity() const;
242  virtual double maxRollVelocity() const;
243  virtual double maxAltitude() const;
244 
246  virtual bool createPortGroups();
247 
249  virtual bool createPorts();
250 
256  virtual bool createPSR();
257 
259  virtual bool createFuelConsumptionModel();
260 
261  virtual void sendDetonation(const DtVector& geocentricPosition);
262 
264  virtual void forceSpatialUpdate();
265 
266 #if DtHLA
267 
268  virtual void initializeSpatialAttributeList();
269 #endif
270 
271 protected:
272 
275 
278 
282 
283 protected:
284 
288 
291 
296 
303 
310 
317 
324 
331 
333 
337 
340 
343 
347 
350 
351 #if DtHLA
352 
353 
354 
355  RTI::AttributeHandleSet* mySpatialAttributes;
356 #endif
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)