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