🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
EOP.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include <vector>
25
26AST_NAMESPACE_BEGIN
27
28
49class AST_CORE_API EOP
50{
51public:
53 struct Entry
54 {
55 int mjd;
56 int dat;
57 double x, y;
58 double ut1_utc;
59 double lod;
60 double dpsi, deps;
61 double dx, dy;
62 };
63public:
64 EOP() = default;
65 ~EOP() = default;
66
70 errc_t loadDefault();
71
75 errc_t load(StringView filepath);
76
78 void unload();
79
84 static errc_t load(StringView filepath, std::vector<Entry>& data);
85
87 size_t size() const { return m_data.size(); }
88
92 const Entry* getEntry(int mjd) const;
93
94
99 errc_t setEntry(int mjd, const Entry& entry);
100
101 //----------------
102 // ut1 - utc
103 //----------------
104
109 double getUT1MinusUTC(const TimePoint& tp) const;
110
115 double getUT1MinusUTC_UTC(const JulianDate& jdUTC) const;
116
121 double getUT1MinusUTC_UTCMJD(double mjdUTC) const;
122
123
124 //----------------
125 // pole motion
126 //----------------
127
128
133 void getPoleMotion(const TimePoint& tp, double& x, double& y) const;
134
139 void getPoleMotionUTC(const JulianDate& jdUTC, double& x, double& y) const;
140
141
146 void getPoleMotionUTCMJD(double mjdUTC, double& x, double& y) const;
147
148
149 //----------------
150 // lod
151 //----------------
152
157 double getLOD(const TimePoint& tp) const;
158
163 double getLOD_UTC(const JulianDate& jdUTC) const;
164
169 double getLOD_UTCMJD(double mjdUTC) const;
170
171
172 //----------------
173 // xy correction
174 //----------------
175
180 void getXYCorrection(const TimePoint& tp, array2d& xyCorrection) const;
181
186 void getXYCorrectionUTC(const JulianDate& jdUTC, array2d& xyCorrection) const;
187
192 void getXYCorrectionUTCMJD(double mjdUTC, array2d& xyCorrection) const;
193
194protected:
200 template<double Entry::* Member>
201 A_ALWAYS_INLINE double getValue(size_t index, double frac) const
202 {
203 return m_data[index].*Member + frac * (m_data[index+1].*Member - m_data[index].*Member);
204 }
205
211 void findEntryIndex(double mjdUTC, int& index, double& frac) const;
212protected:
213 std::vector<Entry> m_data;
214 int m_startMJD = 0;
215 int m_endMJD = 0;
216};
217
218
221AST_NAMESPACE_END
地球指向参数(Earth Orientation Parameters)
定义 EOP.hpp:50
size_t size() const
获取数据大小
定义 EOP.hpp:87
A_ALWAYS_INLINE double getValue(size_t index, double frac) const
获取指定索引和插值系数的成员值
定义 EOP.hpp:201
儒略日
定义 JulianDate.hpp:82
绝对时间点
定义 TimePoint.hpp:106
地球指向参数条目
定义 EOP.hpp:54
int mjd
简约儒略日
定义 EOP.hpp:55
double deps
章动修正
定义 EOP.hpp:60
double y
极移
定义 EOP.hpp:57
double ut1_utc
ut1 - utc
定义 EOP.hpp:58
int dat
闰秒
定义 EOP.hpp:56
double dy
XYS系数修正
定义 EOP.hpp:61
double lod
length of day
定义 EOP.hpp:59