🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
SpacecraftState.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "SpacecraftParam.hpp"
25#include "AstCore/State.hpp"
26#include "AstUtil/Object.hpp"
27#include "AstUtil/ObjectNamed.hpp"
28
29AST_NAMESPACE_BEGIN
30
38#ifdef __GNUC__
39#pragma GCC diagnostic push
40#pragma GCC diagnostic ignored "-Wnon-virtual-dtor"
41#endif
42class AST_CORE_API SpacecraftState: public ObjectNamed, public SpacecraftParam
43{
44public:
45 AST_OBJECT(SpacecraftState)
46 AST_PROPERT(Frame)
47 AST_PROPERT(Mass)
48 AST_PROPERT(FuelMass)
49 AST_PROPERT(DryMass)
50 AST_PROPERT(Cd)
51 AST_PROPERT(Cr)
52 AST_PROPERT(DragArea)
53 AST_PROPERT(SRPArea)
54 AST_PROPERT(K1)
55 AST_PROPERT(K2)
56 AST_PROPERT(FuelDensity)
57 AST_PROPERT(RadPressureArea)
58 AST_PROPERT(RadPressureCoeff)
59 AST_PROPERT(TankPressure)
60 AST_PROPERT(TankTemperature)
61 AST_PROPERT(OrbitState)
62;
63
64 static SpacecraftState* NewDefault();
65
67 ~SpacecraftState() = default;
68PROPERTIES:
69 Frame* getFrame() const;
70 void setFrame(Frame* frame);
71
74 mass_d getMass() const{return fuelMass_ + dryMass_;}
75 mass_d getFuelMass() const{return fuelMass_;}
76 mass_d getDryMass() const{return dryMass_;}
77
80 void setFuelMass(mass_d fuelMass){fuelMass_ = fuelMass;}
81 void setDryMass(mass_d dryMass){dryMass_ = dryMass;}
82
83 double getCd() const{return cd_;}
84 void setCd(double cd){cd_ = cd;}
85
86 double getCr() const{return cr_;}
87 void setCr(double cr){cr_ = cr;}
88
89 area_d getDragArea() const{return dragArea_;}
90 void setDragArea(area_d dragArea){dragArea_ = dragArea;}
91
92 area_d getSRPArea() const{return srpArea_;}
93 void setSRPArea(area_d srpArea){srpArea_ = srpArea;}
94
95 double getK1() const{return k1_;}
96 void setK1(double k1){k1_ = k1;}
97
98 double getK2() const{return k2_;}
99 void setK2(double k2){k2_ = k2;}
100
101 density_d getFuelDensity() const{return fuelDensity_;}
102 void setFuelDensity(density_d fuelDensity){fuelDensity_ = fuelDensity;}
103
104 area_d getRadPressureArea() const{return radPressureArea_;}
105 void setRadPressureArea(area_d radPressureArea){radPressureArea_ = radPressureArea;}
106
107 double getRadPressureCoeff() const{return radPressureCoeff_;}
108 void setRadPressureCoeff(double radPressureCoeff){radPressureCoeff_ = radPressureCoeff;}
109
110
111 pressure_d getTankPressure() const{return tankPressure_;}
112 void setTankPressure(pressure_d tankPressure){tankPressure_ = tankPressure;}
113
114 temperature_d getTankTemperature() const{return tankTemperature_;}
115 void setTankTemperature(temperature_d tankTemperature){tankTemperature_ = tankTemperature;}
116
117
120 State* getOrbitState() const;
121
124 void setOrbitState(State* orbitState){orbitState_ = orbitState;}
125public:
128 void setStateType(EStateType stateType);
129
132 EStateType getStateType() const;
133
134 const SpacecraftParam& spacecraftParam() const{return *this;}
135 SpacecraftParam& spacecraftParam(){return *this;}
136 void setSpacecraftParam(const SpacecraftParam& spacecraftParam){this->spacecraftParam() = spacecraftParam;}
137public:
138 errc_t getState(ModOrbElem& orbElem) const;
139 errc_t getState(CartState& state) const;
140 errc_t getStateIn(Frame* frame, CartState& state) const;
141 errc_t getStateIn(Frame* frame, ModOrbElem& orbElem) const;
142 errc_t getStateInBodyInertial(Body* body, CartState& state) const;
143 errc_t setState(const ModOrbElem& orbElem);
144 errc_t setState(const CartState& state);
145 void setStateEpoch(const TimePoint& stateEpoch);
146 errc_t getStateEpoch(TimePoint& stateEpoch) const;
147 void copyFrom(const SpacecraftState& srcState);
148private:
149 HState orbitState_{};
150};
151
152
153using ScState = SpacecraftState;
154
157#ifdef __GNUC__
158#pragma GCC diagnostic pop
159#endif
160AST_NAMESPACE_END
坐标系抽象基类
定义 Frame.hpp:62
命名对象
定义 ObjectNamed.hpp:36
航天器参数
定义 SpacecraftParam.hpp:34
double cr_
光压系数
定义 SpacecraftParam.hpp:81
double fuelMass_
燃油质量
定义 SpacecraftParam.hpp:85
double tankTemperature_
罐温度
定义 SpacecraftParam.hpp:92
double cd_
阻力系数
定义 SpacecraftParam.hpp:80
double fuelDensity_
燃油密度
定义 SpacecraftParam.hpp:86
double srpArea_
SRP面积
定义 SpacecraftParam.hpp:83
double k1_
系数1
定义 SpacecraftParam.hpp:87
double radPressureCoeff_
辐射压力系数
定义 SpacecraftParam.hpp:90
double dryMass_
干质量
定义 SpacecraftParam.hpp:84
double tankPressure_
罐压力
定义 SpacecraftParam.hpp:91
double radPressureArea_
辐射压力面积
定义 SpacecraftParam.hpp:89
double dragArea_
阻力面积
定义 SpacecraftParam.hpp:82
double k2_
系数2
定义 SpacecraftParam.hpp:88
航天器状态,包含轨道状态、航天器参数(质量、面积、阻力系数、光压、密度、压力、温度等)
定义 SpacecraftState.hpp:43
mass_d getMass() const
获取质量
定义 SpacecraftState.hpp:74
void setOrbitState(State *orbitState)
设置轨道状态
定义 SpacecraftState.hpp:124
void setFuelMass(mass_d fuelMass)
设置质量
定义 SpacecraftState.hpp:80
航天器状态
定义 State.hpp:53
EStateType
状态类型
定义 State.hpp:39