15#ifndef WSFSPACEMOVERBASE_HPP
16#define WSFSPACEMOVERBASE_HPP
18#include "wsf_space_export.h"
23#include "UtCentralBody.hpp"
24#include "UtCloneablePtr.hpp"
26#include "UtOptional.hpp"
27class UtOrbitalElements;
28#include "UtOrbitalPropagatorBase.hpp"
74 std::unique_ptr<UtOrbitalPropagatorBase> aPropagatorPtr,
75 const std::string& aScriptClassName =
"WsfSpaceMover");
89 void Update(
double aSimTime)
override;
102 bool Maneuver(
const UtCalendar& aEpoch,
const UtVec3d& aCommandedDeltaV, UtVec3d& aActualDeltaV);
105 virtual bool SetInitialPoint(
double aLat,
double aLon,
double aAlt,
double aSpeed,
double aHeading);
124 const UtOrbitalPropagatorBase&
GetPropagator()
const {
return *mPropagatorPtr; }
133 bool InitializeOrbitalManeuvering(
const UtCalendar& aEpoch);
149 void ScheduleMission(
const UtCalendar& aEpoch, std::unique_ptr<WsfOrbitalMissionSequence> aMissionEventsPtr);
154 void CancelMission();
167 bool VerifyMission(
const UtCalendar& aEpoch,
180 bool VerifyMission(
const UtCalendar& aEpoch)
const;
192 void UpdatePropagation(
const UtCalendar& aEpoch);
195 const UtCalendar&
GetCurrentTime()
const {
return mPropagatorPtr->GetCurrentTime(); }
201 const std::string&
GetDescriptor()
const {
return mPropagatorPtr->GetDescriptor(); }
204 const std::string&
GetDesignator()
const {
return mPropagatorPtr->GetDesignator(); }
206 const ut::OrbitalState& GetInitialOrbitalState()
const;
208 double GetInitialHeading()
const;
222 std::unique_ptr<UtOrbitalPropagatorBase> aPropagatorPtr,
225 bool GetLocationXYZ(
double aTime,
double aLocXYZ[3])
const override;
227 bool GetVelocityXYZ(
double aTime,
double aVelXYZ[3])
const override;
230 bool Update(
double aSimTime)
const;
242 const double aLocationWCS[3],
243 const double aVelocityWCS[3],
245 WsfDraw* aDrawPtr)
const override;
253 void UpdateColor(
double aSimTime,
const UtColor& aColor);
255 void SetOrbitColor(
const UtColor& aOrbitColor);
265 double GetLookAngleTo(
const UtVec3d& aLocationWCS)
const;
272 double GetIncidenceAngle(
const UtVec3d& aLocationWCS)
const;
279 double GetTargetElevationAngle(
const UtVec3d& aLocationWCS)
const;
287 double GetSquintAngleTo(
const UtVec3d& aLocationWCS)
const;
292 double GetDistanceToHorizon()
const;
297 double GetLookAngleToHorizon()
const;
300 bool AddDeltaV(
const UtVec3d& aDeltaV_ECI);
302 ut::CloneablePtr<UtOrbitalPropagatorBase> mPropagatorPtr;
303 ut::CloneablePtr<WsfOrbitalManeuvering> mManeuveringPtr;
304 ut::CloneablePtr<WsfAttitudeController> mAttitudePtr;
305 ut::CloneablePtr<WsfConjunctionInput> mConjunctionInputPtr;
307 double mSimTimeOfEpoch{0.0};
308 WsfScriptContext* mContextPtr;
309 ut::OrbitalState mOrbitalState;
310 ut::optional<UtColor> mOrbitColor;
312 bool mTLE_InputAllowed{
false};
#define WSF_DECLARE_COMPONENT_ROLE_TYPE(TYPE, ROLE)
Definition WsfComponentRoles.hpp:44
aObjectPtr Update(simTime)
@ cWSF_COMPONENT_SPACE_MOVER
Space-based movers.
Definition WsfSpaceComponentRoles.hpp:18
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
WsfSpatialDomain
A collection of enumerations and type definitions that are used across a number of components.
Definition WsfTypes.hpp:32
@ WSF_SPATIAL_DOMAIN_SPACE
Submarines.
Definition WsfTypes.hpp:38
Definition WsfAttitudeController.hpp:31
virtual bool PreInitialize(double aSimTime)
Definition WsfComponent.cpp:24
Provides the capability to draw shapes into the WSF replay file.
Definition WsfDraw.hpp:35
Definition WsfGeoPoint.hpp:29
Definition WsfMover.hpp:286
bool ProcessInput(UtInput &aInput) override
Definition WsfMover.cpp:138
void * QueryInterface(int aRole) override
Definition WsfMover.cpp:633
const int * GetComponentRoles() const override
Definition WsfMover.cpp:626
bool Initialize(double aSimTime) override
Definition WsfMover.cpp:108
bool Initialize2(double aSimTime) override
Definition WsfPlatformPart.cpp:291
WsfMover * Clone() const override=0
virtual KinematicModel * CreateKinematicModel(double aSimTime, WsfStringId aPlatformTypeId, const double aLocationWCS[3], const double aVelocityWCS[3], WsfMover *aMoverPtr, WsfDraw *aDrawPtr) const
Definition WsfMover.hpp:335
const char * GetScriptClassName() const override
Definition WsfMover.cpp:616
void Update(double aSimTime) override
Definition WsfMover.cpp:310
virtual bool GetFutureLocationWCS(double aSimTime, double aLocationWCS[3])
Definition WsfMover.cpp:531
Definition WsfOrbitalEvent.hpp:50
Definition WsfOrbitalManeuver.hpp:34
Definition WsfOrbitalManeuvering.hpp:30
Definition WsfOrbitalMissionSequence.hpp:32
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111
Definition WsfScriptContext.hpp:71
bool GetVelocityXYZ(double aTime, double aVelXYZ[3]) const override
Definition WsfSpaceMoverBase.cpp:752
UtVec3d mLastVelWCS
Definition WsfSpaceMoverBase.hpp:237
SpaceModel(double aSimTime, WsfStringId aModelTypeId, std::unique_ptr< UtOrbitalPropagatorBase > aPropagatorPtr, WsfDraw *aDrawPtr=nullptr)
Definition WsfSpaceMoverBase.cpp:705
UtVec3d mLastLocXYZ
Definition WsfSpaceMoverBase.hpp:235
UtCalendar mUpdateTime
Definition WsfSpaceMoverBase.hpp:233
double mLastUpdateTime
Definition WsfSpaceMoverBase.hpp:234
UtVec3d mLastLocWCS
Definition WsfSpaceMoverBase.hpp:236
bool GetLocationXYZ(double aTime, double aLocXYZ[3]) const override
Definition WsfSpaceMoverBase.cpp:740
std::unique_ptr< UtOrbitalPropagatorBase > mPropagatorPtr
Definition WsfSpaceMoverBase.hpp:232
Definition WsfSpaceMoverBase.hpp:70
bool PerformStagingOperation()
Definition WsfSpaceMoverBase.cpp:419
double GetRequiredDuration(double aDeltaV) const
Definition WsfSpaceMoverBase.cpp:404
const ut::CentralPoint & GetCentralPoint() const
Definition WsfSpaceMoverBase.cpp:438
double GetAvailableDeltaV() const
Definition WsfSpaceMoverBase.cpp:399
bool IsExtrapolating() const override
Definition WsfSpaceMoverBase.hpp:121
const std::string & GetDescriptor() const
Return the descriptor associated with this mover.
Definition WsfSpaceMoverBase.hpp:201
bool IsTLEInputAllowed() const noexcept
Definition WsfSpaceMoverBase.hpp:257
const ut::OrbitalState & GetOrbitalState() const
Return the current propagated orbital state.
Definition WsfSpaceMoverBase.cpp:596
WsfSpaceMoverBase & operator=(const WsfSpaceMoverBase &)=delete
void SetOrbitColor(const std::string &aOrbitColor)
Definition WsfSpaceMoverBase.hpp:254
UtOrbitalPropagatorBase & GetPropagator()
Return a reference to the orbital propagator associated with this space mover (non-const version).
Definition WsfSpaceMoverBase.hpp:127
WsfSpatialDomain GetSpatialDomain() const override
Definition WsfSpaceMoverBase.hpp:117
const ut::CentralBody & GetCentralBody() const
Definition WsfSpaceMoverBase.cpp:433
ut::optional< UtColor > GetOrbitColor() const
Definition WsfSpaceMoverBase.hpp:250
UtVec3d GetInitialVelocityECI() const
Definition WsfSpaceMoverBase.cpp:490
double GetManeuverDuration(const UtCalendar &aEpoch, const WsfOrbitalManeuver &aManeuver, double aDeltaV) const
Definition WsfSpaceMoverBase.cpp:414
double GetElementOutputUpdateInterval() const
Get the interval between entries in an event pipe of this mover's elements.
Definition WsfSpaceMoverBase.hpp:198
double GetRequiredDeltaV(double aDuration) const
Definition WsfSpaceMoverBase.cpp:409
WsfAttitudeController & GetAttitudeController()
Return a reference to the attitude controller associated with this space mover.
Definition WsfSpaceMoverBase.hpp:183
bool Maneuver(const UtCalendar &aEpoch, const UtVec3d &aCommandedDeltaV, UtVec3d &aActualDeltaV)
Definition WsfSpaceMoverBase.cpp:443
WSF_SPACE_DEPRECATED WsfGeoPoint GetInitialPositionLLA() const
Definition WsfSpaceMoverBase.cpp:464
WsfSpaceMoverBase()=delete
UtVec3d GetInitialPositionWCS() const
Definition WsfSpaceMoverBase.cpp:482
void SetTLEInputAllowed(bool aTLE_InputAllowed) noexcept
Definition WsfSpaceMoverBase.hpp:258
void SetTargetOrientationECI(double aPsi, double aTheta, double aPhi)
Set the mover's target ECI orientation.
Definition WsfSpaceMoverBase.cpp:797
double GetSimTimeOfEpoch() const
Definition WsfSpaceMoverBase.hpp:187
const UtCalendar & GetCurrentTime() const
Get the current propagation time.
Definition WsfSpaceMoverBase.hpp:195
const std::string & GetDesignator() const
Return the designator associated with this mover.
Definition WsfSpaceMoverBase.hpp:204
virtual bool SetInitialPoint(double aLat, double aLon, double aAlt, double aSpeed, double aHeading)
Definition WsfSpaceMoverBase.cpp:456
UtVec3d GetInitialPositionECI() const
Definition WsfSpaceMoverBase.cpp:474
WsfScriptContext & GetScriptContext()
Return a reference to the script context.
Definition WsfSpaceMoverBase.hpp:190
UtColor GetOrbitColorValue() const
Definition WsfSpaceMoverBase.hpp:251
const UtOrbitalPropagatorBase & GetPropagator() const
Return a reference to the orbital propagator associated with this space mover.
Definition WsfSpaceMoverBase.hpp:124
void SetInitialOrbitalState(const ut::OrbitalState &aState)
A pass-through method to set the initial orbital state.
Definition WsfSpaceMoverBase.hpp:211
UtVec3d GetInitialVelocityWCS() const
Definition WsfSpaceMoverBase.cpp:498
bool OrbitColorSet() const
Definition WsfSpaceMoverBase.hpp:252
Definition WsfSpaceOrbitalMissionSimulationContext.hpp:34
Definition WsfSensorErrorModel.hpp:21
std::function< void(int, const WsfOrbitalEvent *, const UtCalendar &, const UtOrbitalElements &, double, Status)> PostOperation
Definition WsfSpaceVerifyTypes.hpp:39
std::function< void(int, const WsfOrbitalEvent *, const UtCalendar &, const UtOrbitalElements &, double)> PreOperation
Definition WsfSpaceVerifyTypes.hpp:37