WSF
WsfOrbitalManeuvering.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2016 Infoscitex, a DCS Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11
12#ifndef WSFORBITALMANEUVERING_HPP
13#define WSFORBITALMANEUVERING_HPP
14
15#include "wsf_space_export.h"
16
17#include "UtCalendar.hpp"
18#include "UtVec3.hpp"
19#include "WsfObject.hpp"
21class WsfPlatform;
22class WsfScenario;
23
29class WSF_SPACE_EXPORT WsfOrbitalManeuvering : public WsfObject
30{
31public:
35 ~WsfOrbitalManeuvering() override = default;
36
37 WsfOrbitalManeuvering* Clone() const override = 0;
38
39 bool ProcessInput(UtInput& aInput) override;
40
41 virtual bool Initialize(const UtCalendar& aEpoch);
42
43 virtual void SetPlatformAttributes(WsfPlatform* aPlatform) const {};
44
46 static constexpr double cINFINITE_DELTA_V = std::numeric_limits<double>::max();
47
49 static constexpr double cINFINITE_DURATION = std::numeric_limits<double>::max();
50
52
53 virtual double GetAvailableDeltaV() const;
54 virtual double GetAvailableDuration() const;
55 virtual bool ReduceAvailableDeltaV_By(double aDeltaV);
56 virtual bool Maneuver(const UtCalendar& aEpoch,
57 const WsfOrbitalManeuver& aManeuver,
58 const UtVec3d& aCommandedDeltaV,
59 UtVec3d& aActualDeltaV);
60 virtual bool PerformStagingOperation();
61
63 virtual double GetRequiredDuration(double aDeltaV) const = 0;
64
66 virtual double GetRequiredDeltaV(double aDuration) const = 0;
68
69 const UtCalendar& GetUpdateTime() const { return mUpdateTime; }
70
71 double GetManeuverDuration(const UtCalendar& aEpoch, const WsfOrbitalManeuver& aManeuver, double aDeltaV) const;
72
73protected:
74 bool mDebug{false}; // debug flag
75 UtCalendar mUpdateTime{};
76};
77
78#endif
WsfObject()
This is the constructor for the WsfObject class.
Definition WsfObject.cpp:88
virtual bool ProcessInput(UtInput &aInput)
Definition WsfObject.cpp:140
Definition WsfOrbitalManeuver.hpp:34
virtual bool ReduceAvailableDeltaV_By(double aDeltaV)
Definition WsfOrbitalManeuvering.cpp:91
bool mDebug
Definition WsfOrbitalManeuvering.hpp:74
WsfOrbitalManeuvering & operator=(const WsfOrbitalManeuvering &)=delete
const UtCalendar & GetUpdateTime() const
Definition WsfOrbitalManeuvering.hpp:69
virtual double GetRequiredDuration(double aDeltaV) const =0
Given a delta-v, return the required time to complete the maneuver.
virtual double GetAvailableDuration() const
Return the available duration corresponding with the available delta-v.
Definition WsfOrbitalManeuvering.cpp:84
WsfOrbitalManeuvering * Clone() const override=0
virtual double GetAvailableDeltaV() const
Definition WsfOrbitalManeuvering.cpp:78
WsfOrbitalManeuvering(const WsfOrbitalManeuvering &aSrc)=default
UtCalendar mUpdateTime
Definition WsfOrbitalManeuvering.hpp:75
~WsfOrbitalManeuvering() override=default
static constexpr double cINFINITE_DELTA_V
Constant value representing infinite delta-V; used to compare against values computed for maneuvers.
Definition WsfOrbitalManeuvering.hpp:46
virtual bool Maneuver(const UtCalendar &aEpoch, const WsfOrbitalManeuver &aManeuver, const UtVec3d &aCommandedDeltaV, UtVec3d &aActualDeltaV)
Definition WsfOrbitalManeuvering.cpp:103
virtual bool Initialize(const UtCalendar &aEpoch)
Definition WsfOrbitalManeuvering.cpp:43
static constexpr double cINFINITE_DURATION
Constant value representing infinite maneuver duration; used to compare against values computed for m...
Definition WsfOrbitalManeuvering.hpp:49
virtual double GetRequiredDeltaV(double aDuration) const =0
Given a maneuver duration, return the necessary delta-v.
virtual void SetPlatformAttributes(WsfPlatform *aPlatform) const
Definition WsfOrbitalManeuvering.hpp:43
virtual bool PerformStagingOperation()
Default method returns false (see WsfRocketOrbitalManeuvering).
Definition WsfOrbitalManeuvering.cpp:166
WsfOrbitalManeuvering()=default
Platforms represent a entity within the simulation.
Definition WsfPlatform.hpp:115
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111
Copyrights Multiple, All Rights Reserved