12#ifndef WSFSPACEOPTICALSIGNATURE_HPP
13#define WSFSPACEOPTICALSIGNATURE_HPP
15#include "wsf_space_export.h"
24#include "UtCalendar.hpp"
48 UtMat3d::InverseTransform(result.GetData(),
mMat, aRhs.GetData());
102 const UtVec3d& aUnit_i,
104 const UtVec3d& aUnit_v,
105 unsigned int aDebugLevel)
const;
141 double& aRadiantIntensity)
override;
156 State(
const State&) =
delete;
157 State& operator=(
const State&) =
delete;
160 std::list<std::unique_ptr<Surface>> mSurfaces;
169 SharedData(
const SharedData&) =
delete;
170 SharedData& operator=(
const SharedData&) =
delete;
172 bool InitializeType(WsfObject& aBase);
176 bool ProcessInput(UtInput& aInput, WsfObject& aBase);
180 Surface mDefaultSurface;
182 const State* mDefaultStatePtr;
183 std::list<State> mStates;
184 size_t mMaxSurfaceCount;
187 double ComputeEarthReflectionSignature(
double aSimTime,
const BandList& aBands,
const State& aState, Data& aData);
188 double ComputeSolarReflectionSignature(
double aSimTime,
const BandList& aBands,
const State& aState, Data& aData);
189 double ComputeThermalSignature(
double aSimTime,
const BandList& aBands,
const State& aState, Data& aData);
191 double ComputeReflection(
double aSimTime,
192 const BandList& aBands,
196 const UtVec3d& aUnit_ps,
199 void GetEclipseState(
double aSimTime, Data& aData);
200 void UpdateEclipseTimes(
double aSimTime, Data& aData);
202 void UpdateState(
double aSimTime,
const State& aState);
204 std::shared_ptr<SharedData> mSharedDataPtr;
208 std::string mPlotFile;
209 std::string mPlotFieldDelimiter;
210 unsigned int mDebugLevel;
211 bool mHighResolutionEclipse;
217 std::recursive_mutex mStateUpdateMutex;
218 double mStateUpdateTime;
219 UtCalendar mCurrentTime;
230 std::vector<MyMat3d> mTransforms;
234 double mEclipseEntryExitTime;
241 std::recursive_mutex mEclipseUpdateMutex;
242 double mNextEclipseUpdateTime;
243 double mEclipseEntryTime;
244 double mEclipseExitTime;
245 double mOrbitalPeriod;
247 double mLastEclipseUpdateTime;
248 bool mLastEclipseState;
251 std::ofstream mPlotOfs;
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
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
Definition WsfSpaceOpticalSignature.hpp:39
MyMat3d & operator=(const MyMat3d &)=default
UtVec3d InverseMultiply(const UtVec3d &aRhs) const
Definition WsfSpaceOpticalSignature.hpp:45
MyMat3d(const MyMat3d &)=default
double mMat[3][3]
Definition WsfSpaceOpticalSignature.hpp:52
Definition WsfSpaceOpticalSignature.hpp:70
virtual bool ProcessInput(UtInput &aInput)
Definition WsfSpaceOpticalSignature.cpp:1289
virtual double ProjectedArea(const MyMat3d &aWCS_ToSCS_Transform, const UtVec3d &aUnit_v) const
Definition WsfSpaceOpticalSignature.cpp:1344
Surface()
Definition WsfSpaceOpticalSignature.hpp:88
virtual ~Surface()=default
double mReflectance
Definition WsfSpaceOpticalSignature.hpp:109
double mMaximumTemperature
Definition WsfSpaceOpticalSignature.hpp:112
virtual double Reflect(const MyMat3d &aWCS_ToSCS_Transform, double aIntensity, const UtVec3d &aUnit_i, double aDist_i, const UtVec3d &aUnit_v, unsigned int aDebugLevel) const
Definition WsfSpaceOpticalSignature.cpp:1358
double mMinimumTemperature
Definition WsfSpaceOpticalSignature.hpp:111
double mTemperatureChangeRate
Definition WsfSpaceOpticalSignature.hpp:110
virtual void UpdateTransform(const RefData &aRefData, MyMat3d &aWCS_ToSCS_Transform) const
Definition WsfSpaceOpticalSignature.cpp:1372
size_t mListIndex
Definition WsfSpaceOpticalSignature.hpp:108
WsfSpaceOpticalSignature::MyMat3d MyMat3d
Definition WsfSpaceOpticalSignature.hpp:72
static Surface * SurfaceFactory(const std::string &aType, const Surface &aDefaultData)
Definition WsfSpaceOpticalSignature.cpp:2048
WsfSpaceOpticalSignature()
Definition WsfSpaceOpticalSignature.cpp:331
static WsfOpticalSignature * ObjectFactory(const std::string &aTypeName)
Factory method called by WsfOpticalSignatureTypes.
Definition WsfSpaceOpticalSignature.cpp:320
WsfSpaceOpticalSignature & operator=(const WsfSpaceOpticalSignature &)=delete
~WsfSpaceOpticalSignature() override=default
Definition WsfSpaceOpticalSignature.hpp:59
UtVec3d mUnit_po
Definition WsfSpaceOpticalSignature.hpp:60
double mTemp_p
Definition WsfSpaceOpticalSignature.hpp:61
This contains data needed to create the WCS->SCS.
Definition WsfSpaceOpticalSignature.hpp:76
int mDebugLevel
Definition WsfSpaceOpticalSignature.hpp:84
UtVec3d mUnit_ps
Definition WsfSpaceOpticalSignature.hpp:81
double mWCS_ToECS_Transform[3][3]
Definition WsfSpaceOpticalSignature.hpp:78
UtVec3d mUnit_pe
Definition WsfSpaceOpticalSignature.hpp:82
UtVec3d mUnit_vel
Definition WsfSpaceOpticalSignature.hpp:80
UtVec3d mUnit_po
Definition WsfSpaceOpticalSignature.hpp:83
WsfPlatform * mPlatformPtr
Definition WsfSpaceOpticalSignature.hpp:77