12#ifndef WSFARTICULATEDPART_HPP
13#define WSFARTICULATEDPART_HPP
15#include "UtCallback.hpp"
16#include "UtEntityPart.hpp"
18#include "wsf_export.h"
96 virtual void UpdatePosition(
double aSimTime);
136 void SetSlewRates(
double aAzSlewRate,
double aElSlewRate);
155 bool IsSlewing()
const;
219 void SetRoll(
double aRoll);
222 void SetPitch(
double aPitch);
225 void SetYaw(
double aYaw);
228 void SetTilt(
double aTilt);
230 void GetCurrentOrientationECS(
double& aYaw,
double& aPitch,
double& aRoll);
232 void GetLOS_UnitVectorWCS(
double aUnitLOS_WCS[3]);
249 bool GetActualCuedOrientation(
double& aAzimuth,
double& aElevation)
const;
251 void GetCurrentCuedOrientation(
double& aAzimuth,
double& aElevation)
const;
253 bool GetCuedLocationWCS(
double aCuedLocationWCS[3])
const;
255 void SetCuedLocationWCS(
const double aCuedLocationWCS[3]);
257 bool GetCuedOrientation(
double& aAzimuth,
double& aElevation)
const;
259 void SetCuedOrientation(
double aAzimuth,
double aElevation);
261 void GetAbsoluteCuedOrientation(
double& aAzimuth,
double& aElevation,
double aBaseNED[3]);
263 void ClearTransientCue();
267 bool GetTransientCuedLocationWCS(
double aCuedLocationWCS[3])
const;
269 void SetTransientCuedLocationWCS(
const double aCuedLocationWCS[3]);
276 double GetMaskingPatternFactor(
double aViewAzPCS,
double aViewElPCS,
const double aViewVecWCS[3]);
295 void SetPositionRateECS(
const double aDX,
const double aDY,
const double aDZ);
297 void GetCurrentPositionRateECS(
double& aDX,
double& aDY,
double& aDZ)
const;
303 void EnableArticulationUpdates(
double aSimTime,
double aInterval);
304 void DisableArticulationUpdates(
double aSimTime);
328 mArticulationUpdateEventActive = aUpdateEventActive;
336 virtual double TimeToCue(
double aDesiredAz,
double aDesiredEl)
const;
343 virtual double GetAzimuthRotationRate()
const;
344 virtual double GetElevationRotationRate()
const;
346 void SlewToOrientation(
double aSimTime,
double aDesiredAz,
double aDesiredEl);
348 virtual void TimeToRotate(
double& aDeltaAz,
353 double& aTimeToEl)
const;
355 void UpdateCuedOrientation(
double aSimTime);
357 bool UpdateOrientation(
double aSimTime);
452 double mArticulationUpdateInterval;
453 unsigned int mArticulationUpdateEventEpoch;
454 bool mArticulationUpdateEventActive;
#define WSF_DECLARE_COMPONENT_ROLE_TYPE(TYPE, ROLE)
Definition WsfComponentRoles.hpp:44
@ cWSF_COMPONENT_ARTICULATED_PART
The component derives from WsfArticulatedPart.
Definition WsfComponentRoles.hpp:99
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
Definition WsfArticulatedPart.hpp:36
double GetAzCueRate() const
Get the azimuth cue rate.
Definition WsfArticulatedPart.hpp:178
WsfStringId mMaskingPatternName
Definition WsfArticulatedPart.hpp:362
double mMaxAzSlew
Definition WsfArticulatedPart.hpp:390
double mLastUpdateTime
The time when the x/y/z position was last updated.
Definition WsfArticulatedPart.hpp:433
void SetElSlewLimits(double aMinElSlew, double aMaxElSlew)
Set the elevation slew limits.
Definition WsfArticulatedPart.hpp:146
double GetDX() const
Definition WsfArticulatedPart.hpp:299
SlewDirection
Definition WsfArticulatedPart.hpp:52
@ cUNDEFINED
Definition WsfArticulatedPart.hpp:53
@ cNEGATIVE
Definition WsfArticulatedPart.hpp:55
@ cPOSITIVE
Definition WsfArticulatedPart.hpp:54
double mAzSlewRate
The slewing rates and limits of the device with respect to the device coordinate system.
Definition WsfArticulatedPart.hpp:385
double mRoll
Definition WsfArticulatedPart.hpp:370
double mMaxElCue
Definition WsfArticulatedPart.hpp:406
double mMaxElSlewRate
Definition WsfArticulatedPart.hpp:388
double mYaw
The orientation of the device coordinate system.
Definition WsfArticulatedPart.hpp:368
double mMaxElSlew
Definition WsfArticulatedPart.hpp:392
SlewMode
Definition WsfArticulatedPart.hpp:44
@ cSLEW_AZ_EL
Definition WsfArticulatedPart.hpp:48
@ cSLEW_FIXED
Definition WsfArticulatedPart.hpp:45
@ cSLEW_EL
Definition WsfArticulatedPart.hpp:47
@ cSLEW_AZ
Definition WsfArticulatedPart.hpp:46
double GetMinElCue() const
Gets the minimum elevation cue limit.
Definition WsfArticulatedPart.hpp:186
SlewDirection mAzSlewDirection
Definition WsfArticulatedPart.hpp:396
int GetSlewState() const
Get the slew limit state.
Definition WsfArticulatedPart.hpp:131
double GetAzSlewRate() const
Get the current azimuth slew rate.
Definition WsfArticulatedPart.hpp:112
bool mIsSlewing
'true' if the part is slewing to satisfy a cueing request.
Definition WsfArticulatedPart.hpp:439
double GetDZ() const
Definition WsfArticulatedPart.hpp:301
unsigned int GetArticulationUpdateEventEpoch() const
Definition WsfArticulatedPart.hpp:316
void SetCueMode(SlewMode aCueMode)
Set the allowed cueing mode.
Definition WsfArticulatedPart.hpp:191
double mPitch
Definition WsfArticulatedPart.hpp:369
bool ArticulationUpdateEventActive() const
Is an 'Update' event active?
Definition WsfArticulatedPart.hpp:323
bool IsPrivate() const
Definition WsfArticulatedPart.hpp:288
bool TransientCueActive() const
Definition WsfArticulatedPart.hpp:265
double mDZ
Definition WsfArticulatedPart.hpp:377
SlewMode mCueMode
The directions (az and/or el) in which cueing can be performed.
Definition WsfArticulatedPart.hpp:410
int mSlewState
Definition WsfArticulatedPart.hpp:397
double mElSlewRate
Definition WsfArticulatedPart.hpp:386
void SetAzimuthSlewDirection(SlewDirection aAzSlewDirection)
Set the azimuth slew direction.
Definition WsfArticulatedPart.hpp:153
double mMaxAzCue
Definition WsfArticulatedPart.hpp:404
double GetDY() const
Definition WsfArticulatedPart.hpp:300
double GetTilt() const
Definition WsfArticulatedPart.hpp:227
double mTilt
The tilt angle above below the scan plane.
Definition WsfArticulatedPart.hpp:381
double mAzCueRate
The cueing rates and limits of the device with respect to the device coordinate system.
Definition WsfArticulatedPart.hpp:401
void SetCueRates(double aAzCueRate, double aElCueRate)
Set the angular cueing rates.
Definition WsfArticulatedPart.hpp:194
double mCuedAz
The cued azimuth if mCueType == cCUED_TO_ANGLE.
Definition WsfArticulatedPart.hpp:418
double GetMinAzSlew() const
Gets the minimum azimuth slew limit.
Definition WsfArticulatedPart.hpp:122
void SetArticulationUpdateEventActive(bool aUpdateEventActive)
Indicate if the 'Update' event is active.
Definition WsfArticulatedPart.hpp:326
double GetMaxElSlewRate() const
Get the maximum allowable elevation slew rate.
Definition WsfArticulatedPart.hpp:119
double mMinElSlew
Definition WsfArticulatedPart.hpp:391
WsfStringId mMaskingPatternStateId
Definition WsfArticulatedPart.hpp:363
double GetPitch() const
Definition WsfArticulatedPart.hpp:221
void SetAzSlewLimits(double aMinAzSlew, double aMaxAzSlew)
Set the azimuth slew limits.
Definition WsfArticulatedPart.hpp:139
static constexpr double cALMOST_FULL_CIRCLE
Definition WsfArticulatedPart.hpp:39
bool mSlewMethodCoordinated
'true' if slcue rates are dynamically adjusted so the target angles are reached simultaneously.
Definition WsfArticulatedPart.hpp:436
double GetRoll() const
Definition WsfArticulatedPart.hpp:218
@ cMIN_AZ
Definition WsfArticulatedPart.hpp:61
@ cNOT_CUED
Definition WsfArticulatedPart.hpp:60
@ cAT_LIMIT_AZ_MASK
Definition WsfArticulatedPart.hpp:65
@ cMAX_EL
Definition WsfArticulatedPart.hpp:64
@ cMIN_EL
Definition WsfArticulatedPart.hpp:63
@ cCUED_EL
Definition WsfArticulatedPart.hpp:69
@ cCUED_AZ_EL
Definition WsfArticulatedPart.hpp:70
@ cCUED_MASK
Definition WsfArticulatedPart.hpp:71
@ cAT_LIMIT_EL_MASK
Definition WsfArticulatedPart.hpp:66
@ cMAX_AZ
Definition WsfArticulatedPart.hpp:62
@ cCUED_AZ
Definition WsfArticulatedPart.hpp:68
@ cAT_LIMIT_MASK
Definition WsfArticulatedPart.hpp:67
WsfMaskingPattern * mMaskingPatternPtr
The masking factor.
Definition WsfArticulatedPart.hpp:361
void IncrementArticulationUpdateEventEpoch()
Definition WsfArticulatedPart.hpp:320
SlewMode GetSlewMode() const
Get the allowed slewing mode.
Definition WsfArticulatedPart.hpp:109
void SetSlewMode(SlewMode aSlewMode)
Set the allowed slewing mode.
Definition WsfArticulatedPart.hpp:134
double mMaxAzSlewRate
Definition WsfArticulatedPart.hpp:387
void SetAzCueLimits(double aMinAzCue, double aMaxAzCue)
Set the azimuth cueing limits.
Definition WsfArticulatedPart.hpp:201
SlewMode mSlewMode
Definition WsfArticulatedPart.hpp:395
bool FullCircle() const
Definition WsfArticulatedPart.hpp:341
void SetArticulationUpdateInterval(double aUpdateInterval)
Definition WsfArticulatedPart.hpp:310
bool WithinSlewLimits(double aThisToTgtAz, double aThisToTgtEl) const
Definition WsfArticulatedPart.hpp:162
double mDY
Definition WsfArticulatedPart.hpp:376
double mLastAzElUpdateTime
The time when the current az/el were last updated.
Definition WsfArticulatedPart.hpp:431
CueType GetCueType() const
Definition WsfArticulatedPart.hpp:242
SlewMode GetCueMode() const
Get the allowed cueing mode.
Definition WsfArticulatedPart.hpp:175
double mMinAzCue
Definition WsfArticulatedPart.hpp:403
CueType
Definition WsfArticulatedPart.hpp:75
@ cCUED_TO_LOCATION
The part is cued to a specified location.
Definition WsfArticulatedPart.hpp:77
@ cCUED_TO_NOTHING
No cue has been specified.
Definition WsfArticulatedPart.hpp:76
@ cCUED_TO_ANGLE
The part is cued to specified az/el angles.
Definition WsfArticulatedPart.hpp:78
bool mTransientCueActive
'true' if the transient cue is defined
Definition WsfArticulatedPart.hpp:415
double GetMaxAzSlewRate() const
Get the maximum allowable azimuth slew rate.
Definition WsfArticulatedPart.hpp:117
bool IsCued() const
Get the cued status.
Definition WsfArticulatedPart.hpp:245
double GetYaw() const
Definition WsfArticulatedPart.hpp:224
double mDX
The velocity of the part.
Definition WsfArticulatedPart.hpp:375
double mMinElCue
Definition WsfArticulatedPart.hpp:405
double GetArticulationUpdateInterval() const
Definition WsfArticulatedPart.hpp:312
WsfArticulatedPart(const WsfScenario &aScenario, int aPartType)
Definition WsfArticulatedPart.cpp:29
double GetMaxAzSlew() const
Gets the maximum azimuth slew limit.
Definition WsfArticulatedPart.hpp:124
CueType mCueType
Definition WsfArticulatedPart.hpp:414
double mElCueRate
Definition WsfArticulatedPart.hpp:402
double GetMaxElSlew() const
Gets the maximum elevation slew limit.
Definition WsfArticulatedPart.hpp:128
double GetElCueRate() const
Get the elevation cue rate.
Definition WsfArticulatedPart.hpp:180
double mActualCuedAz
The actual cued location, subject to the slewing limits.
Definition WsfArticulatedPart.hpp:424
double GetMinElSlew() const
Gets the minimum elevation slew limit.
Definition WsfArticulatedPart.hpp:126
static constexpr double cINFINITE_SLEW_RATE
Definition WsfArticulatedPart.hpp:38
double GetMinAzCue() const
Gets the minimum azimuth cue limit.
Definition WsfArticulatedPart.hpp:182
double GetMaxElCue() const
Gets the maximum elevation cue limit.
Definition WsfArticulatedPart.hpp:188
void SetMaskingPatternState(WsfStringId aMaskingPatternStateId)
Definition WsfArticulatedPart.hpp:275
double mCuedEl
The cued elevation if mCueType == cCUED_TO_ANGLE.
Definition WsfArticulatedPart.hpp:419
double mCurrentEl
Definition WsfArticulatedPart.hpp:429
void SetElCueLimits(double aMinElCue, double aMaxElCue)
Set the elevation cueing limits.
Definition WsfArticulatedPart.hpp:208
double GetElSlewRate() const
Get the current elevation slew rate.
Definition WsfArticulatedPart.hpp:114
bool mIsPrivate
'true' if the part is considered 'private' and not to visible to external simulations.
Definition WsfArticulatedPart.hpp:442
UtCallbackListN< void(double)> SlewComplete
Definition WsfArticulatedPart.hpp:338
double GetMaxAzCue() const
Gets the maximum azimuth cue limit.
Definition WsfArticulatedPart.hpp:184
void SetIsPrivate(bool aIsPrivate)
Definition WsfArticulatedPart.hpp:287
double mMinAzSlew
Definition WsfArticulatedPart.hpp:389
double mActualCuedEl
Definition WsfArticulatedPart.hpp:425
void OnPlatformUpdated(double, WsfPlatform *) override
Definition WsfArticulatedPart.hpp:103
double mTransientCuedLocationWCS[3]
The transient cue, if mTransientCueActive is true.
Definition WsfArticulatedPart.hpp:420
double mCurrentAz
Definition WsfArticulatedPart.hpp:428
double mCuedLocationWCS[3]
The cued location if mCueType is cCUED_TO_LOCATION.
Definition WsfArticulatedPart.hpp:417
WsfStringId GetMaskingPatternState() const
Definition WsfArticulatedPart.hpp:274
Definition WsfMaskingPattern.hpp:35
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111