VR-Forces 4.6 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;
26 
28 class DtInputPortGroup;
31 class DtBooleanInputPort;
33 
46 {
47 
48 public:
49 
53  DtVrfObject* owner,
54  DtSimManager* simManager,
55  DtComponentDescriptor* desc = 0,
56  DtReaderWriterRegistry* parentRegistry = 0);
57 
58 
63 
66  virtual bool init();
67 
70  virtual const char* type() const;
71 
74  virtual void tick();
75 
79  static DtSimComponent * creator(const DtString& name,
80  DtVrfObject* owner,
81  DtSimManager* simManager,
82  DtComponentDescriptor* desc = 0,
83  DtReaderWriterRegistry* parentRegistry = 0);
84 
85 public:
89  virtual void calculateBodyVelocity(const DtVector& oldRelativeVelocity,
90  const DtDcm& newLocalOrientation, DtVector& newBodyVelocity);
91 
95  virtual void calculateAirborneAcceleration(const DtVector oldLocalPosition,
96  double oldSpeed, const DtDcm& newLocalOrientation,
97  const DtVector& newBodyVelocity, double throttle,
98  DtVector& newRelativeAcceleration);
99 
100 protected:
101 
103  virtual void doFlying();
104 
106  virtual void doTaxiing();
107 
110  virtual bool isTouchingDown(const DtVector& newLocalPosition,
111  const DtVector& newRelativeVelocity);
112 
115  virtual bool isTakingOff(bool isOnGround, double speed);
116 
117  virtual bool updateGroundInteractionPoints(
118  DtGroundInteractionPt *left,
119  DtGroundInteractionPt *right,
120  DtGroundInteractionPt *nose,
121  DtGroundInteractionPt *center,
122  const DtDcm& localOrientation,
123  const DtVector& localPosition,
124  double halfHeightOfTerrainIntersectChord);
125 
130  virtual double calculateYawRate(double pedal);
131 
133  virtual double calculatePitchRate(double stickYValue);
134 
136  virtual double calculateRollRate(double stickXValue);
137 
138  virtual void calculateBodyRotationRates(double pedal, double stickXValue,
139  double stickYValue, DtVector& newBodyRotationRates);
140 
143  virtual void calculateOrientation(const DtDcm&
144  oldLocalOrientation, const DtVector& newBodyRotationRates,
145  DtDcm& newLocalOrientation);
146 
148  virtual void calculateBodyGravity(const DtVector oldLocalPosition,
149  const DtDcm& newLocalOrientation, DtVector& newBodyGravityAcceleration);
150 
153  virtual void calculateThrustAcceleration(double throttle,
154  DtVector& newBodyThrustAccleration);
155 
160  virtual void calculateDragAcceleration(double oldSpeed,
161  const DtVector& newBodyVelocity, bool flapsDeployed,
162  DtVector& newBodyDragAccleration);
163 
168  virtual void fallFromSky(const DtString& reason = DtString::nullString());
169 
170  virtual bool collidesWithGround(const DtVector& oldLocalPosition,
171  const DtVector& newLocalPosition, DtVector& localCenterGoundPosition);
172 
174  void integrate(const DtVector& oldLocalPosition,
175  const DtVector& oldRelativeVelocity,
176  const DtVector& newRelativeAcceleration, DtVector& newLocalPosition,
177  DtVector& newRelativeVelocity,
178  double maxSpeed = 0);
179 
181 
184  virtual void useFuel(double fuelUsed);
185  virtual double fuelLeft() const;
186 
187 
192  virtual double calculateHeading(double oldHeading,
193  double steering, double dT, double speed, double turningRadius);
195  virtual void calculateScalarVelocityAndAcceleration(
196  double oldPitch, double &scalarVelocity, double &scalarAcceleration);
197  virtual double calculateMaxGroundSpeed();
198  virtual double calculateMaxGroundAcceleration();
202  virtual double calculateAcceleration(double pitch, double maxSpeed,
203  double maxAccel, double newSpeed);
204  virtual double calculateAccelerationFromThrottle();
205 
207  virtual double calculateAccelerationFromSlope(double slope);
208 
209  virtual double calculateAccelerationFromResistance(double maxSpeed,
210  double maxAccel);
211  virtual double calculateAccelerationFromBrake(double otherAccels);
212 
213  virtual DtVector calculateProjectedLocation(
214  const DtVector& oldLocalPosition, const DtVector& newBodyAcceleration,
215  const DtVector& oldBodyVelocity, double newHeading);
216 
217  virtual void calculateOrientationAndPositionOnGround(
218  const DtVector& newLocalProjectedLocation, double newHeading,
219  DtDcm& newLocalOrientation, DtVector& newLocalPosition);
221 
222  virtual void updateRepository(const DtVector& newLocalPosition,
223  const DtVector& newRelativeVelocity,
224  const DtVector& newRelativeAcceleration,
225  const DtDcm& newLocalOrientation, const DtVector& newBodyRotationRates,
226  bool isOnGround, const DtAppearance& newAppearance);
227 
228  virtual void updateDisplay() const;
229 
232  virtual double maxThrustAcceleration() const;
233  virtual double maxClimbRate() const;
234  virtual double maxYawVelocity() const;
235  virtual double maxPitchVelocity() const;
236  virtual double maxRollVelocity() const;
237  virtual double maxAltitude() const;
238 
240  virtual bool createPortGroups();
241 
243  virtual bool createPorts();
244 
250  virtual bool createPSR();
251 
252  virtual void sendDetonation(const DtVector& geocentricPosition);
253 
255  virtual void forceSpatialUpdate();
256 
257 #if DtHLA
258 
259  virtual void initializeSpatialAttributeList();
260 #endif
261 
262 protected:
263 
266 
269 
273 
274 protected:
275 
278 
281 
286 
293 
300 
307 
314 
321 
323 
327 
330 
333 
337 
340 
341 #if DtHLA
342 
343 
344 
345  RTI::AttributeHandleSet* mySpatialAttributes;
346 #endif
347 };

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)