WSF
WsfArticulatedPart Class Reference

#include <WsfArticulatedPart.hpp>

Inheritance diagram for WsfArticulatedPart:
Collaboration diagram for WsfArticulatedPart:

Public Types

enum  SlewMode { cSLEW_FIXED = 0 , cSLEW_AZ = 1 , cSLEW_EL = 2 , cSLEW_AZ_EL = 3 }
enum  SlewDirection { cUNDEFINED = 0 , cPOSITIVE = 1 , cNEGATIVE = 2 }
enum  {
  cNOT_CUED = 0x0000 , cMIN_AZ = 0x0001 , cMAX_AZ = 0x0002 , cMIN_EL = 0x0004 ,
  cMAX_EL = 0x0008 , cAT_LIMIT_AZ_MASK = 0x0003 , cAT_LIMIT_EL_MASK = 0x000B , cAT_LIMIT_MASK = 0x000F ,
  cCUED_AZ = 0x0010 , cCUED_EL = 0x0020 , cCUED_AZ_EL = 0x0030 , cCUED_MASK = 0x0030
}
enum  CueType { cCUED_TO_NOTHING , cCUED_TO_LOCATION , cCUED_TO_ANGLE }
Public Types inherited from WsfPlatformPart
enum  { cLEVEL_ONE_DEBUG = 0x00000001 , cLEVEL_TWO_DEBUG = 0x00000002 }
using InternalMessageQueue = std::queue<WsfMessage*>
using RecipientMessageQueue = std::queue<std::pair<WsfPlatformPart*, WsfMessage*>>
Public Types inherited from WsfObject
typedef std::vector< WsfStringIdTypeList
 The list of types returned by GetTypeList.
Public Types inherited from WsfComponentT< WsfPlatform >
typedef WsfPlatform ParentType
 This is needed to support the WsfComponentList template.

Public Member Functions

 WsfArticulatedPart (const WsfScenario &aScenario, int aPartType)
 WsfArticulatedPart (const WsfArticulatedPart &aSrc)
 ~WsfArticulatedPart () override
Public Member Functions inherited from WsfPlatformPart
 WsfPlatformPart (const WsfScenario &aScenario, int aPartType)
WsfPlatformPartoperator= (const WsfPlatformPart &aRhs)=delete
 ~WsfPlatformPart () override
const int * GetComponentRoles () const override
void * QueryInterface (int aRole) override
bool DebugEnabled () const
 Returns 'true' if debugging is enabled for this instance.
void SetDebugEnabled (bool aDebugEnabled)
unsigned int GetDebugMask ()
bool IsExternallyControlled () const
virtual void SetExternallyControlled (double aSimTime, bool aIsExternallyControlled)
int GetPartType () const
const char * GetScriptClassName () const override
WsfSimulationGetSimulation () const
const WsfScenarioGetScenario () const
WsfStringId GetComponentName () const override
void ComponentParentChanged (WsfPlatform *aPlatformPtr) override
bool Initialize (double aSimTime) override
bool Initialize2 (double aSimTime) override
bool ProcessInput (UtInput &aInput) override
virtual void Update (double aSimTime)
WsfPlatformGetPlatform () const
virtual void PlatformAdded (double aSimTime, WsfPlatform *aPlatformPtr)
virtual void PlatformDeleted (WsfPlatform *aPlatformPtr)
double GetLastStatusChangeTime () const
void SetLastStatusChangeTime (double aSimTime)
 Allows a system to set the time at which the device was initialized.
bool CanBeMadeOperational () const
 Returns an indication that this system can be made operational.
bool CanBeMadeNonOperational () const
 Returns an indication that this system can be made non-operational.
bool CanBeTurnedOn () const
 Returns an indication that this system can be turned on.
bool CanBeTurnedOff () const
 Returns an indication that this system can be turned off.
bool IsTurnedOn () const
bool InitiallyTurnedOn () const
 Is the system to be turned 'on' when added to the simulation?
void SetInitiallyTurnedOn (bool aInitiallyTurnedOn)
 Sets if the system is turned on when added to the simulation.
virtual void TurnOff (double aSimTime)
virtual void TurnOn (double aSimTime)
virtual void SetOperational (double aSimTime)
virtual void SetNonOperational (double aSimTime)
virtual void PartBroken (double aSimTime)
virtual void Restore (double aSimTime)
bool IsOperational () const
bool SetOperational (double aSimTime, bool aMakeOperational)
double GetDamageFactor () const
bool SetDamageFactor (double aSimTime, double aDamageFactor)
bool IsCritical () const
void SetCritical (bool aValue)
virtual void OnPlatformBrokenEvent (double aSimTime)
 Owning platform has issued a broken event.
bool IsBroken () const
WsfInternalLinksGetInternalLinks ()
 Return the internal links for this part.
virtual bool HasInternalLinks () const
 Does this platform part have a communication link to other platform parts?
virtual bool ProcessMessage (double aSimTime, const WsfMessage &aMessage)
virtual bool ReceiveMessage (double aSimTime, const WsfMessage &aMessage)
virtual void SendMessage (double aSimTime, const WsfMessage &aMessage)
virtual void SendMessageTo (double aSimTime, const WsfMessage &aMessage, WsfStringId aRecipientId)
void SendMessageToProcessor (double aSimTime, const WsfMessage &aMessage, WsfStringId aRecipientId)
virtual void SendQueuedMessages (double aSimTime)
const WsfCategoryListGetCategories () const
 Get the categories to which this part belongs.
void AddCategory (WsfStringId aCategoryId)
 Adds the provided category to the platform part's category list.
bool IsCategoryMember (WsfStringId aCategoryId) const
const WsfGroupListGetGroups () const
 Get the groups to which this platform part belongs.
void JoinGroup (WsfGroup *aGroupPtr)
 Join the given group.
void LeaveGroup (WsfGroup *aGroupPtr)
 Leave the given group.
bool IsGroupMember (WsfStringId aGroupId)
virtual double GetUpdateInterval () const =0
virtual void SetUpdateInterval (double aUpdateInterval)=0
unsigned int GetUpdateEventEpoch () const
void IncrementUpdateEventEpoch ()
bool UpdateEventActive () const
 Is an 'Update' event active?
void SetUpdateEventActive (bool aUpdateEventActive)
 Indicate if the 'Update' event is active.
Public Member Functions inherited from WsfObject
 WsfObject ()
 This is the constructor for the WsfObject class.
 ~WsfObject () override
 This is the destructor for the WsfObject class.
const char * GetScriptClassName () const override
virtual WsfObjectClone () const =0
const std::string & GetType () const
WsfStringId GetTypeId () const
 Get the string ID of the 'type' of the object.
void SetType (WsfStringId aType)
const std::string & GetBaseType () const
WsfStringId GetBaseTypeId () const
const TypeListGetTypeList () const
bool IsA_TypeOf (WsfStringId aType) const
WsfObjectoperator= (const WsfObject &aRhs)
 Assignment operator.
template<typename T>
void Serialize (T &aBuff)
 For XIO (de)serialization.
const std::string & GetName () const
WsfStringId GetNameId () const
void SetName (WsfStringId aName)
Public Member Functions inherited from WsfComponentT< WsfPlatform >
 WsfComponentT ()
 WsfComponentT (const WsfComponentT &) noexcept
WsfComponentToperator= (const WsfComponentT &) noexcept
 ~WsfComponentT () override=default
