🛰️航天仿真算法库 SpaceAST 0.3.1
载入中...
搜索中...
未找到
EphemerisLagrangeVar.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "AstCore/Ephemeris.hpp"
25#include "AstCore/TimePoint.hpp"
26#include "AstCore/TimeList.hpp"
27#include "AstCore/Frame.hpp"
28#include "AstMath/Vector.hpp"
29#include <vector>
30
31AST_NAMESPACE_BEGIN
32
40class AST_CORE_API EphemerisLagrangeVar: public Ephemeris
41{
42public:
43 AST_OBJECT(EphemerisLagrangeVar)
44 EphemerisLagrangeVar() = default;
45 explicit EphemerisLagrangeVar(Frame* frame) : frame_(frame){}
46 ~EphemerisLagrangeVar() = default;
47public:
48 Frame* getFrame() const override;
49 errc_t getPos(const TimePoint& tp, Vector3d& pos) const override;
50 errc_t getPosVel(const TimePoint& tp, Vector3d& pos, Vector3d& vel) const override;
51 errc_t getInterval(TimeInterval& interval) const override;
52public:
53 void setFrame(Frame* frame){frame_ = frame;}
54 void setTimes(const std::vector<double>& times);
55 void setTimes(std::vector<double>&& times);
56 void setPositions(const std::vector<Vector3d>& positions){positions_ = positions;}
57 void setPositions(std::vector<Vector3d>&& positions){positions_ = std::move(positions);}
58 void setVelocities(const std::vector<Vector3d>& velocities){velocities_ = velocities;}
59 void setVelocities(std::vector<Vector3d>&& velocities){velocities_ = std::move(velocities);}
60 void setEpoch(const TimePoint& epoch){epoch_ = epoch;}
61 void setInterpolateOrder(int order){interpolateOrder_ = order;}
62 const TimePoint& getEpoch() const{return epoch_;}
63 const std::vector<double>& getTimes() const{return times_;}
64 const std::vector<Vector3d>& getPositions() const{return positions_;}
65 const std::vector<Vector3d>& getVelocities()const{return velocities_;}
66 int interpolateOrder() const{return interpolateOrder_;}
67 void getTimes(TimeList& list) const;
68public:
69 size_t size() const{return times_.size();}
70private:
71 int findIndex(double delta) const;
72protected:
74 std::vector<double> times_{};
75 std::vector<Vector3d> positions_{};
76 std::vector<Vector3d> velocities_{};
77 TimePoint epoch_{};
78 double averageStep_{60};
79 int interpolateOrder_{5};
80};
81
82
85AST_NAMESPACE_END
可变步长拉格朗日插值星历
定义 EphemerisLagrangeVar.hpp:41
坐标系抽象基类
定义 Frame.hpp:74
点抽象基类
定义 Point.hpp:42
virtual Frame * getFrame() const =0
获取点所在的参考坐标系
virtual errc_t getPosVel(const TimePoint &tp, Vector3d &pos, Vector3d &vel) const =0
获取点在指定时间点的位置和速度,相对于点的参考坐标系
virtual errc_t getInterval(TimeInterval &interval) const
获取点的时段,表示点在空间中的存在时间范围
定义 Point.cpp:38
virtual errc_t getPos(const TimePoint &tp, Vector3d &pos) const =0
获取点在指定时间点的位置,相对于点的参考坐标系
共享指针
定义 SharedPtr.hpp:33
时间区间
定义 TimeInterval.hpp:64
时间点列表
定义 TimeList.hpp:49
绝对时间点
定义 TimePoint.hpp:108