12#ifndef P6DOFKINEMATICSTATE_H
13#define P6DOFKINEMATICSTATE_H
15#include "p6dof_export.h"
20#include "UtEntity.hpp"
21#include "UtLLAPos.hpp"
22#include "UtVec3dX.hpp"
42 const int64_t aSimTime_nanosec,
43 const double aDeltaT_sec);
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);
89 UtLLAPos GetCurrentPositionLLA()
const;
95 double GetSpeed_mps()
const;
107 UtVec3dX GetVelocityNED_mps()
const;
113 double GetLocalHeading_rad()
const;
119 double GetLocalPitch_rad()
const;
125 double GetLocalRoll_rad()
const;
140 double GetFlightPathAngle_deg()
const;
152 double GetLat()
const;
155 double GetLon()
const;
158 double GetAlt_m()
const;
161 double GetAlt_ft()
const;
167 double GetNx_g()
const;
170 double GetNy_g()
const;
173 double GetNz_g()
const;
185 void SetOrientationWCS(
double aYaw_rad,
double aPitch_rad,
double aRoll_rad);
188 double GetYawRate_rps()
const;
191 double GetPitchRate_rps()
const;
194 double GetRollRate_rps()
const;
197 double GetYawRate_dps()
const;
200 double GetPitchRate_dps()
const;
203 double GetRollRate_dps()
const;
206 void SetYawRate(
double aYawRate_dps);
209 void SetPitchRate(
double aPitchRate_dps);
212 void SetRollRate(
double aRollRate_dps);
218 double GetLastDynamicPressure_psf()
const;
221 double GetLastStaticPressure_psf()
const;
224 double GetLastAltitudeMSL_ft()
const;
228 void GetBodyAeroVectors(
const UtDCM& aDCM,
229 const UtVec3dX& aInertialVelVector,
230 UtVec3dX& aLiftBodyVector,
231 UtVec3dX& aDragBodyVector,
232 UtVec3dX& aSideForceBodyVector)
const;
253 void SetPositionLLA(
double aLat,
double aLon,
double aAlt_m);
256 void SetAttitude_rad(
double aHeading_rad,
double aPitch_rad,
double aRoll_rad);
259 void SetVerticalSpeed_fpm(
double aVertSpeed_fpm);
262 void SetSpeed_fps(
double aSpeed_fps);
265 void SetSpeed_mps(
double aSpeed_mps);
268 void SetSpeed_mph(
double aSpeed_mph);
271 void SetSpeed_ktas(
double aSpeed_ktas);
274 void SetSpeed_kias(
double aSpeed_kias);
277 void SetSpeed_Mach(
double aSpeed_Mach);
280 void SetBodyAccel(
double aNx_g,
double aNy_g,
double aNz_g);
283 void SetLiftDragSideForceThrustWeight(
double aLift_lbs,
285 double aSideForce_lbs,
290 void SetMomentAtCG(UtVec3dX aMoment_ftlbs);
293 void SetVelocityNED(
double aVelNorth_mps,
double aVelEast_mps,
double aVelDown_mps);
296 void CalculateRates(int64_t aSimTime_nanosec);
316 void CalculateSecondaryParameters(
const P6DofAtmosphere* aAtmospherePtr);
319 void CalcRangeSinceStart();
322 double GetLastNx_g()
const;
325 double GetLastNy_g()
const;
328 double GetLastNz_g()
const;
340 static bool CalculateLLAofRelativePoint(
const P6DofTerrain* aTerrainPtr,
342 const UtVec3dX& aBodyRelPos_m,
343 const UtVec3dX& aBodyRelCompressionVector,
344 const UtVec3dX& aBodyRelRollingVector,
345 UtVec3dX& aGearVelNED_mps,
349 double& aHeightAboveTerrain_m,
350 UtVec3dX& aCompressionVectorNED,
351 UtVec3dX& aRollingVectorInSurfaceNED,
352 UtVec3dX& aNormalVectorNED,
353 UtVec3dX& aSurfaceSpeedVectorNED_mps,
354 double& aFrictionMultiplier,
355 double& aCompression_m);
357 static UtVec3dX NormalizedGravitationalAccelVec(
const P6DofGravity* aGravityPtr,
361 const bool aUseSphericalEarth);
370 UtVec3dX CalcNEDVecFromBodyVec(
const UtVec3dX& aVecBody)
const;
373 UtVec3dX CalcNEDVecFromInertialVec(
const UtVec3dX& aVecInertial)
const;
378 UtVec3dX CalcInertialVecFromBodyVec(
const UtVec3dX& aVecBody)
const;
381 UtVec3dX CalcInertialVecFromNEDVec(
const UtVec3dX& aVecNED)
const;
386 UtVec3dX CalcBodyVecFromNEDVec(
const UtVec3dX& aVecNED)
const;
389 UtVec3dX CalcBodyVecFromInertialVec(
const UtVec3dX& aVecInertial)
const;
393 UtVec3dX GetInertialVelocity()
const;
422 UtVec3dX GetOmegaBodyDPS()
const;
425 void SetStartingLatLon(
double aLat,
double aLon);
426 void GetStartingLatLon(
double& aLat,
double& aLon)
const;
434 void SetRefEarthRadius();
453 void ZeroKinematicsDuringTesting();
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