ParentTypeGetComponentParent () const
void SetComponentParent (ParentType *aParentPtr)
Public Member Functions inherited from WsfComponent
virtual ~WsfComponent ()=default
virtual WsfComponentCloneComponent () const =0
virtual int GetComponentInitializationOrder () const
template<typename T>
bool QueryInterfaceT (T *&aRolePtr)
bool ComponentHasRole (int aRole)
 Returns true if the component has the specified role.
virtual bool PreInitialize (double aSimTime)
virtual void PreInput ()
Public Member Functions inherited from WsfUniqueId
 WsfUniqueId ()
 Construtor initializes the unique identifier to 0.
 WsfUniqueId (const WsfUniqueId &)
 Copy constructor initializes the unique identifier to 0.
WsfUniqueIdoperator= (const WsfUniqueId &)
unsigned int GetUniqueId () const
 Get the unique identifier assigned to this object.
template<typename T>
void Serialize (T &aBuff)
 For XIO (de)serialization.
Public Member Functions inherited from WsfAuxDataEnabled
 WsfAuxDataEnabled ()=default
 WsfAuxDataEnabled (const WsfAuxDataEnabled &aSrc)=default
WsfAuxDataEnabledoperator= (const WsfAuxDataEnabled &aRhs)
 WsfAuxDataEnabled (WsfAuxDataEnabled &&)=default
WsfAuxDataEnabledoperator= (WsfAuxDataEnabled &&)=default
virtual ~WsfAuxDataEnabled () noexcept
void SetAuxData (const WsfAttributeContainer &aAuxData)
void DeleteAuxData ()
 Delete the aux data container from the object.
void MergeAuxData (const WsfAuxDataEnabled &aSrc)
 Merge the object's aux data with aux data from an existing object.
void UpdateAuxData (const WsfAuxDataEnabled &aSrc)
 Update the object's aux data with aux data from an existing object.
bool HasAuxData () const
 Returns true if this object has aux data.
bool ProcessInput (UtInput &aInput)
template<typename T>
void Serialize (T &aBuff)
 (De)serialization for XIO
WsfAttributeContainerGetAuxData ()
const WsfAttributeContainerGetAuxData () const noexcept
const WsfAttributeContainerGetAuxDataConst () const noexcept
Public Member Functions inherited from WsfSinglePlatformObserver
virtual ~WsfSinglePlatformObserver ()
virtual void OnPlatformDeleting (double aSimTime, WsfPlatform *aPlatformPtr)
 Called before the platform is actually deleted.
virtual void OnPlatformDeleted (double aSimTime, WsfPlatform *aPlatformPtr)
 Called just before the platform is removed from the simulation.

Static Public Attributes

static constexpr double cINFINITE_SLEW_RATE = 1.0E+12 * UtMath::cRAD_PER_DEG
static constexpr double cALMOST_FULL_CIRCLE = 359.999 * UtMath::cRAD_PER_DEG
Static Public Attributes inherited from WsfAuxDataEnabled
static UtCallbackListN< void(const WsfAuxDataEnabled *)> AuxDataAccessed
static UtCallbackListN< void(const WsfAuxDataEnabled *)> AuxDataDestroyed

Visual Articulation Methods.

These methods are used to control part velocity for dynamic articulation. This is primarily used only for visualization purposes.

UtCallbackListN< void(double)> SlewComplete
WsfMaskingPatternmMaskingPatternPtr
 The masking factor.
WsfStringId mMaskingPatternName
WsfStringId mMaskingPatternStateId
double mYaw
 The orientation of the device coordinate system.
double mPitch
double mRoll
double mDX
 The velocity of the part.
double mDY
double mDZ
double mTilt
 The tilt angle above below the scan plane.
double mAzSlewRate
 The slewing rates and limits of the device with respect to the device coordinate system.
double mElSlewRate
double mMaxAzSlewRate
double mMaxElSlewRate
double mMinAzSlew
double mMaxAzSlew
double mMinElSlew
double mMaxElSlew
SlewMode mSlewMode
SlewDirection mAzSlewDirection
int mSlewState
double mAzCueRate
 The cueing rates and limits of the device with respect to the device coordinate system.
double mElCueRate
double mMinAzCue
double mMaxAzCue
double mMinElCue
double mMaxElCue
SlewMode mCueMode
 The directions (az and/or el) in which cueing can be performed.
CueType mCueType
bool mTransientCueActive
 'true' if the transient cue is defined
double mCuedLocationWCS [3]
 The cued location if mCueType is cCUED_TO_LOCATION.
double mCuedAz
 The cued azimuth if mCueType == cCUED_TO_ANGLE.
double mCuedEl
 The cued elevation if mCueType == cCUED_TO_ANGLE.
double mTransientCuedLocationWCS [3]
 The transient cue, if mTransientCueActive is true.
double mActualCuedAz
 The actual cued location, subject to the slewing limits.
double mActualCuedEl
double mCurrentAz
double mCurrentEl
double mLastAzElUpdateTime
 The time when the current az/el were last updated.
double mLastUpdateTime
 The time when the x/y/z position was last updated.
bool mSlewMethodCoordinated
 'true' if slcue rates are dynamically adjusted so the target angles are reached simultaneously.
bool mIsSlewing
 'true' if the part is slewing to satisfy a cueing request.
bool mIsPrivate
 'true' if the part is considered 'private' and not to visible to external simulations.
void SetPositionRateECS (const double aDX, const double aDY, const double aDZ)
void GetCurrentPositionRateECS (double &aDX, double &aDY, double &aDZ) const
double GetDX () const
double GetDY () const
double GetDZ () const
void EnableArticulationUpdates (double aSimTime, double aInterval)
void DisableArticulationUpdates (double aSimTime)
void SetArticulationUpdateInterval (double aUpdateInterval)
double GetArticulationUpdateInterval () const
unsigned int GetArticulationUpdateEventEpoch () const
void IncrementArticulationUpdateEventEpoch ()
bool ArticulationUpdateEventActive () const
 Is an 'Update' event active?
void SetArticulationUpdateEventActive (bool aUpdateEventActive)
 Indicate if the 'Update' event is active.
virtual double TimeToCue (double aDesiredAz, double aDesiredEl) const
bool FullCircle () const
virtual double GetAzimuthRotationRate () const
virtual double GetElevationRotationRate () const
void SlewToOrientation (double aSimTime, double aDesiredAz, double aDesiredEl)
virtual void TimeToRotate (double &aDeltaAz, double &aDeltaEl, double &aAzRate, double &aElRate, double &aTimeToAz, double &aTimeToEl) const
void UpdateCuedOrientation (double aSimTime)
bool UpdateOrientation (double aSimTime)

Common infrastructure methods.

const int * GetComponentRoles () const override
void * QueryInterface (int aRole) override
const char * GetScriptClassName () const override
bool Initialize (double aSimTime) override
bool ProcessInput (UtInput &aInput) override
void SetPlatform (WsfPlatform *aPlatformPtr) override
virtual void UpdatePosition (double aSimTime)

Overrides of WsfSinglePlatformObserver.

void OnPlatformUpdated (double, WsfPlatform *) override

Slewing methods.

SlewMode GetSlewMode () const
 Get the allowed slewing mode.
double GetAzSlewRate () const
 Get the current azimuth slew rate.
double GetElSlewRate () const
 Get the current elevation slew rate.
double GetMaxAzSlewRate () const
 Get the maximum allowable azimuth slew rate.
double GetMaxElSlewRate () const
 Get the maximum allowable elevation slew rate.
double GetMinAzSlew () const
 Gets the minimum azimuth slew limit.
double GetMaxAzSlew () const
 Gets the maximum azimuth slew limit.
