12#ifndef WSFSIXDOFKINEMATICSTATE_HPP
13#define WSFSIXDOFKINEMATICSTATE_HPP
15#include "wsf_six_dof_export.h"
19#include "UtCentralBody.hpp"
21#include "UtEntity.hpp"
22#include "UtLLAPos.hpp"
23#include "UtVec3dX.hpp"
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;
92 double GetSpeed_mps()
const;
95 double GetSpeed_fps()
const;
98 double GetSpeed_ktas()
const;
101 double GetSpeed_kias()
const;
104 double GetSpeed_Mach()
const;
107 UtVec3dX GetVelocityNED_mps()
const;
113 double GetLocalHeading_rad()
const;
119 double GetLocalPitch_rad()
const;
125 double GetLocalRoll_rad()
const;
128 double GetFlightPathAngle_rad()
const;
134 double GetBearing_rad()
const;
149 double GetLat()
const;
152 double GetLon()
const;
155 double GetAlt_m()
const;
158 double GetAlt_ft()
const;
164 double GetNx_g()
const;
167 double GetNy_g()
const;
170 double GetNz_g()
const;
178 mUtEntity.GetOrientationWCS(psi, theta, phi);
189 mUtEntity.GetOrientationWCS(psi, theta, phi);
200 mUtEntity.GetOrientationWCS(psi, theta, phi);
206 void SetOrientationWCS(
double aYaw_rad,
double aPitch_rad,
double aRoll_rad);
209 double GetYawRate_rps()
const;
212 double GetPitchRate_rps()
const;
215 double GetRollRate_rps()
const;
218 double GetYawRate_dps()
const;
221 double GetPitchRate_dps()
const;
224 double GetRollRate_dps()
const;
227 void SetYawRate(
double aYawRate_dps);
230 void SetPitchRate(
double aPitchRate_dps);
233 void SetRollRate(
double aRollRate_dps);
238 UtVec3dX velocityNED;
239 mUtEntity.GetVelocityNED(velocityNED.GetData());
242 return -velocityNED.Z() * UtMath::cFT_PER_M * 60.0;
246 double GetLastDynamicPressure_psf()
const;
249 double GetLastStaticPressure_psf()
const;
252 double GetLastAltitudeMSL_ft()
const;
256 void GetBodyAeroVectors(
const UtDCM& aDCM,
257 const UtVec3dX& aInertialVelVector,
258 UtVec3dX& aLiftBodyVector,
259 UtVec3dX& aDragBodyVector,
260 UtVec3dX& aSideForceBodyVector)
const;
272 void SetUseSphericalEarth(
bool aValue);
281 void SetPositionLLA(
double aLat,
double aLon,
double aAlt_m);
284 void SetAttitude_rad(
double aHeading_rad,
double aPitch_rad,
double aRoll_rad);
287 void SetSpeed_fps(
double aSpeed_fps,
double aBearing_deg,
double aFlightPathAngle_deg);
290 void SetSpeed_mps(
double aSpeed_mps,
double aBearing_deg,
double aFlightPathAngle_deg);
293 void SetSpeed_mph(
double aSpeed_mph,
double aBearing_deg,
double aFlightPathAngle_deg);
296 void SetSpeed_ktas(
double aSpeed_ktas,
double aBearing_deg,
double aFlightPathAngle_deg);
299 void SetSpeed_kias(
double aSpeed_kias,
double aBearing_deg,
double aFlightPathAngle_deg);
302 void SetSpeed_Mach(
double aSpeed_Mach,
double aBearing_deg,
double aFlightPathAngle_deg);
305 void SetBodyAccel(
double aNx_g,
double aNy_g,
double aNz_g);
308 void SetLiftDragSideForceThrustWeight(
double aLift_lbs,
310 double aSideForce_lbs,
315 void SetMomentAtCG(UtVec3dX aMoment_ftlbs);
318 void SetVelocityNED(
double aVelNorth_mps,
double aVelEast_mps,
double aVelDown_mps);
338 void CalculateSecondaryParameters();
341 void CalcRangeSinceStart();
344 double GetLastNx_g()
const;
347 double GetLastNy_g()
const;
350 double GetLastNz_g()
const;
362 static bool CalculateLLAofRelativePoint(
double aTerrainElevation_m,
364 const UtVec3dX& aBodyRelPos_m,
365 const UtVec3dX& aBodyRelCompressionVector,
366 const UtVec3dX& aBodyRelRollingVector,
367 UtVec3dX& aGearVelNED_mps,
371 double& aHeightAboveTerrain_m,
372 UtVec3dX& aCompressionVectorNED,
373 UtVec3dX& aRollingVectorInSurfaceNED,
374 UtVec3dX& aNormalVectorNED,
375 UtVec3dX& aSurfaceSpeedVectorNED_mps,
376 double& aFrictionMultiplier,
377 double& aCompression_m);
386 UtVec3dX CalcNEDVecFromBodyVec(
const UtVec3dX& aVecBody)
const;
389 UtVec3dX CalcNEDVecFromWCSVec(
const UtVec3dX& aVecInertial)
const;
394 UtVec3dX CalcWCSVecFromBodyVec(
const UtVec3dX& aVecBody)
const;
397 UtVec3dX CalcWCSVecFromNEDVec(
const UtVec3dX& aVecNED)
const;
402 UtVec3dX CalcBodyVecFromNEDVec(
const UtVec3dX& aVecNED)
const;
405 UtVec3dX CalcBodyVecFromWCSVec(
const UtVec3dX& aVecInertial)
const;
447 UtVec3dX GetOmegaBodyDPS()
const;
450 void SetStartingLatLon(
double aLat,
double aLon);
451 void GetStartingLatLon(
double& aLat,
double& aLon)
const;
462 UtVec3dX NormalizedGravitationalAccelVec()
const;
477 void ZeroKinematicsDuringTesting();
559 static constexpr const char*
GetNameId() {
return "earth_sixdofsphere"; }
UtVec3d pos
Definition WsfScriptTrackClass.cpp:1881
UtVec3d vel
Definition WsfScriptTrackClass.cpp:1881
Definition WsfSixDOF_Environment.hpp:30
Definition WsfSixDOF_KinematicState.hpp:34
double GetLat() const
Definition WsfSixDOF_KinematicState.cpp:454
void SetAlphaBetaDotToZero()
Definition WsfSixDOF_KinematicState.cpp:339
UtEntity mUtEntity
Definition WsfSixDOF_KinematicState.hpp:498
double mAlphaDot_dps
Definition WsfSixDOF_KinematicState.hpp:520
double mThrust_lbs
Definition WsfSixDOF_KinematicState.hpp:506
double mWgt_lbs
Definition WsfSixDOF_KinematicState.hpp:509
UtEntity & GetUtEntity()
Definition WsfSixDOF_KinematicState.hpp:459
double GetThrust() const
Definition WsfSixDOF_KinematicState.hpp:471
double mLastNy
Definition WsfSixDOF_KinematicState.hpp:535
double GetLocalRoll_deg() const
Definition WsfSixDOF_KinematicState.hpp:122
double GetLocalRoll_rad() const
Definition WsfSixDOF_KinematicState.cpp:381
UtVec3dX mAccelerationWCS
Definition WsfSixDOF_KinematicState.hpp:495
double mRadarAlt_m
Definition WsfSixDOF_KinematicState.hpp:516
double mSideForce_lbs
Definition WsfSixDOF_KinematicState.hpp:508
double mLift_lbs
Definition WsfSixDOF_KinematicState.hpp:505
void SetOmegaBodyDot(const UtVec3dX &aOmegaDot)
Definition WsfSixDOF_KinematicState.hpp:426
bool mIgnoreJettisonObjects
Definition WsfSixDOF_KinematicState.hpp:493
UtVec3dX GetAccelerationWCS() const
Definition WsfSixDOF_KinematicState.hpp:457
double mDeltaYaw_rad
Definition WsfSixDOF_KinematicState.hpp:546
void SetIgnoreJettisonObjects(bool aValue)
Definition WsfSixDOF_KinematicState.hpp:278
double mYawRate_dps
Definition WsfSixDOF_KinematicState.hpp:523
double GetRangeSinceStart_km() const
Definition WsfSixDOF_KinematicState.hpp:453
double GetApogee_km() const
Definition WsfSixDOF_KinematicState.hpp:454
double mAlpha_deg
Definition WsfSixDOF_KinematicState.hpp:518
double mBetaDot_dps
Definition WsfSixDOF_KinematicState.hpp:521
UtVec3dX mMoment_ftlbs
Definition WsfSixDOF_KinematicState.hpp:510
bool UseSphericalEarth() const
Definition WsfSixDOF_KinematicState.hpp:263
double GetLocalHeading_rad() const
Definition WsfSixDOF_KinematicState.cpp:359
int64_t mLastUpdate_nanosec
Definition WsfSixDOF_KinematicState.hpp:550
const Environment * mEnvironment
Definition WsfSixDOF_KinematicState.hpp:541
double GetRollWCS() const
Definition WsfSixDOF_KinematicState.hpp:184
double GetAlpha_rad() const
Definition WsfSixDOF_KinematicState.cpp:304
double GetAlphaDot_dps() const
Definition WsfSixDOF_KinematicState.cpp:319
double GetAlphaDot_rps() const
Definition WsfSixDOF_KinematicState.cpp:324
bool IgnoreJettisonObjects() const
Definition WsfSixDOF_KinematicState.hpp:269
double GetLift() const
Definition WsfSixDOF_KinematicState.hpp:464
double GetVerticalSpeed_fpm() const
Definition WsfSixDOF_KinematicState.hpp:236
double GetFlightPathAngle_rad() const
Definition WsfSixDOF_KinematicState.cpp:392
double mLastAlpha_deg
Definition WsfSixDOF_KinematicState.hpp:551
void SetAngleDeltas(double aDeltaYaw_rad, double aDeltaPitch_rad, double aDeltaRoll_rad)
Definition WsfSixDOF_KinematicState.cpp:724
UtDCM mDCM
Definition WsfSixDOF_KinematicState.hpp:497
double mNy_g
Definition WsfSixDOF_KinematicState.hpp:503
double GetLocalPitch_rad() const
Definition WsfSixDOF_KinematicState.cpp:370
double mNz_g
Definition WsfSixDOF_KinematicState.hpp:504
double GetBearing_rad() const
Definition WsfSixDOF_KinematicState.cpp:428
UtVec3dX mOmega
Definition WsfSixDOF_KinematicState.hpp:499
void SetDCM(const UtDCM &aDCM)
Definition WsfSixDOF_KinematicState.hpp:86
void RemoveAlphaForTesting()
Definition WsfSixDOF_KinematicState.cpp:731
double mLastBeta_deg
Definition WsfSixDOF_KinematicState.hpp:552
double mApogee_km
Definition WsfSixDOF_KinematicState.hpp:527
UtDCM GetDCM() const
Definition WsfSixDOF_KinematicState.hpp:83
double GetAlpha_deg() const
Definition WsfSixDOF_KinematicState.cpp:299
double mLastNx
Definition WsfSixDOF_KinematicState.hpp:534
double mBeta_deg
Definition WsfSixDOF_KinematicState.hpp:519
double GetBetaDot_dps() const
Definition WsfSixDOF_KinematicState.cpp:329
bool UseRotatingEarth() const
Definition WsfSixDOF_KinematicState.hpp:266
double GetYawMoment() const
Definition WsfSixDOF_KinematicState.hpp:468
double GetDrag() const
Definition WsfSixDOF_KinematicState.hpp:465
double GetBeta_rad() const
Definition WsfSixDOF_KinematicState.cpp:309
double GetDynamicPressure_psf() const
Definition WsfSixDOF_KinematicState.hpp:140
void UpdateAeroState(const int64_t aSimTime_nanosec)
Definition WsfSixDOF_KinematicState.cpp:664
double GetStaticPressure_psf() const
Definition WsfSixDOF_KinematicState.hpp:143
double GetPitchWCS() const
Definition WsfSixDOF_KinematicState.hpp:173
double GetBeta_deg() const
Definition WsfSixDOF_KinematicState.cpp:314
UtVec3dX GetVelocityWCS() const
Definition WsfSixDOF_KinematicState.hpp:436
double mStaticPressure_psf
Definition WsfSixDOF_KinematicState.hpp:514
UtVec3dX GetOmegaBodyDot() const
Definition WsfSixDOF_KinematicState.hpp:423
double mPitchRate_dps
Definition WsfSixDOF_KinematicState.hpp:524
double mLastStaticPressure_psf
Definition WsfSixDOF_KinematicState.hpp:538
double mLastNz
Definition WsfSixDOF_KinematicState.hpp:536
UtVec3dX GetVelocityECI() const
Definition WsfSixDOF_KinematicState.hpp:409
UtVec3dX mOmegaDot
Definition WsfSixDOF_KinematicState.hpp:500
bool mUseRotatingEarth
Definition WsfSixDOF_KinematicState.hpp:487
double GetLocalPitch_deg() const
Definition WsfSixDOF_KinematicState.hpp:116
double GetLocalHeading_deg() const
Definition WsfSixDOF_KinematicState.hpp:110
UtVec3dX GetLocationWCS() const
Definition WsfSixDOF_KinematicState.hpp:428
void SetAccelerationWCS(const UtVec3dX &aAccelerationWCS)
Definition WsfSixDOF_KinematicState.hpp:456
void SetTheLastValues()
Definition WsfSixDOF_KinematicState.cpp:244
double GetFlightPathAngle_deg() const
Definition WsfSixDOF_KinematicState.hpp:131
double GetWeight() const
Definition WsfSixDOF_KinematicState.hpp:472
double mDynamicPressure_psf
Definition WsfSixDOF_KinematicState.hpp:513
void SetLastUpdateTime(int64_t aLastUpdate_nanosec)
Definition WsfSixDOF_KinematicState.hpp:474
void GetAngleDeltas(double &aDeltaYaw_rad, double &aDeltaPitch_rad, double &aDeltaRoll_rad) const
Definition WsfSixDOF_KinematicState.cpp:717
UtVec3dX GetMoment() const
Definition WsfSixDOF_KinematicState.hpp:467
void SetVelocityWCS(const UtVec3dX &aVelWCS)
Definition WsfSixDOF_KinematicState.hpp:442
double mDrag_lbs
Definition WsfSixDOF_KinematicState.hpp:507
double mDeltaRoll_rad
Definition WsfSixDOF_KinematicState.hpp:548
bool mUseSphericalEarth
Definition WsfSixDOF_KinematicState.hpp:483
double GetRollMoment() const
Definition WsfSixDOF_KinematicState.hpp:470
void SetAlt(double aAlt_m)
Definition WsfSixDOF_KinematicState.hpp:161
double GetLon() const
Definition WsfSixDOF_KinematicState.cpp:464
double mNx_g
Definition WsfSixDOF_KinematicState.hpp:502
double GetSideForce() const
Definition WsfSixDOF_KinematicState.hpp:466
double GetBearing_deg() const
Definition WsfSixDOF_KinematicState.hpp:137
double GetBetaDot_rps() const
Definition WsfSixDOF_KinematicState.cpp:334
bool StartingLocationInitialized() const
Definition WsfSixDOF_KinematicState.hpp:449
double GetPitchMoment() const
Definition WsfSixDOF_KinematicState.hpp:469
void SetUseRotatingEarth(bool aValue)
Definition WsfSixDOF_KinematicState.hpp:275
double mStartingLon
Definition WsfSixDOF_KinematicState.hpp:531
double mLastAlt_m
Definition WsfSixDOF_KinematicState.hpp:539
double mRangeSinceStart_km
Definition WsfSixDOF_KinematicState.hpp:529
double mRho_slugs_per_ft3
Definition WsfSixDOF_KinematicState.hpp:512
UtVec3dX GetOmegaBody() const
Definition WsfSixDOF_KinematicState.hpp:417
KinematicState(const Environment *aEnvironmentPtr)
Definition WsfSixDOF_KinematicState.cpp:20
double mLastDynamicPressure_psf
Definition WsfSixDOF_KinematicState.hpp:537
double mRollRate_dps
Definition WsfSixDOF_KinematicState.hpp:525
void SetOmegaBody(const UtVec3dX &aOmega)
Definition WsfSixDOF_KinematicState.hpp:420
double mStartingLat
Definition WsfSixDOF_KinematicState.hpp:530
void SetLocationWCS(const UtVec3dX &aPosWCS)
Definition WsfSixDOF_KinematicState.hpp:434
double GetYawWCS() const
Definition WsfSixDOF_KinematicState.hpp:195
double GetAirDensity_slugs_per_ft3() const
Definition WsfSixDOF_KinematicState.hpp:146
double mDeltaPitch_rad
Definition WsfSixDOF_KinematicState.hpp:547
bool mStartingLocationInitialized
Definition WsfSixDOF_KinematicState.hpp:532
Definition for spherical Earth, based on WGS-84 ellipsoid.
Definition WsfSixDOF_KinematicState.hpp:557
double GetFirstEccentricitySquared() const override
Definition WsfSixDOF_KinematicState.hpp:565
double GetSemiMinorAxis() const override
Definition WsfSixDOF_KinematicState.hpp:563
const char * GetName() const override
Definition WsfSixDOF_KinematicState.hpp:560
double GetSecondEccentricitySquared() const override
Definition WsfSixDOF_KinematicState.hpp:566
CentralBodyEllipsoid * Clone() const override
Definition WsfSixDOF_KinematicState.hpp:561
double GetFlatteningReciprocal() const override
Definition WsfSixDOF_KinematicState.hpp:564
static constexpr const char * GetNameId()
Definition WsfSixDOF_KinematicState.hpp:559
double GetSemiMajorAxis() const override
Definition WsfSixDOF_KinematicState.hpp:562
SixDOF_SphericalEarth()
Definition WsfSixDOF_KinematicState.hpp:572
CentralBody * Clone() const override
Definition WsfSixDOF_KinematicState.hpp:577
static constexpr const char * GetNameId()
Definition WsfSixDOF_KinematicState.hpp:578
Definition WsfSA_Processor.hpp:35
Function definitions for those who need run-time access to the version.
Definition WsfComm.cpp:32