🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
EphemerisTwoBody.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "AstCore/Ephemeris.hpp"
25#include "AstCore/TimePoint.hpp"
26#include "AstCore/BuiltinFrame.hpp"
27#include "AstCore/OrbitElement.hpp"
28#include "AstMath/Vector.hpp"
29
30AST_NAMESPACE_BEGIN
31
39class AST_CORE_API EphemerisTwoBody final: public Ephemeris
40{
41public:
42 static EphemerisTwoBody* New(Frame* frame, const TimePoint& epoch, const CartState& initstate);
43 static EphemerisTwoBody* New(Frame* frame, double gm, const TimePoint& epoch, const CartState& initstate);
44
46 EphemerisTwoBody(Frame* frame, double gm, const TimePoint& epoch, const CartState& initstate);
47 ~EphemerisTwoBody() override = default;
48 void setFrame(Frame* frame){ frame_ = frame; }
49 void setGM(double gm){ gm_ = gm; }
50 double getGM() const{ return gm_; }
51 void setEpoch(const TimePoint& epoch){ epoch_ = epoch; }
52 const TimePoint& getEpoch() const{ return epoch_; }
53 void setOrbitState(const CartState& initstate){ initstate_ = initstate; }
54 void getOrbitState(CartState& initstate) const{ initstate = initstate_; }
55public:
56 Frame* getFrame() const override;
57 errc_t getPos(const TimePoint& tp, Vector3d& pos) const override;
58 errc_t getPosVel(const TimePoint& tp, Vector3d& pos, Vector3d& vel) const override;
59 errc_t getInterval(TimeInterval& interval) const override;
60protected:
62 double gm_{0.0};
63 TimePoint epoch_{};
64 CartState initstate_{};
65};
66
69AST_NAMESPACE_END
直角坐标
定义 OrbitElement.hpp:46
二体星历
定义 EphemerisTwoBody.hpp:40
星历接口
定义 Ephemeris.hpp:43
virtual errc_t getPos(const TimePoint &tp, Vector3d &pos) const override=0
获取点在指定时间点的位置,相对于点的参考坐标系
virtual errc_t getPosVel(const TimePoint &tp, Vector3d &pos, Vector3d &vel) const override=0
获取点在指定时间点的位置和速度,相对于点的参考坐标系
virtual Frame * getFrame() const override=0
获取点所在的参考坐标系
坐标系类
定义 Frame.hpp:59
共享指针
定义 SharedPtr.hpp:33
时间区间
定义 TimeInterval.hpp:59
绝对时间点
定义 TimePoint.hpp:106
Frame * aFrameECI()
地球惯性系
定义 BuiltinFrame.cpp:28