double GetMinElSlew () const
 Gets the minimum elevation slew limit.
double GetMaxElSlew () const
 Gets the maximum elevation slew limit.
int GetSlewState () const
 Get the slew limit state.
void SetSlewMode (SlewMode aSlewMode)
 Set the allowed slewing mode.
void SetSlewRates (double aAzSlewRate, double aElSlewRate)
 Set the angular slew rates, limited by the maximum slew rates.
void SetAzSlewLimits (double aMinAzSlew, double aMaxAzSlew)
 Set the azimuth slew limits.
void SetElSlewLimits (double aMinElSlew, double aMaxElSlew)
 Set the elevation slew limits.
void SetAzimuthSlewDirection (SlewDirection aAzSlewDirection)
 Set the azimuth slew direction.
bool IsSlewing () const
bool WithinSlewLimits (double aThisToTgtAz, double aThisToTgtEl) const

Cue limit methods.

The cue limits are maintained separate and are forced to be subset of the slew limits. For most uses the cue limits end up being the same as the slew limits, but there are some multi-mode sensors which limit the cueing capability in some modes.

SlewMode GetCueMode () const
 Get the allowed cueing mode.
double GetAzCueRate () const
 Get the azimuth cue rate.
double GetElCueRate () const
 Get the elevation cue rate.
double GetMinAzCue () const
 Gets the minimum azimuth cue limit.
double GetMaxAzCue () const
 Gets the maximum azimuth cue limit.
double GetMinElCue () const
 Gets the minimum elevation cue limit.
double GetMaxElCue () const
 Gets the maximum elevation cue limit.
void SetCueMode (SlewMode aCueMode)
 Set the allowed cueing mode.
void SetCueRates (double aAzCueRate, double aElCueRate)
 Set the angular cueing rates.
void SetAzCueLimits (double aMinAzCue, double aMaxAzCue)
 Set the azimuth cueing limits.
void SetElCueLimits (double aMinElCue, double aMaxElCue)
 Set the elevation cueing limits.

Orientation methods.

All angles are in radians!

double GetRoll () const
void SetRoll (double aRoll)
 Set the platform-relative (ECS) roll angle of the articulated part.
double GetPitch () const
void SetPitch (double aPitch)
double GetYaw () const
void SetYaw (double aYaw)
 Set the platform-relative (ECS) yaw angle of the articulated part.
double GetTilt () const
void SetTilt (double aTilt)
void GetCurrentOrientationECS (double &aYaw, double &aPitch, double &aRoll)
void GetLOS_UnitVectorWCS (double aUnitLOS_WCS[3])
 Get the current WCS Frame Line-Of-Sight unit vector.

Cueing methods.

An articulated part can have two types of cues:

  • A non-transient cue.
  • A transient cue. The difference between the two is that the transient cue temporarily overrides the non-transient cue until it is cleared.
CueType GetCueType () const
bool IsCued () const
 Get the cued status.
void ClearCueing ()
bool GetActualCuedOrientation (double &aAzimuth, double &aElevation) const
void GetCurrentCuedOrientation (double &aAzimuth, double &aElevation) const
bool GetCuedLocationWCS (double aCuedLocationWCS[3]) const
void SetCuedLocationWCS (const double aCuedLocationWCS[3])
bool GetCuedOrientation (double &aAzimuth, double &aElevation) const
void SetCuedOrientation (double aAzimuth, double aElevation)
void GetAbsoluteCuedOrientation (double &aAzimuth, double &aElevation, double aBaseNED[3])
void ClearTransientCue ()
bool TransientCueActive () const
bool GetTransientCuedLocationWCS (double aCuedLocationWCS[3]) const
void SetTransientCuedLocationWCS (const double aCuedLocationWCS[3])

Structure masking methods.

WsfStringId GetMaskingPatternState () const
void SetMaskingPatternState (WsfStringId aMaskingPatternStateId)
double GetMaskingPatternFactor (double aViewAzPCS, double aViewElPCS, const double aViewVecWCS[3])

External visibility control.

An articulated part that is declared 'private' will not be visible to external simulations. This is primarily used to hide certain sensors and interferers from the DIS/HLA interface that are presented to the interface by some other means. (e.g.: WsfCompositeSensor in synchronous mode)

Note
This must be done prior to initialization.
void SetIsPrivate (bool aIsPrivate)
bool IsPrivate () const

Additional Inherited Members

 WsfPlatformPart (const WsfPlatformPart &aSrc)
 Copy constructor (for Clone()).
 WsfObject (const WsfObject &aSrc)
 Copy constructor (for Clone()).
Protected Member Functions inherited from WsfUniqueId
void AssignUniqueId (WsfSimulation *aSimulationPtr)

Detailed Description

A base class for platform part that represents an articulated part of the platform.

This class is intended to be the base class for those parts of a platform that have a position and orientation on the platform. The class provides the means to specify the location and orientation of the part and to 'cue' the part.

Example uses of this class would be sensor and comm systems.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
cNOT_CUED 
cMIN_AZ 
cMAX_AZ 
cMIN_EL 
cMAX_EL 
cAT_LIMIT_AZ_MASK 
cAT_LIMIT_EL_MASK 
cAT_LIMIT_MASK 
cCUED_AZ 
cCUED_EL 
cCUED_AZ_EL 
cCUED_MASK 

◆ CueType

Enumerator
cCUED_TO_NOTHING 

No cue has been specified.

cCUED_TO_LOCATION 

The part is cued to a specified location.

cCUED_TO_ANGLE 

The part is cued to specified az/el angles.

◆ SlewDirection

Enumerator
cUNDEFINED 
cPOSITIVE 
cNEGATIVE 

◆ SlewMode

An enumeration that indicates the what degrees-of-freedom exist for slewing Note: Do not change these values. cSLEW_AZ_EL must equal cSLEW_AZ | cSLEW_EL.

Enumerator
cSLEW_FIXED 
cSLEW_AZ 
cSLEW_EL 
cSLEW_AZ_EL 

Constructor & Destructor Documentation

◆ WsfArticulatedPart() [1/2]

◆ WsfArticulatedPart() [2/2]

◆ ~WsfArticulatedPart()

WsfArticulatedPart::~WsfArticulatedPart ( )
override

Member Function Documentation

◆ ArticulationUpdateEventActive()

bool WsfArticulatedPart::ArticulationUpdateEventActive ( ) const
inline

Is an 'Update' event active?

◆ ClearCueing()

void WsfArticulatedPart::ClearCueing ( )

◆ ClearTransientCue()

void WsfArticulatedPart::ClearTransientCue ( )

◆ DisableArticulationUpdates()

void WsfArticulatedPart::DisableArticulationUpdates ( double aSimTime)

◆ EnableArticulationUpdates()

◆ FullCircle()

bool WsfArticulatedPart::FullCircle ( ) const
inlineprotected

◆ GetAbsoluteCuedOrientation()

void WsfArticulatedPart::GetAbsoluteCuedOrientation ( double & aAzimuth,
double & aElevation,
double aBaseNED[3] )

Gets the part specified azimuth and elevation relative to the horizontal plane (no pitch or roll) of the host platform.

Parameters
aAzimuthThe desired angle (in radians) with respect to aBaseNED.
aElevationThe desired angle (in radians) with respect to aBaseNED.
aBaseNEDThe NED values in which to compare to

References ClearCueing(), ClearTransientCue(), GetLocationLLA(), WsfPlatformPart::GetSimulation(), mCurrentAz, mCurrentEl, SetCuedOrientation(), and UpdatePosition().

