🛰️航天仿真算法库 SpaceAST 0.3.1
载入中...
搜索中...
未找到
StateBPlane.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "AstCore/State.hpp"
25#include "AstMath/Vector.hpp"
26#include "AstCore/OrbitElement.hpp"
27
28AST_NAMESPACE_BEGIN
29
34class StateBPlane;
35using PStateBPlane = StateBPlane*;
36using HStateBPlane = SharedPtr<StateBPlane>;
37
46class AST_CORE_API StateBPlane final: public State
47{
48public:
49 AST_OBJECT(StateBPlane)
50 AST_PROPERT(RA)
51 AST_PROPERT(Dec)
52 AST_PROPERT(BDotR)
53 AST_PROPERT(BDotT)
54 AST_PROPERT(C3)
55 AST_PROPERT(TrueAnomaly)
56 static PStateBPlane New();
57 static HStateBPlane MakeShared();
58 static PStateBPlane New(const BPlaneElem& bPlaneElem);
59 static HStateBPlane MakeShared(const BPlaneElem& bPlaneElem);
60
61 StateBPlane() = default;
62 StateBPlane(const BPlaneElem& bPlaneElem);
63 StateBPlane(const State& state);
64 ~StateBPlane() override = default;
65public:
66 EStateType getStateType() const override { return EStateType::eBPlane; }
67 errc_t getState(CartState& state) const override;
68 errc_t getState(ModOrbElem& orbElem) const override;
69 errc_t setState(const CartState& state) override;
70 errc_t setState(const ModOrbElem& orbElem) override;
71public:
74 void getState(BPlaneElem& bPlaneElem) const { bPlaneElem = bPlaneElem_; }
75
79 errc_t setState(const BPlaneElem& bPlaneElem);
80
88 errc_t getRefVector(Vector3d& refVector, const CartState* cartState = nullptr) const;
89
93 void setRefVector(EBPlaneRefVector refVectorType, const Vector3d& refVector = Vector3d::Zero());
94
97 EBPlaneRefVector getRefVectorType() const { return refVectorType_; }
98protected:
102 errc_t getCartesianState(CartState& state) const;
103PROPERTIES:
105 angle_d getRA() const { return bPlaneElem_.ra_; }
107 void setRA(angle_d ra) { bPlaneElem_.ra_ = ra; }
108
110 angle_d getDec() const { return bPlaneElem_.dec_; }
112 void setDec(angle_d dec) { bPlaneElem_.dec_ = dec; }
113
115 length_d getBDotR() const { return bPlaneElem_.bDotR_; }
117 void setBDotR(length_d bDotR) { bPlaneElem_.bDotR_ = bDotR; }
118
120 length_d getBDotT() const { return bPlaneElem_.bDotT_; }
122 void setBDotT(length_d bDotT) { bPlaneElem_.bDotT_ = bDotT; }
123
125 double getC3() const { return bPlaneElem_.c3_; }
127 void setC3(double c3) { bPlaneElem_.c3_ = c3; }
128
130 angle_d getTrueAnomaly() const { return bPlaneElem_.trueA_; }
132 void setTrueAnomaly(angle_d trueA) { bPlaneElem_.trueA_ = trueA; }
133protected:
134 BPlaneElem bPlaneElem_{};
135 EBPlaneRefVector refVectorType_{EBPlaneRefVector::eBodyOrbitNormal};
136 Vector3d refVector_{};
137};
138
139
140
143AST_NAMESPACE_END
B平面根数
定义 OrbitElement.hpp:349
直角坐标
定义 OrbitElement.hpp:53
修正轨道根数
定义 OrbitElement.hpp:154
共享指针
定义 SharedPtr.hpp:33
B平面状态
定义 StateBPlane.hpp:47
EStateType getStateType() const override
获取状态类型
定义 StateBPlane.hpp:66
void setBDotT(length_d bDotT)
设置B矢量在T轴上的分量
定义 StateBPlane.hpp:122
angle_d getTrueAnomaly() const
获取真近点角
定义 StateBPlane.hpp:130
void getState(BPlaneElem &bPlaneElem) const
获取B平面根数
定义 StateBPlane.hpp:74
length_d getBDotR() const
获取B矢量在R轴上的分量
定义 StateBPlane.hpp:115
angle_d getDec() const
获取入渐近线赤纬
定义 StateBPlane.hpp:110
void setC3(double c3)
设置特征能量
定义 StateBPlane.hpp:127
void setRA(angle_d ra)
设置入渐近线赤经
定义 StateBPlane.hpp:107
void setBDotR(length_d bDotR)
设置B矢量在R轴上的分量
定义 StateBPlane.hpp:117
void setDec(angle_d dec)
设置入渐近线赤纬
定义 StateBPlane.hpp:112
EBPlaneRefVector getRefVectorType() const
获取参考向量类型
定义 StateBPlane.hpp:97
void setTrueAnomaly(angle_d trueA)
设置真近点角
定义 StateBPlane.hpp:132
length_d getBDotT() const
获取B矢量在T轴上的分量
定义 StateBPlane.hpp:120
double getC3() const
获取特征能量
定义 StateBPlane.hpp:125
航天器状态
定义 State.hpp:57
static HState MakeShared(EStateType type)
创建状态
定义 State.cpp:46
virtual errc_t getState(CartState &state) const =0
获取状态
virtual errc_t setState(const CartState &state)=0
设置状态
static PState New(EStateType type)
创建状态
定义 State.cpp:56
EBPlaneRefVector
B平面参考向量类型
定义 OrbitElement.hpp:957
EStateType
状态类型
定义 State.hpp:39
@ eBPlane
B平面状态