🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
BodyPosition.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24
25AST_NAMESPACE_BEGIN
26
37AST_CORE_CAPI errc_t aBodyInBodyInertial(const TimePoint& time, Body* body, Body* referenceBody, Vector3d& posInReferenceBodyInertial);
38
39
45AST_CORE_CAPI errc_t aBodyInBodyFixed(const TimePoint& time, Body* body, Body* referenceBody, Vector3d& posInReferenceBodyFixed);
46
47
54AST_CORE_CAPI errc_t aBodyAERInTopocentric(const TimePoint& time, Body* body, Body* referenceBody, const GeodeticPoint& observerPosition, AER& aer);
55
56
62AST_CORE_CAPI errc_t aSunAERInTopocentric(const TimePoint& time, Body* referenceBody, const GeodeticPoint& observerPosition, AER& aer);
63
64
67{
68 eReception = 1, // 接收模式(观察者接收数据)
69 eTransmission = 1<<1, // 传输模式(观察者发送数据)
70 eStellarAberration = 1<<2, // 考虑像差
71 eNoStellarAberration = 1<<3, // 不考虑像差
72
73 // 下面是与SPICE库兼容的标志
74 eNone = 0, // 不考虑光行差和像差
75 eCN = eReception | eNoStellarAberration, // 接收模式,且不考虑像差
76 eCN_S = eReception | eStellarAberration, // 接收模式,且考虑像差
77 eXCN = eTransmission | eNoStellarAberration, // 传输模式,且不考虑像差
78 eXCN_S = eTransmission | eStellarAberration, // 传输模式,且考虑像差
79};
80
81A_ENUM_CLASS_FLAGS(EAberrationFlags)
82
83
84
85enum class EClockHost
86{
89};
90
92enum class ETimeSense
93{
94 eTransmit,
96};
97
100{
101 eNone,
102 eAnnual,
103 eDiurnal,
104 eTotal
105};
106
107
113AST_CORE_CAPI errc_t aStellarAberration(const Vector3d& relPosition, const Vector3d& velObserver, EAberrationFlags aberrationFlags, Vector3d& relPositionCorrected);
114
115
125AST_CORE_CAPI errc_t aApparentPositionICRF(
126 Point* point, const TimePoint& time, const Vector3d& observerPosInSSBICRF, const Vector3d& observerVelInSSBICRF, EAberrationFlags aberrationFlags,
127 Vector3d& apparentRelPosition, double* lightTime
128);
129
130
142AST_CORE_CAPI errc_t aApparentPositionInFrame(
143 Point* point, const TimePoint& time, Frame* frame, const Vector3d& observerPos, const Vector3d& observerVel, EAberrationFlags aberrationFlags,
144 Vector3d& apparentRelPosition, double* lightTime
145);
146
147
154AST_CORE_CAPI void aVectorRotation(const Vector3d& v, const Vector3d& axis, double theta, Vector3d& r);
155
156
159AST_NAMESPACE_END
errc_t aBodyInBodyFixed(const TimePoint &time, Body *body, Body *referenceBody, Vector3d &posInReferenceBodyFixed)
计算天体在参考天体的固连系中的位置,不考虑光行差和像差
定义 BodyPosition.cpp:39
ETimeSense
时间方向(用于光时计算中定义传输/接收方向)
定义 BodyPosition.hpp:93
@ eTransmit
发射方向
@ eReceive
接收方向
EClockHost
时钟主机(用于光时计算中选择时间参考对象)
定义 BodyPosition.hpp:86
@ eSecondObject
以第二个对象为时钟参考
@ eFirstObject
以第一个对象为时钟参考
errc_t aSunAERInTopocentric(const TimePoint &time, Body *observerBody, const GeodeticPoint &observerPosition, AER &aer)
计算太阳在站心坐标系下的方位角、仰角和距离
定义 BodyPosition.cpp:64
errc_t aBodyInBodyInertial(const TimePoint &time, Body *body, Body *referenceBody, Vector3d &posInReferenceBodyInertial)
计算天体在参考天体的惯性坐标系中的位置,不考虑光行差和像差
定义 BodyPosition.cpp:32
errc_t aBodyAERInTopocentric(const TimePoint &time, Body *body, Body *referenceBody, const GeodeticPoint &observerPosition, AER &aer)
计算天体在站心坐标系下的方位角、仰角和距离
定义 BodyPosition.cpp:47
EAberrationType
光行差类型
定义 BodyPosition.hpp:100
@ eAnnual
周年光行差
@ eDiurnal
周日光行差
@ eTotal
整个分析区间累积
EAberrationFlags
光行差和像差标志位
定义 BodyPosition.hpp:67