◆ GetActualCuedOrientation()

bool WsfArticulatedPart::GetActualCuedOrientation ( double & aAzimuth,
double & aElevation ) const

Get the actual cued orientation, subject to the slewing limits.

Parameters
aAzimuthThe actual cued azimuth, subject to the azimuth slewing limits. This will be zero if a cue has not active or azimuth cueing is not allowed.
aElevationThe actual cued elevation, subject to the elevation slewing limits. This will be zero if a cue is not active or elevation cueing is not allowed.
Returns
'true' if the device is cued or 'false' if no cue is active.
Note
: The values returned by this routine are the result of the last call to UpdatePosition().

References cCUED_TO_NOTHING, cSLEW_FIXED, mActualCuedAz, mActualCuedEl, mCueType, mSlewMode, and mTransientCueActive.

◆ GetArticulationUpdateEventEpoch()

unsigned int WsfArticulatedPart::GetArticulationUpdateEventEpoch ( ) const
inline

Get the current update event 'epoch'. The event 'epoch' is used to recognize and ignore obsolete events.

◆ GetArticulationUpdateInterval()

double WsfArticulatedPart::GetArticulationUpdateInterval ( ) const
inline

◆ GetAzCueRate()

double WsfArticulatedPart::GetAzCueRate ( ) const
inline

Get the azimuth cue rate.

References mAzCueRate.

◆ GetAzimuthRotationRate()

double WsfArticulatedPart::GetAzimuthRotationRate ( ) const
protectedvirtual

References mAzCueRate, and mAzSlewRate.

Referenced by SlewToOrientation(), and TimeToRotate().

◆ GetAzSlewRate()

double WsfArticulatedPart::GetAzSlewRate ( ) const
inline

Get the current azimuth slew rate.

References mAzSlewRate.

◆ GetComponentRoles()

const int * WsfArticulatedPart::GetComponentRoles ( ) const
overridevirtual

Returns a zero-terminated array of component roles. Note that the array should be in decreasing order of specificity and should generally the inheritance hierarchy. The first entry should be the components 'primary' role. For example a sensor would do the following:

return roles;
@ cWSF_COMPONENT_SENSOR
A 'sensor' component (WsfSensor).
Definition WsfComponentRoles.hpp:105
@ cWSF_COMPONENT_PLATFORM_PART
The component derives from WsfPlatformPart.
Definition WsfComponentRoles.hpp:98
@ cWSF_COMPONENT_ARTICULATED_PART
The component derives from WsfArticulatedPart.
Definition WsfComponentRoles.hpp:99

Implements WsfComponent.

Reimplemented in WsfDirectedEnergyWeapon, WsfRF_Jammer, WsfSensor, WsfVisualPart, and WsfWeapon.

References cWSF_COMPONENT_ARTICULATED_PART, cWSF_COMPONENT_NULL, and cWSF_COMPONENT_PLATFORM_PART.

◆ GetCuedLocationWCS()

bool WsfArticulatedPart::GetCuedLocationWCS ( double aCuedLocationWCS[3]) const

Get the value set by SetCuedLocationWCS.

Parameters
aCuedLocationWCSThe current cued location if it was defined by SetCuedLocationWCS.
Returns
true if the current cue was defined by SetCuedLocationWCS.

References cCUED_TO_LOCATION, mCuedLocationWCS, mCueType, and ok.

Referenced by WsfEOIR_Sensor::Update().

◆ GetCuedOrientation()

bool WsfArticulatedPart::GetCuedOrientation ( double & aAzimuth,
double & aElevation ) const

Sets the reference parameters with the cued azimuth and elevation of the device. If the device is not cued to an orientation, no action is done.

Parameters
aAzimuthSet to the current cued azimuth.
aElevationSet to the current cued elevation.
Returns
'true' if parameters were set correctly 'false' if the device is not cued to an orientation

References cCUED_TO_ANGLE, mCuedAz, mCuedEl, mCueType, and ok.

Referenced by WsfBMSensorInfoRecord::CueToAzimuth().

◆ GetCueMode()

SlewMode WsfArticulatedPart::GetCueMode ( ) const
inline

Get the allowed cueing mode.

References mCueMode.

Referenced by WsfEM_ALARM_Antenna::antenna::antenna().

◆ GetCueType()

CueType WsfArticulatedPart::GetCueType ( ) const
inline

◆ GetCurrentCuedOrientation()

void WsfArticulatedPart::GetCurrentCuedOrientation ( double & aAzimuth,
double & aElevation ) const

Get the current cued orientation.

This returns the azimuth and elevation of the part as determined by the last call to UpdatePosition(). The return values depending on if the part was or is cued, and if cue/slew rates are imposed.

  • If cue/slew rates are NOT imposed the return values will be: – The current az/el cue, subject to the cue limits. – or 0, 0 if no cue is active.
  • If cue/slew rates ARE imposed, the return values will reflect the current position.
    Parameters
    aAzimuthThe current cued azimuth.
    aElevationThe current cued elevation
    Note
    : The values returned by this routine are the result of the last call to UpdatePosition().

References mCurrentAz, and mCurrentEl.

Referenced by WsfBMSensorInfoRecord::CueToAzimuth(), WsfBMSensorInfoRecord::GetAz(), WsfDisInterface::UpdateBeamFromXmtr(), and WsfMilEventPipe::UpdateWeaponArticulation().

◆ GetCurrentOrientationECS()

void WsfArticulatedPart::GetCurrentOrientationECS ( double & aYaw,
double & aPitch,
double & aRoll )

Get the current platform-relative (ECS) orientation of an articulated part. If the part is not cued then it simply returns its standard yaw, pitch and roll angles. If the part is cued then it returns the yaw and pitch angles that result from the cue, with roll set to zero.

Parameters
aYawThe azimuth angle with respect to the entity.
aPitchThe elevation angle with respect to the entity.
aRollThe roll angle.
Note
If the part is cued then it assumes the current orientation is correct.

References WsfPlatformPart::GetPlatform(), WsfPlatformPart::GetSimulation(), mPitch, mRoll, mTilt, mYaw, and UpdateOrientation().

Referenced by WsfEventPipeInterface::UpdateArticulation(), WsfDisInterface::UpdateBeamFromXmtr(), and WsfDisInterface::UpdateSystemFromSensor().

◆ GetCurrentPositionRateECS()

void WsfArticulatedPart::GetCurrentPositionRateECS ( double & aDX,
double & aDY,
double & aDZ ) const

References mDX, mDY, and mDZ.

◆ GetDX()

double WsfArticulatedPart::GetDX ( ) const
inline

References mDX.

◆ GetDY()

double WsfArticulatedPart::GetDY ( ) const
inline

References mDY.

◆ GetDZ()

double WsfArticulatedPart::GetDZ ( ) const
inline

References mDZ.

◆ GetElCueRate()

double WsfArticulatedPart::GetElCueRate ( ) const
inline

Get the elevation cue rate.

References mElCueRate.

◆ GetElevationRotationRate()

double WsfArticulatedPart::GetElevationRotationRate ( ) const
protectedvirtual

References mElCueRate, and mElSlewRate.

Referenced by SlewToOrientation(), and TimeToRotate().

◆ GetElSlewRate()

double WsfArticulatedPart::GetElSlewRate ( ) const
inline

Get the current elevation slew rate.

References mElSlewRate.

Referenced by WsfBMSensorInfoRecord::SetAzSlewRate().

◆ GetLOS_UnitVectorWCS()

