12#ifndef WSFCOMPOSITEOPTICALSIGNATURE_HPP
13#define WSFCOMPOSITEOPTICALSIGNATURE_HPP
15#include "wsf_mil_export.h"
23#include "UtAtmosphere.hpp"
24#include "UtCalendar.hpp"
25#include "UtCloneablePtr.hpp"
53 UtMat3d::InverseTransform(result.GetData(),
mMat, aRhs.GetData());
60 UtMat3d::Transform(result.GetData(),
mMat, aRhs.GetData());
69 using TablePtr = UtCloneablePtr<UtTable::Table>;
146 virtual double AdjacentArea(
const UtVec3d& aOtherFaceLocECS,
const UtVec3d& aOtherFaceNormalECS)
const;
149 virtual void UpdateGeometry(
const UG_Input& aInput);
150 virtual void UpdateTemperature(
const UT_Input& aInput);
152 bool AreAdjacent(
const UtVec3d& aOtherFaceLocECS,
153 const UtVec3d& aOtherFaceNormalECS,
154 const UtVec3d& aMyFaceLocPCS,
155 const UtVec3d& aMyFaceNormalPCS)
const;
156 bool UpdateSharedFaceArea(
const Surface& aOther,
157 const UtVec3d& aMyFaceLocPCS,
158 const UtVec3d& aMyFaceNormalPCS,
159 double aMaxSharedArea,
160 double& aSharedArea);
161 void UpdateLocation(UtVec3d& aDefaultLocationECS,
const UtVec3d& aSizeSCS,
const UtVec3d& aOffsetSCS);
162 double UpdatePlumeBlockage(
double aArea,
double aCosTheta)
const;
218 double& aRadiantIntensity)
override;
232 State(
const State& aSrc);
234 State& operator=(
const State&) =
delete;
237 std::list<Surface*> mSurfaces;
241 void UpdateGeometry(
double aSimTime, State& aState);
242 void UpdateTemperature(
double aSimTime, State& aState);
244 std::list<State*> mStates;
245 unsigned int mDebugLevel{0};
249 Surface mDefaultSurface;
257 std::recursive_mutex mGeometryUpdateMutex;
258 double mGeometryUpdateTime{-1.0};
279 std::recursive_mutex mTempUpdateMutex;
280 double mTempUpdateTime{-1.0};
281 UtAtmosphere mAtmosphere{UtAtmosphere::CreateNewAtmosphereTable()};
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
Definition WsfCompositeOpticalSignature.hpp:44
MyMat3d & operator=(const MyMat3d &)=default
double mMat[3][3]
Definition WsfCompositeOpticalSignature.hpp:66
UtVec3d InverseMultiply(const UtVec3d &aRhs) const
Definition WsfCompositeOpticalSignature.hpp:50
MyMat3d()
Definition WsfCompositeOpticalSignature.hpp:46
MyMat3d(const MyMat3d &)=default
void Identity()
Definition WsfCompositeOpticalSignature.hpp:64
UtVec3d Multiply(const UtVec3d &aRhs) const
Definition WsfCompositeOpticalSignature.hpp:57
Definition WsfCompositeOpticalSignature.hpp:96
double mPlumeRadius
Definition WsfCompositeOpticalSignature.hpp:187
Surface & operator=(const Surface &aSrc)=delete
virtual Surface * Clone() const
Definition WsfCompositeOpticalSignature.cpp:608
double mRecoveryFactor
Definition WsfCompositeOpticalSignature.hpp:167
double mTemperatureOffset
Definition WsfCompositeOpticalSignature.hpp:166
virtual bool InitializeType(UtVec3d &aDefaultLocationECS)
Definition WsfCompositeOpticalSignature.cpp:614
virtual void CheckAdjacency(const Surface &aOther)
Definition WsfCompositeOpticalSignature.cpp:721
TemperatureType mTemperatureType
Definition WsfCompositeOpticalSignature.hpp:164
int mDebugLevel
Definition WsfCompositeOpticalSignature.hpp:189
TablePtr mTemperaturePtr
Definition WsfCompositeOpticalSignature.hpp:165
UtVec3d mLocationECS
Definition WsfCompositeOpticalSignature.hpp:169
double mTemperature
Definition WsfCompositeOpticalSignature.hpp:178
bool mUseDefaultLocation
Definition WsfCompositeOpticalSignature.hpp:170
virtual bool ProcessInput(UtInput &aInput)
Definition WsfCompositeOpticalSignature.cpp:626
MyMat3d mECS_ToSCS_Transform
Definition WsfCompositeOpticalSignature.hpp:175
double mAftRadius
Definition WsfCompositeOpticalSignature.hpp:184
virtual ~Surface()=default
Surface()
Definition WsfCompositeOpticalSignature.cpp:589
virtual void UpdatePlumeRadius(double aPlumeRadius)
Definition WsfCompositeOpticalSignature.hpp:148
MyMat3d mWCS_ToSCS_Transform
Definition WsfCompositeOpticalSignature.hpp:181
virtual double RadiantIntensity(const RI_Input &aInput) const
Definition WsfCompositeOpticalSignature.cpp:704
virtual double AdjacentArea(const UtVec3d &aOtherFaceLocECS, const UtVec3d &aOtherFaceNormalECS) const
Definition WsfCompositeOpticalSignature.cpp:724
double mGamma
Definition WsfCompositeOpticalSignature.hpp:168
virtual double ProjectedArea(const UtVec3d &aUnit_v) const
Definition WsfCompositeOpticalSignature.cpp:698
WsfCompositeOpticalSignature::MyMat3d MyMat3d
Definition WsfCompositeOpticalSignature.hpp:98
Surface(const Surface &aSrc)=default
Definition WsfCompositeOpticalSignature.hpp:37
WsfCompositeOpticalSignature & operator=(const WsfCompositeOpticalSignature &)=delete
@ cIV_COUNT
Definition WsfCompositeOpticalSignature.hpp:79
@ cIV_SPEED
Definition WsfCompositeOpticalSignature.hpp:77
@ cIV_THROTTLE
Definition WsfCompositeOpticalSignature.hpp:75
@ cIV_MACH
Definition WsfCompositeOpticalSignature.hpp:78
@ cIV_TIME
Definition WsfCompositeOpticalSignature.hpp:74
@ cIV_ALTITUDE
Definition WsfCompositeOpticalSignature.hpp:76
WsfCompositeOpticalSignature()
Definition WsfCompositeOpticalSignature.cpp:102
UtCloneablePtr< UtTable::Table > TablePtr
Definition WsfCompositeOpticalSignature.hpp:69
TemperatureType
Definition WsfCompositeOpticalSignature.hpp:83
@ cTT_AMBIENT
Definition WsfCompositeOpticalSignature.hpp:86
@ cTT_TABLE
Definition WsfCompositeOpticalSignature.hpp:85
@ cTT_UNDEFINED
Definition WsfCompositeOpticalSignature.hpp:84
@ cTT_ADIABATIC_WALL
Definition WsfCompositeOpticalSignature.hpp:87
static Surface * SurfaceFactory(const std::string &aType, const Surface &aDefaultData)
Definition WsfCompositeOpticalSignature.cpp:2159
An object that represents the optical signature of a platform.
Definition WsfOpticalSignature.hpp:27
WsfOpticalSignature * Clone() const override=0
virtual bool GetRadiantIntensity(double aSimTime, WsfStringId aState, const BandList &aBands, double aAzimuth, double aElevation, double &aRadiantIntensity)
Definition WsfOpticalSignature.cpp:97
virtual float GetSignature(double aSimTime, WsfStringId aStateId, double aAzimuth, double aElevation)=0
std::vector< WsfEM_Types::OpticalBand > BandList
Definition WsfOpticalSignature.hpp:53
virtual bool GetProjectedArea(double aSimTime, WsfStringId aStateId, double aAzimuth, double aElevation, double &aProjectedArea)
Definition WsfOpticalSignature.cpp:87
WsfOpticalSignature()
Definition WsfOpticalSignature.cpp:32
bool ProcessInput(UtInput &aInput) override
Definition WsfSignature.cpp:74
virtual bool Initialize(double aSimTime, WsfPlatform *aPlatformPtr)
Definition WsfSignature.cpp:51
virtual bool InitializeType()
Definition WsfSignature.cpp:40
virtual std::vector< WsfStringId > GetStateNames() const
get the list of all valid states belonging to the signature
Definition WsfSignature.hpp:43