🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
EarthFrame.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24
25AST_NAMESPACE_BEGIN
26
27class TimePoint;
28class Rotation;
29class KinematicRotation;
30
31
79//----------------
80// ECI -> ECF
81//----------------
82
83
84
89AST_CORE_API void aECIToECFTransform(const TimePoint& tp, Rotation& rotation);
90
91
96AST_CORE_API void aECIToECFTransform(const TimePoint& tp, KinematicRotation& rotation);
97
98
103AST_CORE_CAPI void aECIToECFMatrix(const TimePoint& tp, Matrix3d& matrix);
104
105
111AST_CORE_API void aECIToECF(const TimePoint& tp, const Vector3d& vecECI, Vector3d& vecECF);
112
113
114
122AST_CORE_API void aECIToECF(
123 const TimePoint& tp,
124 const Vector3d& vecECI,
125 const Vector3d& velECI,
126 Vector3d& vecECF,
127 Vector3d& velECF
128);
129
130//----------------
131// ECF -> ECI
132//----------------
133
134
139AST_CORE_API void aECFToECITransform(const TimePoint& tp, Rotation& rotation);
140
141
146AST_CORE_API void aECFToECITransform(const TimePoint& tp, KinematicRotation& rotation);
147
148
153AST_CORE_CAPI void aECFToECIMatrix(const TimePoint& tp, Matrix3d& matrix);
154
155
161AST_CORE_API void aECFToECI(const TimePoint& tp, const Vector3d& vecECF, Vector3d& vecECI);
162
163
171AST_CORE_API void aECFToECI(
172 const TimePoint& tp,
173 const Vector3d& vecECF,
174 const Vector3d& velECF,
175 Vector3d& vecECI,
176 Vector3d& velECI
177);
178
179
180//----------------
181// J2000 -> ECF
182//----------------
183
188AST_CORE_API void aJ2000ToECFTransform(const TimePoint& tp, Rotation& rotation);
189
190
195AST_CORE_API void aJ2000ToECFTransform(const TimePoint& tp, KinematicRotation& rotation);
196
197
198
203AST_CORE_API void aJ2000ToECFMatrix(const TimePoint& tp, Matrix3d& matrix);
204
205
211AST_CORE_API void aJ2000ToECF(const TimePoint& tp, const Vector3d& vecJ2000, Vector3d& vecECF);
212
213
214
222AST_CORE_API void aJ2000ToECF(
223 const TimePoint& tp,
224 const Vector3d& vecJ2000,
225 const Vector3d& velJ2000,
226 Vector3d& vecECF,
227 Vector3d& velECF
228);
229
230
231//----------------
232// ECF -> J2000
233//----------------
234
239AST_CORE_API void aECFToJ2000Transform(const TimePoint& tp, Rotation& rotation);
240
245AST_CORE_API void aECFToJ2000Transform(const TimePoint& tp, KinematicRotation& rotation);
246
251AST_CORE_API void aECFToJ2000Matrix(const TimePoint& tp, Matrix3d& matrix);
252
253
259AST_CORE_API void aECFToJ2000(const TimePoint& tp, const Vector3d& vecECF, Vector3d& vecJ2000);
260
261
269AST_CORE_API void aECFToJ2000(
270 const TimePoint& tp,
271 const Vector3d& vecECF,
272 const Vector3d& velECF,
273 Vector3d& vecJ2000,
274 Vector3d& velJ2000
275);
276
277
278//----------------
279// J2000 -> MOD
280//----------------
281
282
287AST_CORE_CAPI void aJ2000ToMODTransform(const TimePoint& tp, Rotation& rotation);
288
289
294AST_CORE_CAPI void aJ2000ToMODMatrix(const TimePoint& tp, Matrix3d& matrix);
295
296
297
303AST_CORE_CAPI void aJ2000ToMOD(const TimePoint& tp, const Vector3d& vecJ2000, Vector3d& vecMOD);
304
305
306//----------------
307// MOD -> TOD
308//----------------
309
310
315AST_CORE_CAPI void aMODToTODTransform(const TimePoint& tp, Rotation& rotation);
316
317
322AST_CORE_CAPI void aMODToTODMatrix(const TimePoint& tp, Matrix3d& matrix);
323
324
330AST_CORE_CAPI void aMODToTOD(const TimePoint& tp, const Vector3d& vecMOD, Vector3d& vecTOD);
331
332
333
334
335//----------------
336// TOD -> GTOD
337//----------------
338
339
344AST_CORE_API void aTODToGTODTransform(const TimePoint& tp, Rotation& rotation);
345
346
351AST_CORE_API void aTODToGTODTransform(const TimePoint& tp, KinematicRotation& rotation);
352
353
358AST_CORE_API void aTODToGTODMatrix(const TimePoint& tp, Matrix3d& matrix);
359
360
366AST_CORE_API void aTODToGTOD(const TimePoint& tp, const Vector3d& vecTOD, Vector3d& vecGTOD);
367
368
369
377AST_CORE_API void aTODToGTOD(
378 const TimePoint& tp,
379 const Vector3d& vecTOD, const Vector3d& velTOD,
380 Vector3d& vecGTOC, Vector3d& velGTOC
381);
382
383
384//----------------
385// TOD -> TEME
386//----------------
387
388/*
389 IAU 1994 Resolution C7 春分点补正项控制宏(仅影响 TEME):
390
391 默认行为:采用IAU 1994 Resolution C7 春分点补正项公式(不定义宏 AST_TEME_NO_IAU1994_C7):
392 TEME 分点差使用完整公式:ee = dpsi*cos(eps) + eqecorr(C7补正项)
393 与 SOFA iauEqeq94 、Orekit TEMEProvider 行为一致,精度更高。
394
395 如需使用不含 C7 补正项的经典公式(老公式):
396 ee = dpsi*cos(eps + deps)
397 请在编译选项中定义 AST_TEME_NO_IAU1994_C7 宏。
398 此选项仅影响 TOD↔TEME 变换,不影响 TOD↔GTOD(该变换始终包含完整补正)。
399
400 @see IAU 1994 Resolution C7, SOFA iauEqeq94
401*/
402
406//#define AST_TEME_NO_IAU1994_C7
407
414AST_CORE_CAPI void aTODToTEMETransform(const TimePoint& tp, Rotation& rotation);
415
419AST_CORE_API void aTODToTEMETransform(const TimePoint& tp, KinematicRotation& rotation);
420
424AST_CORE_CAPI void aTODToTEMEMatrix(const TimePoint& tp, Matrix3d& matrix);
425
430AST_CORE_CAPI void aTODToTEME(const TimePoint& tp, const Vector3d& vecTOD, Vector3d& vecTEME);
431
432//----------------
433// TEME -> TOD
434//----------------
435
439AST_CORE_CAPI void aTEMEToTODTransform(const TimePoint& tp, Rotation& rotation);
440
444AST_CORE_CAPI void aTEMEToTODMatrix(const TimePoint& tp, Matrix3d& matrix);
445
450AST_CORE_CAPI void aTEMEToTOD(const TimePoint& tp, const Vector3d& vecTEME, Vector3d& vecTOD);
451
452
453//----------------
454// J2000 -> TEME
455//----------------
456
460AST_CORE_API void aJ2000ToTEMETransform(const TimePoint& tp, Rotation& rotation);
461
462
466AST_CORE_API void aJ2000ToTEMEMatrix(const TimePoint& tp, Matrix3d& matrix);
467
472AST_CORE_API void aJ2000ToTEME(const TimePoint& tp, const Vector3d& vecJ2000, Vector3d& vecTEME);
473
474
475//----------------
476// TEME -> J2000
477//----------------
478
482AST_CORE_API void aTEMEToJ2000Transform(const TimePoint& tp, Rotation& rotation);
483
484
488AST_CORE_API void aTEMEToJ2000Matrix(const TimePoint& tp, Matrix3d& matrix);
489
494AST_CORE_API void aTEMEToJ2000(const TimePoint& tp, const Vector3d& vecTEME, Vector3d& vecJ2000);
495
496
497
498//----------------
499// GTOD -> ECF
500//----------------
501
502
507AST_CORE_CAPI void aGTODToECFTransform(const TimePoint& tp, Rotation& rotation);
508
509
514AST_CORE_CAPI void aGTODToECFMatrix(const TimePoint& tp, Matrix3d& matrix);
515
516
517
523AST_CORE_CAPI void aGTODToECF(const TimePoint& tp, const Vector3d& vecGTOD, Vector3d& vecECF);
524
525
526
527//----------------
528// ICRF -> ECF
529//----------------
530
531
536AST_CORE_API void aICRFToECFTransform(const TimePoint& tp, Rotation& rotation);
537
538
543AST_CORE_API void aICRFToECFTransform(const TimePoint& tp, KinematicRotation& rotation);
544
545
550AST_CORE_CAPI void aICRFToECFMatrix(const TimePoint& tp, Matrix3d& matrix);
551
552
558AST_CORE_API void aICRFToECF(const TimePoint& tp, const Vector3d& vecICRF, Vector3d& vecECF);
559
565AST_CORE_API void aECFToICRF(const TimePoint& tp, const Vector3d& vecECF, Vector3d& vecICRF);
566
574AST_CORE_API void aICRFToECF(
575 const TimePoint& tp,
576 const Vector3d& vecICRF, const Vector3d& velICRF,
577 Vector3d& vecECF, Vector3d& velECF
578);
579
580// ----------------
581// ICRF -> CIRF
582// ----------------
583
584
589AST_CORE_CAPI void aICRFToCIRFTransform(const TimePoint& tp, Rotation& rotation);
590
591
596AST_CORE_CAPI void aICRFToCIRFMatrix(const TimePoint& tp, Matrix3d& matrix);
597
598
604AST_CORE_CAPI void aICRFToCIRF(const TimePoint& tp, const Vector3d& vecICRF, Vector3d& vecCIRF);
605
606
607
608// ----------------
609// CIRF -> TIRF
610// ----------------
611
616AST_CORE_API void aCIRFToTIRFTransform(const TimePoint& tp, Rotation& rotation);
617
622AST_CORE_API void aCIRFToTIRFTransform(const TimePoint& tp, KinematicRotation& rotation);
623
628AST_CORE_CAPI void aCIRFToTIRFMatrix(const TimePoint& tp, Matrix3d& matrix);
629
630
636AST_CORE_API void aCIRFToTIRF(const TimePoint& tp, const Vector3d& vecCIRF, Vector3d& vecTIRF);
637
638
646AST_CORE_API void aCIRFToTIRF(
647 const TimePoint& tp,
648 const Vector3d& vecCIRF, const Vector3d& velCIRF,
649 Vector3d& vecTIRF, Vector3d& velTIRF
650);
651
652
653// ----------------
654// TIRF -> ECF
655// ----------------
656
657
662AST_CORE_CAPI void aTIRFToECFTransform(const TimePoint& tp, Rotation& rotation);
663
664
669AST_CORE_CAPI void aTIRFToECFMatrix(const TimePoint& tp, Matrix3d& matrix);
670
676AST_CORE_CAPI void aTIRFToECF(const TimePoint& tp, const Vector3d& vecTIRF, Vector3d& vecECF);
677
678
679// ----------------
680// ICRF -> J2000
681// ----------------
682
683
687AST_CORE_API void aICRFToJ2000Transform(const TimePoint& tp, Rotation& rotation);
688
689
693AST_CORE_API void aICRFToJ2000Transform(const TimePoint& tp, KinematicRotation& rotation);
694
695
699AST_CORE_CAPI void aICRFToJ2000Matrix(const TimePoint& tp, Matrix3d& matrix);
700
701
707AST_CORE_API void aICRFToJ2000(const TimePoint& tp, const Vector3d& vecICRF, Vector3d& vecJ2000);
708
709
716AST_CORE_API void aICRFToJ2000(
717 const TimePoint& tp,
718 const Vector3d& vecICRF,
719 const Vector3d& velICRF,
720 Vector3d& vecJ2000,
721 Vector3d& velJ2000
722);
723
724
725
726// ----------------
727// J2000 -> ICRF
728// ----------------
729
733AST_CORE_API void aJ2000ToICRFTransform(const TimePoint& tp, Rotation& rotation);
734
738AST_CORE_API void aJ2000ToICRFTransform(const TimePoint& tp, KinematicRotation& rotation);
739
743AST_CORE_CAPI void aJ2000ToICRFMatrix(const TimePoint& tp, Matrix3d& matrix);
744
745
750AST_CORE_API void aJ2000ToICRF(const TimePoint& tp, const Vector3d& vecJ2000, Vector3d& vecICRF);
751
752
759AST_CORE_API void aJ2000ToICRF(
760 const TimePoint& tp,
761 const Vector3d& vecJ2000,
762 const Vector3d& velJ2000,
763 Vector3d& vecICRF,
764 Vector3d& velICRF
765);
766
767
768// ----------------
769// Alias
770// ----------------
771
772
773A_ALWAYS_INLINE void aICRFToECFMatrix(const TimePoint& tp, double matrix[3][3])
774{
775 return aICRFToECFMatrix(tp, *((Matrix3d*)matrix));
776}
777
780AST_NAMESPACE_END
void aECIToECFTransform(const TimePoint &tp, Rotation &rotation)
从ECI转换为ECF的坐标旋转变换
定义 EarthFrame.cpp:37
void aECFToECI(const TimePoint &tp, const Vector3d &vecECF, Vector3d &vecECI)
从ECF转换为ECI的坐标转换
定义 EarthFrame.cpp:82
void aCIRFToTIRFTransform(const TimePoint &tp, Rotation &rotation)
从CIRF转换为TIRF的坐标旋转变换
定义 EarthFrame.cpp:554
void aJ2000ToMODTransform(const TimePoint &tp, Rotation &rotation)
从J2000转换为MOD的坐标旋转变换
定义 EarthFrame.cpp:181
void aCIRFToTIRF(const TimePoint &tp, const Vector3d &vecCIRF, Vector3d &vecTIRF)
从CIRF转换为TIRF的坐标转换
定义 EarthFrame.cpp:573
void aTIRFToECFMatrix(const TimePoint &tp, Matrix3d &matrix)
从TIRF转换为ECF的坐标转换矩阵
定义 EarthFrame.cpp:594
void aTODToGTOD(const TimePoint &tp, const Vector3d &vecTOD, Vector3d &vecGTOD)
从TOD转换为GTOD的坐标转换
定义 EarthFrame.cpp:262
void aJ2000ToECFMatrix(const TimePoint &tp, Matrix3d &matrix)
从J2000转换为ECF的坐标转换矩阵
定义 EarthFrame.cpp:119
void aICRFToECFTransform(const TimePoint &tp, Rotation &rotation)
从ICRF转换为ECF的坐标旋转变换
定义 EarthFrame.cpp:448
void aTODToTEMETransform(const TimePoint &tp, Rotation &rotation)
是否在TEME春分点计算中禁用IAU 1994 C7补正项
定义 EarthFrame.cpp:278
void aJ2000ToTEME(const TimePoint &tp, const Vector3d &vecJ2000, Vector3d &vecTEME)
从J2000转换为TEME的坐标转换
定义 EarthFrame.cpp:355
void aTEMEToJ2000Matrix(const TimePoint &tp, Matrix3d &matrix)
从TEME转换为J2000的坐标转换矩阵
定义 EarthFrame.cpp:372
void aECIToECF(const TimePoint &tp, const Vector3d &vecECI, Vector3d &vecECF)
从ECI转换为ECF的坐标转换
定义 EarthFrame.cpp:52
void aECFToJ2000Matrix(const TimePoint &tp, Matrix3d &matrix)
从ECF转换为J2000的坐标转换矩阵
定义 EarthFrame.cpp:159
void aTEMEToJ2000Transform(const TimePoint &tp, Rotation &rotation)
从TEME转换为J2000的坐标旋转变换
定义 EarthFrame.cpp:366
void aGTODToECFMatrix(const TimePoint &tp, Matrix3d &matrix)
从GTOD转换为ECF的坐标转换矩阵
定义 EarthFrame.cpp:428
void aICRFToCIRFMatrix(const TimePoint &tp, Matrix3d &matrix)
从ICRF转换为CIRF的坐标转换矩阵
定义 EarthFrame.cpp:536
void aJ2000ToECF(const TimePoint &tp, const Vector3d &vecJ2000, Vector3d &vecECF)
从J2000转换为ECF的坐标转换
定义 EarthFrame.cpp:133
void aJ2000ToTEMEMatrix(const TimePoint &tp, Matrix3d &matrix)
从J2000转换为TEME的坐标转换矩阵
定义 EarthFrame.cpp:343
void aECFToECIMatrix(const TimePoint &tp, Matrix3d &matrix)
从ECF转换为ECI的坐标转换矩阵
定义 EarthFrame.cpp:76
void aECIToECFMatrix(const TimePoint &tp, Matrix3d &matrix)
从ECI转换为ECF的坐标转换矩阵
定义 EarthFrame.cpp:47
void aECFToJ2000Transform(const TimePoint &tp, Rotation &rotation)
从ECF转换为J2000的坐标旋转变换
定义 EarthFrame.cpp:147
void aECFToECITransform(const TimePoint &tp, Rotation &rotation)
从ECF转换为ECI的坐标旋转变换
定义 EarthFrame.cpp:64
void aICRFToCIRF(const TimePoint &tp, const Vector3d &vecICRF, Vector3d &vecCIRF)
从ICRF转换为CIRF的坐标转换
定义 EarthFrame.cpp:543
void aTODToGTODTransform(const TimePoint &tp, Rotation &rotation)
从TOD转换为GTOD的坐标旋转变换
定义 EarthFrame.cpp:243
void aJ2000ToICRF(const TimePoint &tp, const Vector3d &vecJ2000, Vector3d &vecICRF)
从J2000转换为ICRF的坐标转换
定义 EarthFrame.cpp:669
void aTEMEToTOD(const TimePoint &tp, const Vector3d &vecTEME, Vector3d &vecTOD)
从TEME转换为TOD的坐标转换
定义 EarthFrame.cpp:328
void aTIRFToECFTransform(const TimePoint &tp, Rotation &rotation)
从TIRF转换为ECF的坐标旋转变换
定义 EarthFrame.cpp:589
void aJ2000ToTEMETransform(const TimePoint &tp, Rotation &rotation)
从J2000转换为TEME的坐标旋转变换
定义 EarthFrame.cpp:337
void aTEMEToTODTransform(const TimePoint &tp, Rotation &rotation)
从TEME转换为TOD的坐标旋转变换
定义 EarthFrame.cpp:316
void aTODToTEMEMatrix(const TimePoint &tp, Matrix3d &matrix)
从TOD转换为TEME的坐标转换矩阵
定义 EarthFrame.cpp:289
void aJ2000ToICRFMatrix(const TimePoint &tp, Matrix3d &matrix)
从J2000转换为ICRF的坐标转换矩阵
定义 EarthFrame.cpp:664
void aICRFToECF(const TimePoint &tp, const Vector3d &vecICRF, Vector3d &vecECF)
从ICRF转换为ECF的坐标转换
定义 EarthFrame.cpp:482
void aICRFToJ2000(const TimePoint &tp, const Vector3d &vecICRF, Vector3d &vecJ2000)
从ICRF转换为J2000的坐标转换
定义 EarthFrame.cpp:629
void aJ2000ToMOD(const TimePoint &tp, const Vector3d &vecJ2000, Vector3d &vecMOD)
从J2000转换为MOD的坐标转换
定义 EarthFrame.cpp:195
void aICRFToJ2000Matrix(const TimePoint &tp, Matrix3d &matrix)
从ICRF转换为J2000的坐标转换矩阵
定义 EarthFrame.cpp:624
void aJ2000ToECFTransform(const TimePoint &tp, Rotation &rotation)
从J2000转换为ECF的坐标旋转变换
定义 EarthFrame.cpp:94
void aGTODToECFTransform(const TimePoint &tp, Rotation &rotation)
从GTOD转换为ECF的坐标旋转变换
定义 EarthFrame.cpp:389
void aTEMEToJ2000(const TimePoint &tp, const Vector3d &vecTEME, Vector3d &vecJ2000)
从TEME转换为J2000的坐标转换
定义 EarthFrame.cpp:378
void aTODToTEME(const TimePoint &tp, const Vector3d &vecTOD, Vector3d &vecTEME)
从TOD转换为TEME的坐标转换
定义 EarthFrame.cpp:307
void aJ2000ToICRFTransform(const TimePoint &tp, Rotation &rotation)
从J2000转换为ICRF的坐标旋转变换
定义 EarthFrame.cpp:651
void aECFToICRF(const TimePoint &tp, const Vector3d &vecECF, Vector3d &vecICRF)
从ECF转换为ICRF的坐标转换
定义 EarthFrame.cpp:489
void aMODToTODMatrix(const TimePoint &tp, Matrix3d &matrix)
从MOD转换为TOD的坐标转换矩阵
定义 EarthFrame.cpp:210
void aTEMEToTODMatrix(const TimePoint &tp, Matrix3d &matrix)
从TEME转换为TOD的坐标转换矩阵
定义 EarthFrame.cpp:322
void aTIRFToECF(const TimePoint &tp, const Vector3d &vecTIRF, Vector3d &vecECF)
从TIRF转换为ECF的坐标转换
定义 EarthFrame.cpp:599
void aTODToGTODMatrix(const TimePoint &tp, Matrix3d &matrix)
从TOD转换为GTOD的坐标转换矩阵
定义 EarthFrame.cpp:256
void aICRFToECFMatrix(const TimePoint &tp, Matrix3d &matrix)
从ICRF转换为ECF的坐标转换矩阵
定义 EarthFrame.cpp:470
void aECFToJ2000(const TimePoint &tp, const Vector3d &vecECF, Vector3d &vecJ2000)
从ECF转换为J2000的坐标转换
定义 EarthFrame.cpp:165
void aCIRFToTIRFMatrix(const TimePoint &tp, Matrix3d &matrix)
从CIRF转换为TIRF的坐标转换矩阵
定义 EarthFrame.cpp:567
void aMODToTODTransform(const TimePoint &tp, Rotation &rotation)
从MOD转换为TOD的坐标旋转变换
定义 EarthFrame.cpp:204
void aICRFToCIRFTransform(const TimePoint &tp, Rotation &rotation)
从ICRF转换为CIRF的坐标旋转变换
定义 EarthFrame.cpp:505
void aGTODToECF(const TimePoint &tp, const Vector3d &vecGTOD, Vector3d &vecECF)
从GTOD转换为ECF的坐标转换
定义 EarthFrame.cpp:439
void aMODToTOD(const TimePoint &tp, const Vector3d &vecMOD, Vector3d &vecTOD)
从MOD转换为TOD的坐标转换
定义 EarthFrame.cpp:234
void aJ2000ToMODMatrix(const TimePoint &tp, Matrix3d &matrix)
从J2000转换为MOD的坐标转换矩阵
定义 EarthFrame.cpp:187
void aICRFToJ2000Transform(const TimePoint &tp, Rotation &rotation)
从ICRF转换为J2000的坐标旋转变换
定义 EarthFrame.cpp:608