void WsfArticulatedPart::GetLOS_UnitVectorWCS ( double aUnitLOS_WCS[3])

Get the current WCS Frame Line-Of-Sight unit vector.

References WsfPlatformPart::GetSimulation(), and UpdateOrientation().

Referenced by WsfLaserDesignator::Update(), and WsfLaserTracker::Update().

◆ GetMaskingPatternFactor()

double WsfArticulatedPart::GetMaskingPatternFactor ( double aViewAzPCS,
double aViewElPCS,
const double aViewVecWCS[3] )

Return the masking factor for the specified viewing angles.

This is called from WsfEM_Interaction::ComputeMaskingFactor to determine the masking factor for the current interaction. It could obviously be called

The first two arguments could have been eliminated but they had already been computed by 'BeginXXXInteraction'. This eliminates the need to recompute them, which involves several trig/math calls.

Parameters
aViewAzPCSThe azimuth viewing angle in the part coordinate system.
aViewElPCSThe elevation viewing angle in the part coordinate system.
aViewVecWCSThe unit viewing vector in the world coordinate system. This is used if a platform-relative factor is defined.

References mMaskingPatternPtr, and mMaskingPatternStateId.

Referenced by WsfEM_Interaction::ComputeMaskingFactor().

◆ GetMaskingPatternState()

WsfStringId WsfArticulatedPart::GetMaskingPatternState ( ) const
inline

◆ GetMaxAzCue()

double WsfArticulatedPart::GetMaxAzCue ( ) const
inline

◆ GetMaxAzSlew()

double WsfArticulatedPart::GetMaxAzSlew ( ) const
inline

◆ GetMaxAzSlewRate()

double WsfArticulatedPart::GetMaxAzSlewRate ( ) const
inline

Get the maximum allowable azimuth slew rate.

References mMaxAzSlewRate.

◆ GetMaxElCue()

double WsfArticulatedPart::GetMaxElCue ( ) const
inline

Gets the maximum elevation cue limit.

References mMaxElCue.

Referenced by WsfEM_ALARM_Antenna::antenna::antenna(), UCI_Util::CheckLimits(), and WsfSAR_Sensor::SAR_Mode::ComputeGeometry().

◆ GetMaxElSlew()

double WsfArticulatedPart::GetMaxElSlew ( ) const
inline

◆ GetMaxElSlewRate()

double WsfArticulatedPart::GetMaxElSlewRate ( ) const
inline

Get the maximum allowable elevation slew rate.

References mMaxElSlewRate.

◆ GetMinAzCue()

double WsfArticulatedPart::GetMinAzCue ( ) const
inline

◆ GetMinAzSlew()

double WsfArticulatedPart::GetMinAzSlew ( ) const
inline

◆ GetMinElCue()

double WsfArticulatedPart::GetMinElCue ( ) const
inline

Gets the minimum elevation cue limit.

References mMinElCue.

Referenced by WsfEM_ALARM_Antenna::antenna::antenna(), UCI_Util::CheckLimits(), and WsfSAR_Sensor::SAR_Mode::ComputeGeometry().

◆ GetMinElSlew()

double WsfArticulatedPart::GetMinElSlew ( ) const
inline

◆ GetPitch()

double WsfArticulatedPart::GetPitch ( ) const
inline

◆ GetRoll()

double WsfArticulatedPart::GetRoll ( ) const
inline

◆ GetScriptClassName()

const char * WsfArticulatedPart::GetScriptClassName ( ) const
override

◆ GetSlewMode()

◆ GetSlewState()

int WsfArticulatedPart::GetSlewState ( ) const
inline

Get the slew limit state.

References mSlewState.

Referenced by WsfSAR_Sensor::SAR_Mode::ComputeGeometry().

◆ GetTilt()

◆ GetTransientCuedLocationWCS()

bool WsfArticulatedPart::GetTransientCuedLocationWCS ( double aCuedLocationWCS[3]) const

Return the current transient cue location.

Returns
true if a transient cue is defined.

References mTransientCueActive, and mTransientCuedLocationWCS.

Referenced by WsfOTH_RadarSensor::PerformScheduledDetections(), and WsfRadarSensor::PerformScheduledDetections().

◆ GetYaw()

double WsfArticulatedPart::GetYaw ( ) const
inline

◆ IncrementArticulationUpdateEventEpoch()

void WsfArticulatedPart::IncrementArticulationUpdateEventEpoch ( )
inline

Increment the 'epoch' for the update event. This should be called whenever the update interval is changed or if the processor is turned off or on.

Referenced by DisableArticulationUpdates(), and EnableArticulationUpdates().

◆ Initialize()

bool WsfArticulatedPart::Initialize ( double aSimTime)
overridevirtual

Perform phase 1 initialization. This is called by WsfPlatform::Initialize() during phase 1 initialization of the platform. The component should complete validation of input data that could not be done by ProcessInput, as well as any other functions to prepare for simulation use (subject to the next paragraph).

The order in which components are initialized is defined by GetComponentInitializationOrder. In general a component implementation of this method should not be dependent on the state of another component, i.e.: it should not assume that the other components Initialize() method has been called. If such a dependency exists one should use Initialize2() if possible, or specify a value GetComponentInitializationOrder to force things to initialize in a particular order.

Parameters
aSimTimeThe current simulation time.
Returns
true if successful or false if unsuccessful (bad input data, etc.)
Note
This method should NOT add any other components to the platform. This MUST be done in PreInitialize().

Reimplemented from WsfComponent.

Reimplemented in WsfBeamDirector, WsfChaffWeapon, WsfCompositeSensor, WsfCuedLaserWeapon, WsfEOIR_Sensor, WsfExplicitWeapon, WsfGeometricSensor, WsfImplicitWeapon, WsfIRST_Sensor, WsfJTIDS_Terminal, WsfLADAR_Sensor, WsfLaserDesignator, WsfLaserTracker, WsfLaserWeapon, WsfOpticalSensor, WsfOTH_RadarSensor, WsfPassiveSensor, WsfRadarSensor, WsfRF_Jammer, WsfSAR_Sensor, WsfSensor, WsfSOSM_Sensor, WsfSurfaceWaveRadarSensor, WsfVisualPart, and WsfWeapon.

References WsfObjectTypeList< T >::Find(), WsfMaskingPatternTypes::Get(), WsfObject::GetName(), WsfPlatformPart::GetPlatform(), WsfPlatformPart::GetScenario(), WsfPlatformPart::Initialize(), mAzSlewRate, mElSlewRate, mLastAzElUpdateTime, mLastUpdateTime, mMaskingPatternName, mMaskingPatternPtr, mMaxAzSlewRate, mMaxElSlewRate, and ok.

Referenced by wsf::comm::Comm::Initialize(), WsfSensor::Initialize(), WsfVisualPart::Initialize(), and WsfWeapon::Initialize().

◆ IsCued()

◆ IsPrivate()

bool WsfArticulatedPart::IsPrivate ( ) const
inline

References mIsPrivate.

◆ IsSlewing()

bool WsfArticulatedPart::IsSlewing ( ) const

Return 'true' if the part is slewing to meet a cueing request.

Returns
true if the part is slewing to meet a cueing request.

References cCUED_TO_NOTHING, cSLEW_FIXED, mCueType, mIsSlewing, mSlewMode, and mTransientCueActive.

Referenced by WsfBeamDirector::WsfBeamDirectorMode::AttemptToDetect().

◆ OnPlatformUpdated()

void WsfArticulatedPart::OnPlatformUpdated ( double ,
WsfPlatform *  )
inlineoverridevirtual

