WSF
P6DofKinematicState.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2003-2015 The Boeing Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11
12#ifndef P6DOFKINEMATICSTATE_H
13#define P6DOFKINEMATICSTATE_H
14
15#include "p6dof_export.h"
16
17#include <cstdint>
18
19#include "UtDCM.hpp"
20#include "UtEntity.hpp"
21#include "UtLLAPos.hpp"
22#include "UtVec3dX.hpp"
23
24class P6DofAtmosphere;
25class P6DofGravity;
26class P6DofTerrain;
27class P6DofWind;
28
29// P6DofKinematicState provides a collection of state data for P6DofObjects.
30class P6DOF_EXPORT P6DofKinematicState
31{
32public:
34
35 // Call this to save the current values as the "last values"
36 // for later reference/recall
37 void SetTheLastValues();
38
39 // This calculates the aero state, updating internal values
40 void UpdateAeroState(const P6DofAtmosphere* aAtmosphere,
41 const P6DofWind* aWind,
42 const int64_t aSimTime_nanosec,
43 const double aDeltaT_sec);
44
45 // These are the last delta angles calculated during a state update.
46 // They are needed by the PilotController object and the P6DofVehicle
47 // will call this function to get them to pass the PilotController.
48 void GetAngleDeltas(double& aDeltaYaw_rad, double& aDeltaPitch_rad, double& aDeltaRoll_rad) const;
49 void SetAngleDeltas(double aDeltaYaw_rad, double aDeltaPitch_rad, double aDeltaRoll_rad);
50
51 // This is used (in testing) to remove any alpha. It is used for tests
52 // involving ballistic motion with automatic/perfect "weather-vane" effect.
53 void RemoveAlphaForTesting(P6DofAtmosphere* aAtmospherePtr);
54
55 // This returns the current angle of attack (alpha) in degrees
56 double GetAlpha_deg() const;
57
58 // This returns the current angle of attack (alpha) in radians
59 double GetAlpha_rad() const;
60
61 // This returns the current angle of sideslip (beta) in degrees
62 double GetBeta_deg() const;
63
64 // This returns the current angle of sideslip (beta) in radians
65 double GetBeta_rad() const;
66
67 // This returns the current angle of attack rate (alpha-dot) in degrees/sec
68 double GetAlphaDot_dps() const;
69
70 // This returns the current angle of attack rate (alpha-dot) in radians/sec
71 double GetAlphaDot_rps() const;
72
73 // This returns the current angle of sideslip rate (beta-dot) in degrees/sec
74 double GetBetaDot_dps() const;
75
76 // This returns the current angle of sideslip rate (beta-dot) in radians/sec
77 double GetBetaDot_rps() const;
78
79 // This sets alpha-dot and beta-dot value to zero (used in testing)
81
82 // This returns the current DCM (direction cosine matrix)
83 UtDCM GetDCM() const { return mDCM; }
84
85 // This sets the current DCM
86 void SetDCM(const UtDCM& aDCM) { mDCM = aDCM; }
87
88 // This returns the current LLA (lat, lon, altitude) in degrees, degrees, and meters, respectively
89 UtLLAPos GetCurrentPositionLLA() const;
90
91 // This returns the current speed in ft/sec
92 double GetSpeed_fps() const { return mSpeed_fps; }
93
94 // This returns the current speed in m/sec
95 double GetSpeed_mps() const;
96
97 // This returns the current speed in KTAS (knots true airspeed)
98 double GetSpeed_ktas() const { return mSpeed_ktas; }
99
100 // This returns the current speed in KIAS/KCAS (knots indicated/calibrated airspeed)
101 double GetSpeed_kias() const { return mSpeed_kias; }
102
103 // This returns the current speed in Mach
104 double GetSpeed_Mach() const { return mSpeed_Mach; }
105
106 // This returns the current velocity (in m/sec) in the NED frame
107 UtVec3dX GetVelocityNED_mps() const;
108
109 // This returns the current local heading in degrees
110 double GetLocalHeading_deg() const { return mLocalHeading_deg; }
111
112 // This returns the current local heading in radians
113 double GetLocalHeading_rad() const;
114
115 // This returns the current local pitch angle in degrees
116 double GetLocalPitch_deg() const { return mLocalPitch_deg; }
117
118 // This returns the current local pitch angle in radians
119 double GetLocalPitch_rad() const;
120
121 // This returns the current local roll angle in degrees
122 double GetLocalRoll_deg() const { return mLocalRoll_deg; }
123
124 // This returns the current local roll angle in radians
125 double GetLocalRoll_rad() const;
126
127 // This sets the current local heading in degrees
128 void SetLocalHeading_deg(double aHeading) { mLocalHeading_deg = aHeading; }
129
130 // This sets the current local pitch angle in degrees
131 void SetLocalPitch_deg(double aPitch) { mLocalPitch_deg = aPitch; }
132
133 // This sets the current local roll angle in degrees
134 void SetLocalRoll_deg(double aRoll) { mLocalRoll_deg = aRoll; }
135
136 // This returns the current flight path angle in degrees
138
139 // This returns the current flight path angle in radians
140 double GetFlightPathAngle_deg() const;
141
142 // This returns the current dynamic pressure in lbs/sq-ft
144
145 // This returns the current static pressure in lbs/sq-ft
147
148 // This returns the current air density in slugs/cubic-foot
150
151 // This returns the current latitude in degrees
152 double GetLat() const;
153
154 // This returns the current longitude in degrees
155 double GetLon() const;
156
157 // This returns the current altitude in meters
158 double GetAlt_m() const;
159
160 // This returns the current altitude in feet
161 double GetAlt_ft() const;
162
163 // This sets the altitude in meters
164 void SetAlt(double aAlt_m) { mAlt_m = aAlt_m; }
165
166 // This returns the body-relative acceleration (in gees) in the x (forward) direction
167 double GetNx_g() const;
168
169 // This returns the body-relative acceleration (in gees) in the y (right) direction
170 double GetNy_g() const;
171
172 // This returns the body-relative acceleration (in gees) in the z (down) direction
173 double GetNz_g() const;
174
175 // This returns the pitch angle (in radians) in the WCS frame
176 double GetPitchWCS() const { return mWcsPitch_rad; }
177
178 // This returns the roll angle (in radians) in the WCS frame
179 double GetRollWCS() const { return mWcsRoll_rad; }
180
181 // This returns the yaw angle (in radians) in the WCS frame
182 double GetYawWCS() const { return mWcsYaw_rad; }
183
184 // This sets the yaw, pitch, and roll angles (in radians) in the WCS frame
185 void SetOrientationWCS(double aYaw_rad, double aPitch_rad, double aRoll_rad);
186
187 // This returns the yaw rate in radians/sec
188 double GetYawRate_rps() const;
189
190 // This returns the pitch rate in radians/sec
191 double GetPitchRate_rps() const;
192
193 // This returns the roll rate in radians/sec
194 double GetRollRate_rps() const;
195
196 // This returns the yaw rate in degrees/sec
197 double GetYawRate_dps() const;
198
199 // This returns the pitch rate in degrees/sec
200 double GetPitchRate_dps() const;
201
202 // This returns the roll rate in degrees/sec
203 double GetRollRate_dps() const;
204
205 // This sets the yaw rate in degrees/sec
206 void SetYawRate(double aYawRate_dps);
207
208 // This sets the pitch rate in degrees/sec
209 void SetPitchRate(double aPitchRate_dps);
210
211 // This sets the roll rate in degrees/sec
212 void SetRollRate(double aRollRate_dps);
213
214 // This returns the vertical speed in ft/minute
215 double GetVerticalSpeed_fpm() const { return mVertSpeed_fpm; }
216
217 // This returns the last dynamic pressure in lbs/sq-ft
218 double GetLastDynamicPressure_psf() const;
219
220 // This returns the last static pressure in lbs/sq-ft
221 double GetLastStaticPressure_psf() const;
222
223 // This returns the last altitude in feet
224 double GetLastAltitudeMSL_ft() const;
225
226
227 // This provides the lift, drag, and side force vectors in body coordinates
228 void GetBodyAeroVectors(const UtDCM& aDCM,
229 const UtVec3dX& aInertialVelVector,
230 UtVec3dX& aLiftBodyVector,
231 UtVec3dX& aDragBodyVector,
232 UtVec3dX& aSideForceBodyVector) const;
233
234 // This returns true if a spherical earth model is being used
235 bool UseSphericalEarth() const { return mUseSphericalEarth; }
236
237 // This returns true if a rotating earth model is being used
238 bool UseRotatingEarth() const { return mUseRotatingEarth; }
239
240 // This returns true if the ignore jettisoned objects flag is active
242
243 // This sets the earth model to spherical
244 void SetUseSphericalEarth(bool aValue) { mUseSphericalEarth = aValue; }
245
246 // This sets the earth model to rotating
247 void SetUseRotatingEarth(bool aValue) { mUseRotatingEarth = aValue; }
248
249 // This sets the state of the ignore jettisoned objects flag
250 void SetIgnoreJettisonObjects(bool aValue) { mIgnoreJettisonObjects = aValue; }
251
252 // This sets the current LLA (lat, lon, altitude) in degrees, degrees, and meters, respectively
253 void SetPositionLLA(double aLat, double aLon, double aAlt_m);
254
255 // This sets the current attitude (heading, pitch, and roll) using radians
256 void SetAttitude_rad(double aHeading_rad, double aPitch_rad, double aRoll_rad);
257
258 // This sets the current vertical speed in feet/minute
259 void SetVerticalSpeed_fpm(double aVertSpeed_fpm);
260
261 // This sets the current speed in feet/sec
262 void SetSpeed_fps(double aSpeed_fps);
263
264 // This sets the current speed in meters/sec
265 void SetSpeed_mps(double aSpeed_mps);
266
267 // This sets the current speed in mph
268 void SetSpeed_mph(double aSpeed_mph);
269
270 // This sets the current speed in KTAS (knots true airspeed)
271 void SetSpeed_ktas(double aSpeed_ktas);
272
273 // This sets the current speed in KIAS/KCAS (knots indicated/calibrated airspeed)
274 void SetSpeed_kias(double aSpeed_kias);
275
276 // This sets the current speed in Mach
277 void SetSpeed_Mach(double aSpeed_Mach);
278
279 // This sets the body-relative accelerations in gees
280 void SetBodyAccel(double aNx_g, double aNy_g, double aNz_g);
281
282 // This sets the lift, drag, side force, thrust, and weight
283 void SetLiftDragSideForceThrustWeight(double aLift_lbs,
284 double aDrag_lbs,
285 double aSideForce_lbs,
286 double aThrust_lbs,
287 double aWgt_lbs);
288
289 // This sets the moment at the CG
290 void SetMomentAtCG(UtVec3dX aMoment_ftlbs);
291
292 // This sets the velocity in the NED frame using meters/sec
293 void SetVelocityNED(double aVelNorth_mps, double aVelEast_mps, double aVelDown_mps);
294
295 // Calculate rates (especially alpha-dot and beta-dot) based on current state and last update time
296 void CalculateRates(int64_t aSimTime_nanosec);
297
298 // CalculateSecondaryParameters uses WGS/spherical data
299 //
300 // mWGS84_pos, mWGS84_vel,
301 // mDCM,
302 // mOmega,
303 // mNx/mNy/mNz
304 //
305 // to calculate:
306 //
307 // mLat,mLon,mAlt_m,mRadarAlt_m
308 // mVelNorth_mps,mVelEast_mps,mVelDown_mps,
309 // mVertSpeed_fpm,
310 // mLocalHeading_deg,mLocalPitch_deg,mLocalRoll_deg,
311 // mWcsYaw_rad,mWcsPitch_rad,mWcsRoll_rad
312 // mRollRate_dps,mPitchRate_dps,mYawRate_dps
313 // mAlpha_deg,mBeta_deg
314 // mRho,mDynamicPressure_psf,mStaticPressure_psf,mMach
315 // mSpeed_ktas,mSpeed_kias
316 void CalculateSecondaryParameters(const P6DofAtmosphere* aAtmospherePtr);
317
318 // This calculates the great circle distance from the point at which the object was created
319 void CalcRangeSinceStart();
320
321 // This returns the last body-relative acceleration (in gees) in the x-direction
322 double GetLastNx_g() const;
323
324 // This returns the last body-relative acceleration (in gees) in the y-direction
325 double GetLastNy_g() const;
326
327 // This returns the last body-relative acceleration (in gees) in the z-direction
328 double GetLastNz_g() const;
329
330 // -------------------------------------------------------------------------
331
332 // The CalculateLLAofRelativePoint calculates the LLA of a relative point. It is
333 // typically used for ground reaction points. It uses the location and attitude of
334 // the P6DofVehicle (parent) along with the relative position of the point (which
335 // is defined in body coordinates) to calculate the lat/lon/alt of the point.
336 // It also calculates the compression and rolling vectors in NED coords and returns
337 // terrain data at the point, including the normal of the terrain (in NED) and the
338 // friction multiplier. It also provides the compression of the point "into" the terrain.
339 // It returns true if data is valid.
340 static bool CalculateLLAofRelativePoint(const P6DofTerrain* aTerrainPtr,
341 const P6DofKinematicState& aKinematicState,
342 const UtVec3dX& aBodyRelPos_m,
343 const UtVec3dX& aBodyRelCompressionVector,
344 const UtVec3dX& aBodyRelRollingVector,
345 UtVec3dX& aGearVelNED_mps,
346 double& aLat,
347 double& aLon,
348 double& aAlt_m,
349 double& aHeightAboveTerrain_m,
350 UtVec3dX& aCompressionVectorNED,
351 UtVec3dX& aRollingVectorInSurfaceNED,
352 UtVec3dX& aNormalVectorNED,
353 UtVec3dX& aSurfaceSpeedVectorNED_mps,
354 double& aFrictionMultiplier,
355 double& aCompression_m);
356
357 static UtVec3dX NormalizedGravitationalAccelVec(const P6DofGravity* aGravityPtr,
358 const double aLat,
359 const double aLon,
360 const double aAlt_m,
361 const bool aUseSphericalEarth);
362
364
365 // This collection of six functions utilize the current state of the object
366
367 // Get NED vector from other reference frames
368
369 // This returns a NED vector based on a vector in body coords
370 UtVec3dX CalcNEDVecFromBodyVec(const UtVec3dX& aVecBody) const;
371
372 // This returns a NED vector based on a vector in body coords
373 UtVec3dX CalcNEDVecFromInertialVec(const UtVec3dX& aVecInertial) const;
374
375 // Get inertial vector from other reference frames
376
377 // This returns an inertial vector based on a vector in body coords
378 UtVec3dX CalcInertialVecFromBodyVec(const UtVec3dX& aVecBody) const;
379
380 // This returns an inertial vector based on a vector in NED coords
381 UtVec3dX CalcInertialVecFromNEDVec(const UtVec3dX& aVecNED) const;
382
383 // Get body vector from other reference frames
384
385 // This returns a body vector based on a vector in NED coords
386 UtVec3dX CalcBodyVecFromNEDVec(const UtVec3dX& aVecNED) const;
387
388 // This returns a body vector based on a vector in inertial coords
389 UtVec3dX CalcBodyVecFromInertialVec(const UtVec3dX& aVecInertial) const;
390
392
393 UtVec3dX GetInertialVelocity() const;
394
395 // Returns rotational rate in radians/sec
396 UtVec3dX GetOmegaBody() const { return mOmega; }
397
398 // Sets rotational rate in radians/sec
399 void SetOmegaBody(const UtVec3dX& aOmega) { mOmega = aOmega; }
400
401 // Returns rotational acceleration (omega-dot) in radians/sec^2
402 UtVec3dX GetOmegaBodyDot() const { return mOmegaDot; }
403
404 // Sets rotational acceleration (omega-dot) in radians/sec^2
405 void SetOmegaBodyDot(const UtVec3dX& aOmegaDot) { mOmegaDot = aOmegaDot; }
406
407 UtVec3dX GetLocationWGS() const { return mWGS84_pos; }
408 void SetLocationWGS(const UtVec3dX& aWGS84_pos) { mWGS84_pos = aWGS84_pos; }
409
410 UtVec3dX GetVelocityWGS() const { return mWGS84_vel; }
411 void SetVelocityWGS(const UtVec3dX& aWGS84_vel) { mWGS84_vel = aWGS84_vel; }
412
413 UtVec3dX GetLocationSpherical() const { return mSpherical_pos; }
414 void SetLocationSpherical(const UtVec3dX& aSpherical_pos) { mSpherical_pos = aSpherical_pos; }
415
416 UtVec3dX GetVelocitySpherical() const { return mSpherical_vel; }
417 void SetVelocitySpherical(const UtVec3dX& aSpherical_vel) { mSpherical_vel = aSpherical_vel; }
418
419 void ZeroVelocity();
420
421 // Returns rotational rate in deg/sec
422 UtVec3dX GetOmegaBodyDPS() const;
423
425 void SetStartingLatLon(double aLat, double aLon);
426 void GetStartingLatLon(double& aLat, double& aLon) const;
427
429 double GetApogee_km() const { return mApogee_km; }
430
431 void SetInertialAccel(const UtVec3dX& aInertialAccel) { mInertialAccel = aInertialAccel; }
432 UtVec3dX GetInertialAccel() const { return mInertialAccel; }
433
434 void SetRefEarthRadius();
435
436 UtEntity& GetUtEntity() { return mUtEntity; }
437
439
440 double GetLift() const { return mLift_lbs; } // Returns the lift in lbs
441 double GetDrag() const { return mDrag_lbs; } // Returns the drag in lbs
442 double GetSideForce() const { return mSideForce_lbs; } // Returns the side force in lbs
443 UtVec3dX GetMoment() const { return mMoment_ftlbs; } // Returns the moment vector in ft*lbs
444 double GetYawMoment() const { return mMoment_ftlbs.Z(); } // Returns the yaw moment in ft*lbs
445 double GetPitchMoment() const { return mMoment_ftlbs.Y(); } // Returns the pitch moment in ft*lbs
446 double GetRollMoment() const { return mMoment_ftlbs.X(); } // Returns the roll moment in ft*lbs
447 double GetThrust() const { return mThrust_lbs; } // Returns the thrust in lbs
448 double GetWeight() const { return mWgt_lbs; } // Returns the weight/mass in lbs
449
450 void SetLastUpdateTime(int64_t aLastUpdate_nanosec) { mLastUpdate_nanosec = aLastUpdate_nanosec; }
451
452 // This sets kinematic state parameters to a zero condition during testing
453 void ZeroKinematicsDuringTesting();
454
455protected:
456 // This is used for the earth radius when mUseSphericalEarth is true
457 // Note: The AFSIM cEARTH_RADIUS = 6366707.0194937074958 (6366.7 km)
458 // Typical earth radius is 6371 km -- note the 4.3 km discrepancy
459 // Distances from points on the surface to the center range from
460 // 6,353 km to 6,384 km. Several different ways of modeling the
461 // Earth as a sphere each yield a mean radius of 6,371 km.
462 static const double gSphericalEarthRadius_m;
463
464 // This flag is used to denote that a spherical earth (rather than elliptical
465 // earth) model should be used in calculations. This is often done for simple
466 // ballistic missile models.
468
469 // This flag is used to denote that a earth rotation should be considered in
470 // calculations. This is often done for high-fidelity ballistic missile models.
472
473 // This flag is used to ignore any jettisoned objects. This prevents the
474 // subobjects from becoming free -- they will be removed instead. This flag
475 // is typically used for multi-stage rockets/missile where the trajectory
476 // of spent stages is not needed.
478
479 UtVec3dX mWGS84_pos;
480 UtVec3dX mWGS84_vel;
481
484
486
487 UtDCM mDCM;
488 UtEntity mUtEntity;
489 UtVec3dX mOmega; // Body rates
490 UtVec3dX mOmegaDot; // Body acceleration
491
492 double mNx_g;
493 double mNy_g;
494 double mNz_g;
495 double mLift_lbs;
497 double mDrag_lbs;
499 double mWgt_lbs;
501
502 double mRho_slugs_per_ft3; // [ ((lbf*sec^2)/ft^4) or slugs/ft^3 ]
505
506 double mLat;
507 double mLon;
508 double mAlt_m;
510
514
516 double mBeta_deg;
519
524
529
533
534 double mWcsYaw_rad; // TODO - review the use of these
535 double mWcsPitch_rad; // TODO - review the use of these
536 double mWcsRoll_rad; // TODO - review the use of these
537
539
541
542 // This is used for range calculations. It is set during initialization,
543 // based on the type of earth (WGS or spherical) used by this object.
545
550
551 double mLastNx;
552 double mLastNy;
553 double mLastNz;
557
559
560 // These are the last delta angles calculated during an update. They
561 // are needed by the PilotController object and the P6DofVehicle will
562 // call the GetAngleDeltas() function above to get them.
566
568 double mLastAlpha_deg = 0.0;
569 double mLastBeta_deg = 0.0;
570};
571
572#endif
P6DofAtmosphere provides atmospheric data for Pseudo 6DOF objects.
Definition P6DofAtmosphere.hpp:28
P6DofAtmosphere provides atmospheric data for Pseudo 6DOF objects.
Definition P6DofGravity.hpp:22
Definition P6DofKinematicState.hpp:31
double mLocalHeading_deg
Definition P6DofKinematicState.hpp:530
bool IgnoreJettisonObjects() const
Definition P6DofKinematicState.hpp:241
double GetYawMoment() const
Definition P6DofKinematicState.hpp:444
double mNx_g
Definition P6DofKinematicState.hpp:492
UtVec3dX mSpherical_pos
Definition P6DofKinematicState.hpp:482
bool mStartingLocationInitialized
Definition P6DofKinematicState.hpp:549
void SetLocalRoll_deg(double aRoll)
Definition P6DofKinematicState.hpp:134
double GetAlphaDot_rps() const
Definition P6DofKinematicState.cpp:750
void SetVelocityWGS(const UtVec3dX &aWGS84_vel)
Definition P6DofKinematicState.hpp:411
double GetPitchWCS() const
Definition P6DofKinematicState.hpp:176
double mSpeed_fps
Definition P6DofKinematicState.hpp:520
const P6DofAtmosphere * GetAtmospherePtr() const
Definition P6DofKinematicState.hpp:438
double GetSpeed_fps() const
Definition P6DofKinematicState.hpp:92
double GetWeight() const
Definition P6DofKinematicState.hpp:448
UtVec3dX mInertialAccel
Definition P6DofKinematicState.hpp:485
void SetOmegaBodyDot(const UtVec3dX &aOmegaDot)
Definition P6DofKinematicState.hpp:405
double mFlightPathAngle_rad
Definition P6DofKinematicState.hpp:540
double GetBeta_rad() const
Definition P6DofKinematicState.cpp:735
double mThrust_lbs
Definition P6DofKinematicState.hpp:496
void SetIgnoreJettisonObjects(bool aValue)
Definition P6DofKinematicState.hpp:250
void SetTheLastValues()
Definition P6DofKinematicState.cpp:715
double mYawRate_dps
Definition P6DofKinematicState.hpp:526
void SetUseRotatingEarth(bool aValue)
Definition P6DofKinematicState.hpp:247
double GetThrust() const
Definition P6DofKinematicState.hpp:447
void SetDCM(const UtDCM &aDCM)
Definition P6DofKinematicState.hpp:86
double mDrag_lbs
Definition P6DofKinematicState.hpp:497
void SetLocalPitch_deg(double aPitch)
Definition P6DofKinematicState.hpp:131
void SetAlt(double aAlt_m)
Definition P6DofKinematicState.hpp:164
P6DofKinematicState()
Definition P6DofKinematicState.cpp:30
double mDeltaRoll_rad
Definition P6DofKinematicState.hpp:565
void SetLocationSpherical(const UtVec3dX &aSpherical_pos)
Definition P6DofKinematicState.hpp:414
UtVec3dX GetOmegaBody() const
Definition P6DofKinematicState.hpp:396
double GetLift() const
Definition P6DofKinematicState.hpp:440
bool UseSphericalEarth() const
Definition P6DofKinematicState.hpp:235
UtVec3dX GetOmegaBodyDot() const
Definition P6DofKinematicState.hpp:402
double GetBetaDot_rps() const
Definition P6DofKinematicState.cpp:760
double mSpeed_kias
Definition P6DofKinematicState.hpp:522
UtVec3dX GetLocationSpherical() const
Definition P6DofKinematicState.hpp:413
void SetAngleDeltas(double aDeltaYaw_rad, double aDeltaPitch_rad, double aDeltaRoll_rad)
Definition P6DofKinematicState.cpp:1149
UtDCM GetDCM() const
Definition P6DofKinematicState.hpp:83
double GetSpeed_kias() const
Definition P6DofKinematicState.hpp:101
bool mUseSphericalEarth
Definition P6DofKinematicState.hpp:467
bool UseRotatingEarth() const
Definition P6DofKinematicState.hpp:238
double mLastNx
Definition P6DofKinematicState.hpp:551
double mRollRate_dps
Definition P6DofKinematicState.hpp:528
double GetBetaDot_dps() const
Definition P6DofKinematicState.cpp:755
double mDeltaPitch_rad
Definition P6DofKinematicState.hpp:564
double mLastDynamicPressure_psf
Definition P6DofKinematicState.hpp:554
double GetFlightPathAngle_rad() const
Definition P6DofKinematicState.hpp:137
double mLift_lbs
Definition P6DofKinematicState.hpp:495
void SetLocalHeading_deg(double aHeading)
Definition P6DofKinematicState.hpp:128
static const double gSphericalEarthRadius_m
Definition P6DofKinematicState.hpp:462
double mLat
Definition P6DofKinematicState.hpp:506
void SetUseSphericalEarth(bool aValue)
Definition P6DofKinematicState.hpp:244
void SetLocationWGS(const UtVec3dX &aWGS84_pos)
Definition P6DofKinematicState.hpp:408
double mPitchRate_dps
Definition P6DofKinematicState.hpp:527
double mLastBeta_deg
Definition P6DofKinematicState.hpp:569
double GetDrag() const
Definition P6DofKinematicState.hpp:441
double GetLocalHeading_deg() const
Definition P6DofKinematicState.hpp:110
double mDynamicPressure_psf
Definition P6DofKinematicState.hpp:503
UtVec3dX mMoment_ftlbs
Definition P6DofKinematicState.hpp:500
double mSpeed_ktas
Definition P6DofKinematicState.hpp:521
double mNy_g
Definition P6DofKinematicState.hpp:493
double GetLocalPitch_deg() const
Definition P6DofKinematicState.hpp:116
UtVec3dX mWGS84_pos
Definition P6DofKinematicState.hpp:479
UtVec3dX GetVelocityWGS() const
Definition P6DofKinematicState.hpp:410
double mNz_g
Definition P6DofKinematicState.hpp:494
void SetAlphaBetaDotToZero()
Definition P6DofKinematicState.cpp:765
UtVec3dX GetMoment() const
Definition P6DofKinematicState.hpp:443
double GetVerticalSpeed_fpm() const
Definition P6DofKinematicState.hpp:215
double GetRangeSinceStart_km() const
Definition P6DofKinematicState.hpp:428
double mWcsYaw_rad
Definition P6DofKinematicState.hpp:534
double GetAirDensity_slugs_per_ft3() const
Definition P6DofKinematicState.hpp:149
double mAlt_m
Definition P6DofKinematicState.hpp:508
double mStaticPressure_psf
Definition P6DofKinematicState.hpp:504
double mLocalRoll_deg
Definition P6DofKinematicState.hpp:532
UtDCM mDCM
Definition P6DofKinematicState.hpp:487
bool mIgnoreJettisonObjects
Definition P6DofKinematicState.hpp:477
double GetSideForce() const
Definition P6DofKinematicState.hpp:442
double GetLocalRoll_deg() const
Definition P6DofKinematicState.hpp:122
double mStartingLon
Definition P6DofKinematicState.hpp:548
void SetInertialAccel(const UtVec3dX &aInertialAccel)
Definition P6DofKinematicState.hpp:431
double mSpeed_Mach
Definition P6DofKinematicState.hpp:523
double mLon
Definition P6DofKinematicState.hpp:507
UtVec3dX mOmega
Definition P6DofKinematicState.hpp:489
double mWcsPitch_rad
Definition P6DofKinematicState.hpp:535
UtVec3dX mWGS84_vel
Definition P6DofKinematicState.hpp:480
double mDeltaYaw_rad
Definition P6DofKinematicState.hpp:563
void GetAngleDeltas(double &aDeltaYaw_rad, double &aDeltaPitch_rad, double &aDeltaRoll_rad) const
Definition P6DofKinematicState.cpp:1142
void RemoveAlphaForTesting(P6DofAtmosphere *aAtmospherePtr)
Definition P6DofKinematicState.cpp:1156
void SetLastUpdateTime(int64_t aLastUpdate_nanosec)
Definition P6DofKinematicState.hpp:450
double mLastNz
Definition P6DofKinematicState.hpp:553
double mVertSpeed_fpm
Definition P6DofKinematicState.hpp:525
double GetPitchMoment() const
Definition P6DofKinematicState.hpp:445
double GetSpeed_ktas() const
Definition P6DofKinematicState.hpp:98
double mVelNorth_mps
Definition P6DofKinematicState.hpp:511
double mAlphaDot_dps
Definition P6DofKinematicState.hpp:517
UtEntity & GetUtEntity()
Definition P6DofKinematicState.hpp:436
double mLocalPitch_deg
Definition P6DofKinematicState.hpp:531
UtVec3dX mSpherical_vel
Definition P6DofKinematicState.hpp:483
double GetAlpha_deg() const
Definition P6DofKinematicState.cpp:725
UtVec3dX GetLocationWGS() const
Definition P6DofKinematicState.hpp:407
double mLastAlpha_deg
Definition P6DofKinematicState.hpp:568
UtVec3dX mOmegaDot
Definition P6DofKinematicState.hpp:490
void UpdateAeroState(const P6DofAtmosphere *aAtmosphere, const P6DofWind *aWind, const int64_t aSimTime_nanosec, const double aDeltaT_sec)
Definition P6DofKinematicState.cpp:1076
double mWgt_lbs
Definition P6DofKinematicState.hpp:499
double mBetaDot_dps
Definition P6DofKinematicState.hpp:518
int64_t mLastUpdate_nanosec
Definition P6DofKinematicState.hpp:567
UtVec3dX GetVelocitySpherical() const
Definition P6DofKinematicState.hpp:416
double mRho_slugs_per_ft3
Definition P6DofKinematicState.hpp:502
double mRangeSinceStart_km
Definition P6DofKinematicState.hpp:546
double GetAlpha_rad() const
Definition P6DofKinematicState.cpp:730
double GetDynamicPressure_psf() const
Definition P6DofKinematicState.hpp:143
double mAlpha_deg
Definition P6DofKinematicState.hpp:515
double mWcsRoll_rad
Definition P6DofKinematicState.hpp:536
double GetSpeed_Mach() const
Definition P6DofKinematicState.hpp:104
double mSideForce_lbs
Definition P6DofKinematicState.hpp:498
double mRefEarthRadius_m
Definition P6DofKinematicState.hpp:544
double mLastAlt_m
Definition P6DofKinematicState.hpp:556
double GetRollMoment() const
Definition P6DofKinematicState.hpp:446
double mVelEast_mps
Definition P6DofKinematicState.hpp:512
bool mUseRotatingEarth
Definition P6DofKinematicState.hpp:471
double GetYawWCS() const
Definition P6DofKinematicState.hpp:182
const P6DofAtmosphere * mAtmospherePtr
Definition P6DofKinematicState.hpp:558
double mBeta_deg
Definition P6DofKinematicState.hpp:516
double GetBeta_deg() const
Definition P6DofKinematicState.cpp:740
double mApogee_km
Definition P6DofKinematicState.hpp:538
double GetStaticPressure_psf() const
Definition P6DofKinematicState.hpp:146
double mLastNy
Definition P6DofKinematicState.hpp:552
UtVec3dX GetInertialAccel() const
Definition P6DofKinematicState.hpp:432
double GetAlphaDot_dps() const
Definition P6DofKinematicState.cpp:745
double mStartingLat
Definition P6DofKinematicState.hpp:547
double mLastStaticPressure_psf
Definition P6DofKinematicState.hpp:555
double mVelDown_mps
Definition P6DofKinematicState.hpp:513
UtEntity mUtEntity
Definition P6DofKinematicState.hpp:488
void SetOmegaBody(const UtVec3dX &aOmega)
Definition P6DofKinematicState.hpp:399
double GetRollWCS() const
Definition P6DofKinematicState.hpp:179
double GetApogee_km() const
Definition P6DofKinematicState.hpp:429
bool StartingLocationInitialized() const
Definition P6DofKinematicState.hpp:424
void SetVelocitySpherical(const UtVec3dX &aSpherical_vel)
Definition P6DofKinematicState.hpp:417
double mRadarAlt_m
Definition P6DofKinematicState.hpp:509
P6DofTerrain provides height of terrain for Pseudo 6DOF objects. This base.
Definition P6DofTerrain.hpp:29
P6DofWind provides wind data for Pseudo 6DOF objects. This base class.
Definition P6DofWind.hpp:23
Copyrights Multiple, All Rights Reserved