🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
TimeSystem.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "AstCore/Constants.h"
25#include "AstCore/DateTime.hpp"
26#include "AstCore/JulianDate.hpp"
27
28AST_NAMESPACE_BEGIN
29
30
36class JulianDate;
37class DateTime;
38
39
40
44template<typename Time>
45A_ALWAYS_INLINE void aTAIToTT(const Time& tmTAI, Time& tmTT)
46{
47 tmTT = aTAIToTT(tmTAI);
48}
49template<typename Time>
50A_ALWAYS_INLINE Time aTAIToTT(const Time& tmTAI)
51{
52 return tmTAI + kTTMinusTAI;
53}
54
55
59template<typename Time>
60A_ALWAYS_INLINE void aTTToTAI(const Time& tmTT, Time& tmTAI)
61{
62 tmTAI = aTTToTAI(tmTT);
63}
64template<typename Time>
65A_ALWAYS_INLINE Time aTTToTAI(const Time& tmTT)
66{
67 return tmTT - kTTMinusTAI;
68}
69
73template<typename Time>
74A_ALWAYS_INLINE void aTAIToGPS(const Time& tmTAI, Time& tmGPS)
75{
76 tmGPS = tmTAI + kGPSMinusTAI;
77}
78template<typename Time>
79A_ALWAYS_INLINE Time aTAIToGPS(const Time& tmTAI)
80{
81 return tmTAI + kGPSMinusTAI;
82}
83
87template<typename Time>
88A_ALWAYS_INLINE void aGPSToTAI(const Time& tmGPS, Time& tmTAI)
89{
90 tmTAI = tmGPS - kGPSMinusTAI;
91}
92template<typename Time>
93A_ALWAYS_INLINE Time aGPSToTAI(const Time& tmGPS)
94{
95 return tmGPS - kGPSMinusTAI;
96}
97
98
99
103AST_CORE_API void aTAIToUTC(const JulianDate& jdTAI, JulianDate& jdUTC);
104AST_CORE_API void aTAIToUTC(const DateTime& dttmTAI, DateTime& dttmUTC);
105A_ALWAYS_INLINE JulianDate aTAIToUTC(const JulianDate& jdTAI)
106{
107 JulianDate jdUTC;
108 aTAIToUTC(jdTAI, jdUTC);
109 return jdUTC;
110}
111A_ALWAYS_INLINE DateTime aTAIToUTC(const DateTime& dttmTAI)
112{
113 DateTime dttmUTC;
114 aTAIToUTC(dttmTAI, dttmUTC);
115 return dttmUTC;
116}
117
118
119
120
124AST_CORE_API void aUTCToTAI(const JulianDate& jdUTC, JulianDate& jdTAI);
125AST_CORE_API void aUTCToTAI(const DateTime& dttmUTC, DateTime& dttmTAI);
126
127A_ALWAYS_INLINE JulianDate aUTCToTAI(const JulianDate& jdUTC)
128{
129 JulianDate jdTAI;
130 aUTCToTAI(jdUTC, jdTAI);
131 return jdTAI;
132}
133A_ALWAYS_INLINE DateTime aUTCToTAI(const DateTime& dttmUTC)
134{
135 DateTime dttmTAI;
136 aUTCToTAI(dttmUTC, dttmTAI);
137 return dttmTAI;
138}
139
143AST_CORE_API void aUTCToTT(const JulianDate& jdUTC, JulianDate& jdTT);
144AST_CORE_API void aUTCToTT(const DateTime& dttmUTC, DateTime& dttmTT);
145
146A_ALWAYS_INLINE JulianDate aUTCToTT(const JulianDate& jdUTC)
147{
148 JulianDate jdTT;
149 aUTCToTT(jdUTC, jdTT);
150 return jdTT;
151}
152A_ALWAYS_INLINE DateTime aUTCToTT(const DateTime& dttmUTC)
153{
154 DateTime dttmTT;
155 aUTCToTT(dttmUTC, dttmTT);
156 return dttmTT;
157}
158
160AST_CORE_API void aUTCToUT1(const JulianDate& jdUTC, JulianDate& jdUT1);
161AST_CORE_API void aUTCToUT1(const DateTime& dttmUTC, DateTime& dttmUT1);
162
166AST_CORE_API void aTTToUTC(const JulianDate& jdTT, JulianDate& jdUTC);
167AST_CORE_API void aTTToUTC(const DateTime& dttmTT, DateTime& dttmUTC);
168
169A_ALWAYS_INLINE JulianDate aTTToUTC(const JulianDate& jdTT)
170{
171 JulianDate jdUTC;
172 aTTToUTC(jdTT, jdUTC);
173 return jdUTC;
174}
175A_ALWAYS_INLINE DateTime aTTToUTC(const DateTime& dttmTT)
176{
177 DateTime dttmUTC;
178 aTTToUTC(dttmTT, dttmUTC);
179 return dttmUTC;
180}
181
185AST_CORE_API void aTTToTDB(const JulianDate& jdTT, JulianDate& jdTDB);
186AST_CORE_API void aTTToTDB(const DateTime& dttmTT, DateTime& dttmTDB);
187A_ALWAYS_INLINE JulianDate aTTToTDB(const JulianDate& jdTT)
188{
189 JulianDate jdTDB;
190 aTTToTDB(jdTT, jdTDB);
191 return jdTDB;
192}
193A_ALWAYS_INLINE DateTime aTTToTDB(const DateTime& dttmTT)
194{
195 DateTime dttmTDB;
196 aTTToTDB(dttmTT, dttmTDB);
197 return dttmTDB;
198}
199
200
201AST_CORE_API void aTDBToTT(const JulianDate& jdTDB, JulianDate& jdTT);
202AST_CORE_API void aTDBToTT(const DateTime& dttmTDB, DateTime& dttmTT);
203A_ALWAYS_INLINE JulianDate aTDBToTT(const JulianDate& jdTDB)
204{
205 JulianDate jdTT;
206 aTDBToTT(jdTDB, jdTT);
207 return jdTT;
208}
209A_ALWAYS_INLINE DateTime aTDBToTT(const DateTime& dttmTDB)
210{
211 DateTime dttmTT;
212 aTDBToTT(dttmTDB, dttmTT);
213 return dttmTT;
214}
215
216
217
222AST_CORE_CAPI double aTDBMinusTT(const JulianDate& jdTT);
223
224
229AST_CORE_CAPI double aTTMinusTDB(const JulianDate& jdTDB);
230
231
235AST_CORE_CAPI double aJulianCenturyFromJ2000(const JulianDate& jd);
236
237
241AST_CORE_API TimePoint aSpiceEtToTimePoint(double et);
242
243
247AST_CORE_API double aTimePointToSpiceEt(const TimePoint& tp);
248
249
250
254AST_NAMESPACE_END
255
时间
定义 Time.hpp:53
void aTAIToUTC(const JulianDate &jdTAI, JulianDate &jdUTC)
从原子时(TAI) 转换为 协调世界时(UTC)
定义 TimeSystem.cpp:40
double aTTMinusTDB(const JulianDate &jdTDB)
计算 地球时(TT) 时间与 质心动力学时(TDB) 时间的差值
定义 TimeSystem.cpp:129
A_ALWAYS_INLINE void aGPSToTAI(const Time &tmGPS, Time &tmTAI)
从GPS时 转换为 原子时(TAI)
定义 TimeSystem.hpp:88
double aJulianCenturyFromJ2000(const JulianDate &jd)
计算儒略世纪数,以 J2000.0 为基准
定义 TimeSystem.cpp:30
A_ALWAYS_INLINE void aTAIToGPS(const Time &tmTAI, Time &tmGPS)
从原子时(TAI) 转换为 GPS时
定义 TimeSystem.hpp:74
double aTimePointToSpiceEt(const TimePoint &tp)
将 TimePoint 转换为 SPICE 时间
定义 TimeSystem.cpp:417
void aTTToUTC(const JulianDate &jdTT, JulianDate &jdUTC)
从地球时(TT) 转换为 协调世界时(UTC)
定义 TimeSystem.cpp:90
void aUTCToTAI(const JulianDate &jdUTC, JulianDate &jdTAI)
从协调世界时(UTC) 转换为 原子时(TAI)
定义 TimeSystem.cpp:56
A_ALWAYS_INLINE void aTAIToTT(const Time &tmTAI, Time &tmTT)
从原子时(TAI) 转换为 地球时(TT)
定义 TimeSystem.hpp:45
A_ALWAYS_INLINE void aTTToTAI(const Time &tmTT, Time &tmTAI)
从地球时(TT) 转换为 原子时(TAI)
定义 TimeSystem.hpp:60
double aTDBMinusTT(const JulianDate &jdTT)
计算 质心动力学时(TDB) 时间与 地球时(TT) 时间的差值
定义 TimeSystem.cpp:143
void aTTToTDB(const JulianDate &jdTT, JulianDate &jdTDB)
从地球时(TT) 转换为质心动力学时(TDB)
定义 TimeSystem.cpp:103
TimePoint aSpiceEtToTimePoint(double et)
将 SPICE 时间转换为 TimePoint
定义 TimeSystem.cpp:411
void aUTCToTT(const JulianDate &jdUTC, JulianDate &jdTT)
从协调世界时(UTC) 转换为 地球时(TT)
定义 TimeSystem.cpp:72
void aUTCToUT1(const JulianDate &jdUTC, JulianDate &jdUT1)
从协调世界时(UTC) 转换为 世界时(UT1)
定义 TimeSystem.cpp:84
constexpr double kGPSMinusTAI
GPS 时间相对原子时的偏置[s]
定义 Constants.h:46