A callback from the platform subject. This class attaches itself as an observer to the associated platform and through this method is notified whenever the platform is updated (moved).

Reimplemented from WsfSinglePlatformObserver.

◆ ProcessInput()

bool WsfArticulatedPart::ProcessInput ( UtInput & aInput)
overridevirtual

Process input from a generic source.

Examine the current input command. If it is NOT one of the commands recognized by this class then it simply returns 'false'. If it is one of the commands recognized by this class then it processes the command and returns 'true'.

Parameters
aInputa reference to a UtInput object.
Returns
'true' if the command was one recognized by the class or 'false' if not.
Exceptions
UtInput::ExceptionBase(or an object derived from it) if the command was recognized but contains some sort of error.
Note
If a derived class does not recognize the command (i.e.: the return value is false) then it should call the base class ProcessInput method. This chain should continue until either the command is recognized or the top-level base class is encountered.

Reimplemented from WsfObject.

Reimplemented in WsfBeamDirector, WsfChaffWeapon, WsfCompositeSensor, WsfCuedLaserWeapon, WsfEOIR_Sensor, WsfExplicitWeapon, WsfGeometricSensor, WsfLADAR_Sensor, WsfLaserDesignator, WsfLaserTracker, WsfLaserWeapon, WsfNullSensor, WsfOTH_RadarSensor, WsfP6DOF_ExplicitWeapon, WsfPassiveSensor, WsfRadarSensor, WsfRF_Jammer, WsfSAR_Sensor, WsfSensor, WsfSOSM_Sensor, WsfSurfaceWaveRadarSensor, WsfVisualPart, and WsfWeapon.

References cSLEW_AZ, cSLEW_AZ_EL, cSLEW_EL, cSLEW_FIXED, mMaskingPatternName, mMaxAzSlew, mMaxAzSlewRate, mMaxElSlew, mMaxElSlewRate, mMinAzSlew, mMinElSlew, mSlewMethodCoordinated, mSlewMode, WsfPlatformPart::ProcessInput(), SetPitch(), SetRoll(), SetTilt(), and SetYaw().

Referenced by wsf::comm::Comm::ProcessInput(), WsfSensor::ProcessInput(), WsfVisualPart::ProcessInput(), and WsfWeapon::ProcessInput().

◆ QueryInterface()

void * WsfArticulatedPart::QueryInterface ( int aRole)
overridevirtual

Requests a component's role interface. A component can support one or more roles.

Parameters
aRoleThe role whose interface is to be returned.
Returns
A pointer to the object if it supports the indicated role, or 'null' if it does not. Usage: WsfProcessor* procPtrOrNull = (WsfProcessor*)componentPtr->QueryComponentInterface(cWSF_COMPONENT_PROCESSOR);

Implements WsfComponent.

Reimplemented in WsfDirectedEnergyWeapon, WsfRF_Jammer, WsfSensor, WsfVisualPart, and WsfWeapon.

References cWSF_COMPONENT_ARTICULATED_PART, and WsfPlatformPart::QueryInterface().

Referenced by WsfWeapon::QueryInterface().

◆ SetArticulationUpdateEventActive()

void WsfArticulatedPart::SetArticulationUpdateEventActive ( bool aUpdateEventActive)
inline

Indicate if the 'Update' event is active.

◆ SetArticulationUpdateInterval()

void WsfArticulatedPart::SetArticulationUpdateInterval ( double aUpdateInterval)
inline

Set the time interval between the periodic calls to Update(). A value of less than or equal to zero indicates periodic updates are not to be performed.

Parameters
aUpdateIntervalThe new update interval.
Note
Users should call WsfSimulation::GetInstance().SetArticulationUpdateInterval() to set the interval.

Referenced by EnableArticulationUpdates().

◆ SetAzCueLimits()

void WsfArticulatedPart::SetAzCueLimits ( double aMinAzCue,
double aMaxAzCue )
inline

◆ SetAzimuthSlewDirection()

void WsfArticulatedPart::SetAzimuthSlewDirection ( SlewDirection aAzSlewDirection)
inline

Set the azimuth slew direction.

References mAzSlewDirection.

◆ SetAzSlewLimits()

void WsfArticulatedPart::SetAzSlewLimits ( double aMinAzSlew,
double aMaxAzSlew )
inline

Set the azimuth slew limits.

References mMaxAzSlew, and mMinAzSlew.

Referenced by WsfSAR_Sensor::SAR_Mode::ComputeGeometry(), and WsfSAR_Sensor::Initialize().

◆ SetCuedLocationWCS()

void WsfArticulatedPart::SetCuedLocationWCS ( const double aCuedLocationWCS[3])

Cue the device to the specified WCS location. This will define the 'non-transient' cue (replacing any existing non-transient cue). If a 'transient' cue is active then this cue will not become effective until the 'transient' cue is cleared.

Parameters
aCuedLocationWCSThe desired cue location.

References cCUED_TO_LOCATION, WsfSimulation::GetSimTime(), WsfPlatformPart::GetSimulation(), mCuedLocationWCS, mCueType, mLastUpdateTime, simTime, and UpdatePosition().

Referenced by WsfCompositeSensor::CompositeMode::AttemptToDetect(), Utility::CueSensorToTarget(), WsfWeapon::CueToTarget(), and WsfLaserTracker::Update().

◆ SetCuedOrientation()

void WsfArticulatedPart::SetCuedOrientation ( double aAzimuth,
double aElevation )

Cue the device to the specified azimuth and elevation. This will define the 'non-transient' cue (replacing any existing non-transient cue). If a 'transient' cue is active then this cue will not become effective until the 'transient' cue is cleared.

Parameters
aAzimuthThe desired angle with respect to the part coordinate system.
aElevationThe desired angle with respect to the part coordinate system.

References cCUED_TO_ANGLE, WsfSimulation::GetSimTime(), WsfPlatformPart::GetSimulation(), mCuedAz, mCuedEl, mCueType, mLastUpdateTime, simTime, and UpdatePosition().

Referenced by WsfCompositeSensor::CompositeMode::AttemptToDetect(), WsfBMSensorInfoRecord::CueToAzimuth(), GetAbsoluteCuedOrientation(), WsfLaserTracker::Initialize(), WsfLaserTracker::TurnOff(), WsfLaserTracker::TurnOn(), and WsfDisInterface::UpdateXmtrFromBeam().

◆ SetCueMode()

void WsfArticulatedPart::SetCueMode ( SlewMode aCueMode)
inline

Set the allowed cueing mode.

References mCueMode.

Referenced by WsfSensor::TurnOn(), and WsfSensorMode::UpdateSensorCueingLimits().

◆ SetCueRates()

void WsfArticulatedPart::SetCueRates ( double aAzCueRate,
double aElCueRate )
inline

Set the angular cueing rates.

References mAzCueRate, and mElCueRate.

Referenced by WsfSensorMode::UpdateSensorCueingLimits().

◆ SetElCueLimits()

void WsfArticulatedPart::SetElCueLimits ( double aMinElCue,
double aMaxElCue )
inline

◆ SetElSlewLimits()

void WsfArticulatedPart::SetElSlewLimits ( double aMinElSlew,
double aMaxElSlew )
inline

Set the elevation slew limits.

References mMaxElSlew, and mMinElSlew.

Referenced by WsfSAR_Sensor::SAR_Mode::ComputeGeometry(), and WsfSAR_Sensor::Initialize().

◆ SetIsPrivate()

void WsfArticulatedPart::SetIsPrivate ( bool aIsPrivate)
inline

