15#ifndef WSFEM_ANTENNA_HPP
16#define WSFEM_ANTENNA_HPP
18#include "wsf_export.h"
22#include "UtCloneablePtr.hpp"
25#include "UtScriptAccessible.hpp"
90 virtual bool ProcessInput(UtInput& aInput);
92 virtual void UpdatePosition(
double aSimTime);
108 void SetHeight(
double aHeight);
117 void SetPitch(
double aPitch);
119 void SetFieldOfView(std::unique_ptr<WsfFieldOfView> aFieldOfViewPtr);
122 void GetAzimuthFieldOfView(
double& aMinAzFOV,
double& aMaxAzFOV)
const;
124 void SetAzimuthFieldOfView(
double aMinAzFOV,
double aMaxAzFOV);
127 void GetElevationFieldOfView(
double& aMinElFOV,
double& aMaxElFOV)
const;
129 void SetElevationFieldOfView(
double aMinElFOV,
double aMaxElFOV);
144 void SetRangeLimits(
double aMinRange,
double aMaxRange);
163 void SetAltitudeLimits(
double aMinAlt,
double aMaxAlt);
224 void SetAzimuthScanLimits(
double aMinAzScan,
double aMaxAzScan);
242 void SetElevationScanLimits(
double aMinElScan,
double aMaxElScan);
253 void ComputeAspect(
const double aThisToTgtLocWCS[3],
double& aThisToTgtAz,
double& aThisToTgtEl);
255 void ComputeBeamAspect(
const double aWCS_ToBeamTransform[3][3],
256 const double aThisToTgtWCS[3],
257 double& aBeamToTgtAz,
258 double& aBeamToTgtEl)
const;
263 double aWCS_ToBeamTransform[3][3],
267 double ComputeBeamSteeringLoss(
double aEBS_Az,
double aEBS_El);
269 void ConvertWCS_ToACS(
const double aLocationWCS[3],
double aLocationACS[3]);
271 void ConvertWCS_ToNED(
const double aLocationWCS[3],
double aLocationNED[3]);
273 void ConvertNED_ToWCS(
const double aLocationNED[3],
double aLocationWCS[3]);
275 void ConvertWCS_VectorToACS(
const double aVectorWCS[3],
double aVectorACS[3]);
277 void ConvertWCS_VectorToNED(
const double aVectorWCS[3],
double aVectorNED[3]);
279 void ConvertNED_VectorToWCS(
const double aVectorNED[3],
double aVectorWCS[3]);
283 void GetLocationWCS(
double aLocationWCS[3]);
285 void GetLocationWCS(
const double aThisToTgtLocWCS[3],
double aTgtLocWCS[3]);
287 void GetRelativeLocationNED(
WsfPlatform* aTargetPtr,
double aLocationNED[3]);
289 void GetRelativeLocationNED(
const double aTgtLocWCS[3],
double aLocationNED[3]);
291 void GetRelativeLocationWCS(
double aThisToTgtAz,
double aThisToTgtEl,
double aThisToTgtRange,
double aThisToTgtLocWCS[3]);
293 void GetRelativeLocationWCS(
const double aTgtLocWCS[3],
double aThisToTgtLocWCS[3]);
295 void GetRelativeLocationWCS(
WsfPlatform* aTargetPtr,
double aThisToTgtLocWCS[3]);
302 bool WithinAltitude(
double aTgtAlt);
304 bool WithinFieldOfView(
double aThisToTgtAz,
double aThisToTgtEl);
307 double aEarthRadiusMultiplier,
308 double& aTrueThisToTgtAz,
309 double& aTrueThisToTgtEl,
310 double aApparentThisToTgtLocWCS[3],
311 double& aApparentThisToTgtAz,
312 double& aApparentThisToTgtEl,
313 double aApparentTgtToThisLocWCS[3]);
316 double aEarthRadiusMultiplier,
317 double& aTrueThisToTgtAz,
318 double& aTrueThisToTgtEl,
319 double aApparentThisToTgtLocWCS[3],
320 double& aApparentThisToTgtAz,
321 double& aApparentThisToTgtEl,
322 double aApparentTgtToThisLocWCS[3]);
324 bool WithinFieldOfView(
double aTgtLocWCS[3],
325 double aEarthRadiusMultiplier,
326 double& aTrueThisToTgtAz,
327 double& aTrueThisToTgtEl,
328 double aApparentThisToTgtLocWCS[3],
329 double& aApparentThisToTgtAz,
330 double& aApparentThisToTgtEl,
331 double aApparentTgtToThisLocWCS[3]);
348 void ConvertAnglesFromPCS_ToSSCS(
double& aAz,
double& aEl);
349 void ConvertAnglesFromSSCS_ToPCS(
double& aAz,
double& aEl);
351 void UpdateLocationLLA();
352 void UpdateLocationWCS();
353 void UpdateWCS_ToACS_Transform();
354 void UpdateWCS_ToNED_Transform();
355 void UpdateWCS_ToSSCS_Transform();
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
Definition WsfArticulatedPart.hpp:36
Definition WsfEM_Antenna.hpp:49
void IndicateNondefaultFieldOfView()
Definition WsfEM_Antenna.hpp:339
WsfArticulatedPart * GetArticulatedPart() const
Definition WsfEM_Antenna.hpp:84
void GetRangeLimits(double &aMinRange, double &aMaxRange) const
Get the range limits.
Definition WsfEM_Antenna.hpp:132
double mMinAlt
Definition WsfEM_Antenna.hpp:405
double GetEBS_ElCosSteeringLimit() const
Definition WsfEM_Antenna.hpp:192
const WsfFieldOfView * GetFieldOfView() const
Definition WsfEM_Antenna.hpp:333
double mEBS_ElLossExponent
Definition WsfEM_Antenna.hpp:377
bool mWCS_ToACS_TransformIsValid
Definition WsfEM_Antenna.hpp:441
ScanStabilization mScanStabilization
The degrees-of-freedom for scan-stabilization.
Definition WsfEM_Antenna.hpp:387
void GetElevationScanLimits(double &aMinElScan, double &aMaxElScan) const
Get the elevation scan limits.
Definition WsfEM_Antenna.hpp:230
void SetScanMode(ScanMode aScanMode)
Set the beam scanning mode.
Definition WsfEM_Antenna.hpp:203
double mMaxAlt
Definition WsfEM_Antenna.hpp:406
double mPartPitch
Definition WsfEM_Antenna.hpp:423
void SetEBS_Mode(EBS_Mode aEBS_Mode)
Set the electronic beam steering capabilities.
Definition WsfEM_Antenna.hpp:173
double GetHeight() const
Definition WsfEM_Antenna.hpp:106
double mMaxElScan
Definition WsfEM_Antenna.hpp:391
double GetEBS_AzLossExponent() const
Get the azimuth specific steering loss exponent.
Definition WsfEM_Antenna.hpp:176
EBS_Mode mEBS_Mode
The degrees-of-freedom for electronic beam steering.
Definition WsfEM_Antenna.hpp:380
double mPartYaw
Used to determine if the uncued articulated part orientation has changed.
Definition WsfEM_Antenna.hpp:422
double GetMinimumAzimuthScanLimit() const
Return the minimum azimuth scan limit.
Definition WsfEM_Antenna.hpp:219
double mEBS_AzCosSteeringLimit
the cosine of the maximum electronic beam steering angle in azimuth.
Definition WsfEM_Antenna.hpp:366
double mLat
Definition WsfEM_Antenna.hpp:417
double GetEBS_AzCosSteeringLimit() const
Definition WsfEM_Antenna.hpp:189
double mMinElScan
Definition WsfEM_Antenna.hpp:390
double mEBS_ElCosSteeringLimit
the cosine of the maximum electronic beam steering angle in elevation.
Definition WsfEM_Antenna.hpp:369
double GetEBS_ElLossExponent() const
Get the elevation specific steering loss exponent.
Definition WsfEM_Antenna.hpp:179
ScanMode GetScanMode() const
Get the beam scanning mode.
Definition WsfEM_Antenna.hpp:200
double mOffsetWCS[3]
The WCS vector from the articulated part to the antenna.
Definition WsfEM_Antenna.hpp:416
double mMaxAzScan
Definition WsfEM_Antenna.hpp:389
bool mWCS_ToSSCS_TransformIsValid
Definition WsfEM_Antenna.hpp:443
double mPartRoll
Definition WsfEM_Antenna.hpp:424
ut::CloneablePtr< WsfFieldOfView > mFieldOfViewPtr
Definition WsfEM_Antenna.hpp:398
ScanStabilization
The scan stabilization indicates in which axes scan stabilization is performed.
Definition WsfEM_Antenna.hpp:71
@ cSS_ROLL
Scan is stabilized in roll.
Definition WsfEM_Antenna.hpp:74
@ cSS_PITCH
Scan is stabilized in pitch.
Definition WsfEM_Antenna.hpp:73
@ cSS_NONE
Scan is not stabilization.
Definition WsfEM_Antenna.hpp:72
@ cSS_BOTH
Scan is stabilized in pitch and roll.
Definition WsfEM_Antenna.hpp:75
EBS_Mode
Electronic beam steering capabilities.
Definition WsfEM_Antenna.hpp:62
@ cEBS_NONE
No electronic beam steering.
Definition WsfEM_Antenna.hpp:63
@ cEBS_ELEVATION
Electronic beam steering in elevation.
Definition WsfEM_Antenna.hpp:65
@ cEBS_BOTH
Electronic beam steering in azimuth and elevation.
Definition WsfEM_Antenna.hpp:66
@ cEBS_AZIMUTH
Electronic beam steering in azimuth.
Definition WsfEM_Antenna.hpp:64
double GetMaximumAzimuthScanLimit() const
Return the maximum azimuth scan limit.
Definition WsfEM_Antenna.hpp:222
ScanMode
The scan mode indicates how the beam scans within the field of view.
Definition WsfEM_Antenna.hpp:53
@ cSCAN_AZ
Definition WsfEM_Antenna.hpp:55
@ cSCAN_AZ_EL
Definition WsfEM_Antenna.hpp:57
@ cSCAN_EL
Definition WsfEM_Antenna.hpp:56
@ cSCAN_FIXED
Definition WsfEM_Antenna.hpp:54
double mEBS_AzLossExponent
Definition WsfEM_Antenna.hpp:373
bool WithinRange(double aTgtRange) const
Definition WsfEM_Antenna.hpp:344
void SetMinimumRange(double aMinRange)
Definition WsfEM_Antenna.hpp:148
double GetPitch() const
Definition WsfEM_Antenna.hpp:115
void SetMinimumAzimuthScanLimit(double aMinAzScan)
Definition WsfEM_Antenna.hpp:227
bool mLocationLLA_IsValid
'true' if the antenna LLA values are valid.
Definition WsfEM_Antenna.hpp:438
void GetAzimuthScanLimits(double &aMinAzScan, double &aMaxAzScan) const
Get the azimuth scan limits.
Definition WsfEM_Antenna.hpp:212
double mMinAzScan
Definition WsfEM_Antenna.hpp:388
bool mLocationWCS_IsValid
'true' if the antenna WCS location/offset values are valid.
Definition WsfEM_Antenna.hpp:436
double GetMinimumRange() const
Return the minimum range.
Definition WsfEM_Antenna.hpp:142
double mLon
Definition WsfEM_Antenna.hpp:418
void SetMaximumAltitude(double aMaxAltitude)
Definition WsfEM_Antenna.hpp:165
WsfEM_Antenna()
Definition WsfEM_Antenna.cpp:36
void SetMaximumRange(double aMaxRange)
Definition WsfEM_Antenna.hpp:146
bool DefaultFieldOfView() const
Definition WsfEM_Antenna.hpp:334
double mMaxRange
Definition WsfEM_Antenna.hpp:404
double mAlt
Definition WsfEM_Antenna.hpp:419
double GetMaximumRange() const
Return the maximum range.
Definition WsfEM_Antenna.hpp:139
bool mECS_ToACS_TransformIsValid
Definition WsfEM_Antenna.hpp:440
double mWCS_ToSSCS_Transform[3][3]
The transformation from WCS to the stabilized-scan coordinate system (SSCS).
Definition WsfEM_Antenna.hpp:433
WsfArticulatedPart * mArticulatedPartPtr
Definition WsfEM_Antenna.hpp:357
void SetEBS_ElLossExponent(double aEBS_LossExponentEl)
Set the electronic beam steering exponent specific to elevation dropoff.
Definition WsfEM_Antenna.hpp:185
double GetMinimumAltitude() const
Return the minimum altitude.
Definition WsfEM_Antenna.hpp:161
double mMinRange
Definition WsfEM_Antenna.hpp:403
void SetMinimumElevationScanLimit(double aMinElScan)
Definition WsfEM_Antenna.hpp:245
bool mDefaultFieldOfView
Indicates that the used field of view is unaltered from the default state (360 az x 180 el).
Definition WsfEM_Antenna.hpp:401
ScanMode mScanMode
The degrees-of-freedom for scanning.
Definition WsfEM_Antenna.hpp:385
double GetMinimumElevationScanLimit() const
Return the minimum elevation scan limit.
Definition WsfEM_Antenna.hpp:237
EBS_Mode GetEBS_Mode() const
Get the electronic beam steering capabilities.
Definition WsfEM_Antenna.hpp:170
void SetEBS_ElCosSteeringLimit(double aEBS_ElCosSteeringLimit)
Set the electronic beam steering cosine steering limit in elevation.
Definition WsfEM_Antenna.hpp:197
void SetMaximumElevationScanLimit(double aMaxElScan)
Definition WsfEM_Antenna.hpp:244
ScanStabilization GetScanStabilization() const
Get the scan stabilization mode.
Definition WsfEM_Antenna.hpp:206
double mPitch
The pitch (tilt) angle of the antenna relative to the articulated part.
Definition WsfEM_Antenna.hpp:363
double GetMaximumAltitude() const
Return the maximum altitude.
Definition WsfEM_Antenna.hpp:158
void GetAltitudeLimits(double &aMinAlt, double &aMaxAlt) const
Get the altitude limits.
Definition WsfEM_Antenna.hpp:151
double GetMaximumElevationScanLimit() const
Return the maximum elevation scan limit.
Definition WsfEM_Antenna.hpp:240
const char * GetScriptClassName() const override
Definition WsfEM_Antenna.hpp:94
void SetMinimumAltitude(double aMinAltitude)
Definition WsfEM_Antenna.hpp:167
void SetMaximumAzimuthScanLimit(double aMaxAzScan)
Definition WsfEM_Antenna.hpp:226
double mECS_ToACS_Transform[3][3]
The transformation from the ECS to the antenna coordinate system (ACS).
Definition WsfEM_Antenna.hpp:427
bool mWCS_ToNED_TransformIsValid
Definition WsfEM_Antenna.hpp:442
void SetScanStabilization(ScanStabilization aScanStabilization)
Set the scan stabilization mode.
Definition WsfEM_Antenna.hpp:209
double mOffset[3]
The offset of the antenna relative to the articulated part.
Definition WsfEM_Antenna.hpp:360
double mWCS_ToNED_Transform[3][3]
The transformation from WCS to NED.
Definition WsfEM_Antenna.hpp:431
double mWCS_ToACS_Transform[3][3]
The transformation from WCS to ACS.
Definition WsfEM_Antenna.hpp:429
void SetEBS_AzLossExponent(double aEBS_LossExponentAz)
Set the electronic beam steering exponent specific to azimuth dropoff.
Definition WsfEM_Antenna.hpp:182
void SetEBS_AzCosSteeringLimit(double aEBS_AzCosSteeringLimit)
Set the electronic beam steering cosine steering limit in azimuth.
Definition WsfEM_Antenna.hpp:195
double mLocationWCS[3]
The WCS location of the antenna (includes the antenna_height contribution).
Definition WsfEM_Antenna.hpp:413
Definition WsfEM_XmtrRcvr.hpp:42
Definition WsfFieldOfView.hpp:36