References mIsPrivate.

Referenced by WsfCompositeSensor::Initialize().

◆ SetMaskingPatternState()

void WsfArticulatedPart::SetMaskingPatternState ( WsfStringId aMaskingPatternStateId)
inline

◆ SetPitch()

void WsfArticulatedPart::SetPitch ( double aPitch)

Set the platform-relative (ECS) pitch angle of the articulated part.

Note
'pitch' should not be used for systems that rotate about their vertical axis as it will tilt the scan plane. For electronic systems that rotate 'antenna_tilt' should be used. For other systems 'tilt' should be used.
See also
SetTilt.

References mPitch, mRoll, mTilt, and mYaw.

Referenced by wsf::six_dof::Mover::InitializeSubobject(), WsfP6DOF_Mover::InitializeSubobject(), and ProcessInput().

◆ SetPlatform()

void WsfArticulatedPart::SetPlatform ( WsfPlatform * aPlatformPtr)
overridevirtual

Set the platform to which this part is associated.

Parameters
aPlatformPtrPointer to the containing platform.
Note
A part can be associated with only one platform. It is an error to associate a part with more than one platform!

Reimplemented from WsfPlatformPart.

Reimplemented in WsfExplicitWeapon, and WsfSensor.

References WsfPlatform::AttachObserver(), WsfPlatform::DetachObserver(), WsfPlatformPart::GetPlatform(), and WsfPlatformPart::SetPlatform().

Referenced by WsfDisDirectedEnergyFire::Process(), WsfWeaponServer::ProcessCommand(), WsfExplicitWeapon::SetPlatform(), and WsfSensor::SetPlatform().

◆ SetPositionRateECS()

void WsfArticulatedPart::SetPositionRateECS ( const double aDX,
const double aDY,
const double aDZ )

References mDX, mDY, and mDZ.

◆ SetRoll()

void WsfArticulatedPart::SetRoll ( double aRoll)

Set the platform-relative (ECS) roll angle of the articulated part.

References mPitch, mRoll, mTilt, and mYaw.

Referenced by wsf::six_dof::Mover::InitializeSubobject(), WsfP6DOF_Mover::InitializeSubobject(), and ProcessInput().

◆ SetSlewMode()

void WsfArticulatedPart::SetSlewMode ( SlewMode aSlewMode)
inline

Set the allowed slewing mode.

References mSlewMode.

◆ SetSlewRates()

void WsfArticulatedPart::SetSlewRates ( double aAzSlewRate,
double aElSlewRate )

Set the angular slew rates, limited by the maximum slew rates.

References mAzSlewRate, mElSlewRate, mMaxAzSlewRate, and mMaxElSlewRate.

Referenced by WsfBMSensorInfoRecord::SetAzSlewRate().

◆ SetTilt()

void WsfArticulatedPart::SetTilt ( double aTilt)

Set the platform-relative (ECS) tilt angle of the articulated part. This is an alternative to using 'pitch' when one doesn't want to change the orientation of the axis of rotation.

See also
SetPitch for other notes.

References mPitch, mRoll, mTilt, and mYaw.

Referenced by ProcessInput().

◆ SetTransientCuedLocationWCS()

void WsfArticulatedPart::SetTransientCuedLocationWCS ( const double aCuedLocationWCS[3])

Set the 'transient' cue to the specified WCS location. This will define the 'transient' cue (replacing any existing transient cue). If a 'non-transient' cue (as defined SetCuedLocationWCS) is active then it will be temporarily suspended. The 'non-transient' cue will remain active until deactivated by ClearTransientCue().

Parameters
aCuedLocationWCSThe desired cue location.
Note
The 'transient' cue can be used temporarily point at some other location (such as the electronic steering in a phased array radar).

References mTransientCueActive, and mTransientCuedLocationWCS.

Referenced by WsfCompositeSensor::CompositeMode::AttemptToDetect().

◆ SetYaw()

void WsfArticulatedPart::SetYaw ( double aYaw)

Set the platform-relative (ECS) yaw angle of the articulated part.

References mPitch, mRoll, mTilt, and mYaw.

Referenced by wsf::six_dof::Mover::InitializeSubobject(), WsfP6DOF_Mover::InitializeSubobject(), and ProcessInput().

◆ SlewToOrientation()

void WsfArticulatedPart::SlewToOrientation ( double aSimTime,
double aDesiredAz,
double aDesiredEl )
protected

Slew the part to the requested orientation.

This is called by UpdateCuedOrientation to perform the actual slewing operation needed to reflect the requested cuing operation. This will attempt to update the orientation subject to the angular rates. that are currently in effect.

Parameters
aSimTimeThe current simulation time.
aDesiredAzThe desired azimuth.
aDesiredElThe desired elevation.

References cINFINITE_SLEW_RATE, FullCircle(), GetAzimuthRotationRate(), GetElevationRotationRate(), mCurrentAz, mCurrentEl, mIsSlewing, mLastAzElUpdateTime, SlewComplete, and TimeToRotate().

Referenced by UpdateCuedOrientation().

◆ TimeToCue()

double WsfArticulatedPart::TimeToCue ( double aDesiredAz,
double aDesiredEl ) const
virtual

Calculate the time it takes to rotate a part given the requested Azimuth and Elevation.

Parameters
aDesiredAzthe desired azimuth (radians).
aDesiredElthe desired elevation (radians).
Returns
the maximum time to slew to the given azimuth or elevation.

References mCurrentAz, mCurrentEl, and TimeToRotate().

◆ TimeToRotate()

void WsfArticulatedPart::TimeToRotate ( double & aDeltaAz,
double & aDeltaEl,
double & aAzRate,
double & aElRate,
double & aTimeToAz,
double & aTimeToEl ) const
protectedvirtual

◆ TransientCueActive()

◆ UpdateCuedOrientation()

void WsfArticulatedPart::UpdateCuedOrientation ( double aSimTime)
protected

Update the orientation to reflect the current cue. This is called by UpdateOrientation to attempt to update the orientation to the requested cue.

Parameters
aSimTimeThe current simulation time.

Do NOT add mTilt here as it SHOULD get added later

References cCUED_AZ, cCUED_EL, cCUED_TO_LOCATION, cMAX_AZ, cMAX_EL, cMIN_AZ, cMIN_EL, cNOT_CUED, cSLEW_AZ, cSLEW_EL, mActualCuedAz, mActualCuedEl, mCuedAz, mCuedEl, mCuedLocationWCS, mCueMode, mCueType, mCurrentAz, mCurrentEl, mMaxAzCue, mMaxAzSlew, mMaxElCue, mMaxElSlew, mMinAzCue, mMinAzSlew, mMinElCue, mMinElSlew, mPitch, mRoll, mSlewMode, mSlewState, mTilt, mTransientCueActive, mTransientCuedLocationWCS, mYaw, and SlewToOrientation().

Referenced by UpdateOrientation().

◆ UpdateOrientation()

bool WsfArticulatedPart::UpdateOrientation ( double aSimTime)
protected

Update the orientation to the reflect the orientation as it should be at specified time. This is an internal routine that is called to ensure that the orientation of the part is up-to-date.

Returns
'true' if a cue is active.

References cCUED_TO_NOTHING, cSLEW_FIXED, WsfPlatformPart::GetSimulation(), mCueType, mLastAzElUpdateTime, mSlewMode, mTransientCueActive, and UpdateCuedOrientation().

Referenced by GetCurrentOrientationECS(), GetLOS_UnitVectorWCS(), and UpdatePosition().

◆ UpdatePosition()

void WsfArticulatedPart::UpdatePosition ( double aSimTime)
virtual

Update the position and orientation of the part.

This should always be called by the host platform before calling any of the geometry computation methods.

Parameters
aSimTimeThe current simulation time.

Reimplemented in WsfSensor.

References WsfPlatformPart::GetPlatform(), mDX, mDY, mDZ, mLastUpdateTime, WsfPlatform::Update(), and UpdateOrientation().

Referenced by ClearCueing(), GetAbsoluteCuedOrientation(), wsf::comm::medium::ModeGuided::GetPropagationTime(), wsf::comm::RadioXmtrRcvr::ReceiveSetup(), SetCuedLocationWCS(), SetCuedOrientation(), WsfGuidedMoverBase::SetInitialState(), WsfExplicitWeapon::SetLaunchState(), WsfSensor::Update(), and WsfSensor::UpdatePosition().

◆ WithinSlewLimits()

bool WsfArticulatedPart::WithinSlewLimits ( double aThisToTgtAz,
double aThisToTgtEl ) const
inline

Is the target within the slew limits?

Parameters
aThisToTgtAz[input] Azimuth of the target with respect to the device (radians).
aThisToTgtEl[input] Elevation of the target with respect to the device (radians).
Returns
'true' if within the slew limits or 'false' if not.

References mMaxAzSlew, mMaxElSlew, mMinAzSlew, and mMinElSlew.

Referenced by WsfBeamDirector::IsInFOR().

Member Data Documentation

◆ cALMOST_FULL_CIRCLE

double WsfArticulatedPart::cALMOST_FULL_CIRCLE = 359.999 * UtMath::cRAD_PER_DEG
staticconstexpr

Referenced by FullCircle().

◆ cINFINITE_SLEW_RATE

double WsfArticulatedPart::cINFINITE_SLEW_RATE = 1.0E+12 * UtMath::cRAD_PER_DEG
staticconstexpr

◆ mActualCuedAz

double WsfArticulatedPart::mActualCuedAz
protected

The actual cued location, subject to the slewing limits.

Referenced by GetActualCuedOrientation(), UpdateCuedOrientation(), WsfArticulatedPart(), and WsfArticulatedPart().

◆ mActualCuedEl

double WsfArticulatedPart::mActualCuedEl
protected

◆ mAzCueRate

double WsfArticulatedPart::mAzCueRate
protected

The cueing rates and limits of the device with respect to the device coordinate system.

Referenced by GetAzCueRate(), GetAzimuthRotationRate(), SetCueRates(), WsfArticulatedPart(), and WsfArticulatedPart().

◆ mAzSlewDirection

SlewDirection WsfArticulatedPart::mAzSlewDirection
protected

◆ mAzSlewRate

double WsfArticulatedPart::mAzSlewRate
protected

The slewing rates and limits of the device with respect to the device coordinate system.

Referenced by GetAzimuthRotationRate(), GetAzSlewRate(), Initialize(), SetSlewRates(), WsfArticulatedPart(), and WsfArticulatedPart().

◆ mCuedAz

double WsfArticulatedPart::mCuedAz
protected

The cued azimuth if mCueType == cCUED_TO_ANGLE.

Referenced by GetCuedOrientation(), SetCuedOrientation(), UpdateCuedOrientation(), WsfArticulatedPart(), and WsfArticulatedPart().

◆ mCuedEl

double WsfArticulatedPart::mCuedEl
protected

The cued elevation if mCueType == cCUED_TO_ANGLE.

Referenced by GetCuedOrientation(), SetCuedOrientation(), UpdateCuedOrientation(), WsfArticulatedPart(), and WsfArticulatedPart().

◆ mCuedLocationWCS

double WsfArticulatedPart::mCuedLocationWCS[3]
protected

The cued location if mCueType is cCUED_TO_LOCATION.

Referenced by GetCuedLocationWCS(), SetCuedLocationWCS(), UpdateCuedOrientation(), WsfArticulatedPart(), and WsfArticulatedPart().

◆ mCueMode

SlewMode WsfArticulatedPart::mCueMode
protected

The directions (az and/or el) in which cueing can be performed.

Referenced by GetCueMode(), SetCueMode(), UpdateCuedOrientation(), WsfArticulatedPart(), and WsfArticulatedPart().

◆ mCueType

CueType WsfArticulatedPart::mCueType
protected

◆ mCurrentAz

◆ mCurrentEl

◆ mDX

double WsfArticulatedPart::mDX
protected

◆ mDY

◆ mDZ

◆ mElCueRate

double WsfArticulatedPart::mElCueRate
protected

◆ mElSlewRate

double WsfArticulatedPart::mElSlewRate
protected

◆ mIsPrivate

bool WsfArticulatedPart::mIsPrivate
protected

'true' if the part is considered 'private' and not to visible to external simulations.

Referenced by IsPrivate(), SetIsPrivate(), WsfArticulatedPart(), and WsfArticulatedPart().

◆ mIsSlewing

bool WsfArticulatedPart::mIsSlewing
protected

'true' if the part is slewing to satisfy a cueing request.

Referenced by IsSlewing(), SlewToOrientation(), WsfArticulatedPart(), and WsfArticulatedPart().

◆ mLastAzElUpdateTime

double WsfArticulatedPart::mLastAzElUpdateTime
protected

The time when the current az/el were last updated.

Referenced by Initialize(), SlewToOrientation(), UpdateOrientation(), WsfArticulatedPart(), and WsfArticulatedPart().

◆ mLastUpdateTime

double WsfArticulatedPart::mLastUpdateTime
protected

◆ mMaskingPatternName

WsfStringId WsfArticulatedPart::mMaskingPatternName
protected

◆ mMaskingPatternPtr

WsfMaskingPattern* WsfArticulatedPart::mMaskingPatternPtr
protected

◆ mMaskingPatternStateId

WsfStringId WsfArticulatedPart::mMaskingPatternStateId
protected

◆ mMaxAzCue

double WsfArticulatedPart::mMaxAzCue
protected

◆ mMaxAzSlew

◆ mMaxAzSlewRate

double WsfArticulatedPart::mMaxAzSlewRate
protected

◆ mMaxElCue

double WsfArticulatedPart::mMaxElCue
protected

◆ mMaxElSlew

◆ mMaxElSlewRate

double WsfArticulatedPart::mMaxElSlewRate
protected

◆ mMinAzCue

double WsfArticulatedPart::mMinAzCue
protected

◆ mMinAzSlew

◆ mMinElCue

double WsfArticulatedPart::mMinElCue
protected

◆ mMinElSlew

◆ mPitch

◆ mRoll

◆ mSlewMethodCoordinated

bool WsfArticulatedPart::mSlewMethodCoordinated
protected

'true' if slcue rates are dynamically adjusted so the target angles are reached simultaneously.

Referenced by ProcessInput(), TimeToRotate(), WsfArticulatedPart(), and WsfArticulatedPart().

◆ mSlewMode

◆ mSlewState

int WsfArticulatedPart::mSlewState
protected

◆ mTilt

double WsfArticulatedPart::mTilt
protected

◆ mTransientCueActive

◆ mTransientCuedLocationWCS

double WsfArticulatedPart::mTransientCuedLocationWCS[3]
protected

◆ mYaw

double WsfArticulatedPart::mYaw
protected

◆ SlewComplete

UtCallbackListN<void(double)> WsfArticulatedPart::SlewComplete

Referenced by SlewToOrientation().


The documentation for this class was generated from the following files:
Copyrights Multiple, All Rights Reserved