24#include "AstCore/Object.hpp"
25#include "AstCore/GravityField.hpp"
26#include "AstCore/JplDe.hpp"
27#include "AstCore/BodyEphemeris.hpp"
28#include "AstCore/BodyOrientation.hpp"
29#include "AstCore/AxesBodyInertial.hpp"
30#include "AstCore/AxesBodyFixed.hpp"
31#include "AstCore/AxesBodyMOD.hpp"
32#include "AstCore/AxesBodyTOD.hpp"
33#include "AstCore/Point.hpp"
34#include "AstCore/Frame.hpp"
35#include "AstCore/AxesAPI.hpp"
36#include "AstCore/BodyShape.hpp"
37#include "AstUtil/SharedPtr.hpp"
38#include "AstUtil/ScopedPtr.hpp"
48using Body = CelestialBody;
63 const std::string&
getName()
const override {
return name_; }
64 const std::string&
name()
const {
return name_; }
69 void setJplSpiceId(
int id) { jplSpiceId_ = id; }
73 void setJplIndex(
int index);
76 std::string getDirpath()
const;
86 const std::string&
getGravityModel()
const{
return gravityField_.getModelName(); }
97 double getGM()
const {
return gm_; }
106 double getJ2()
const {
return getJn(2); }
109 double getJ3()
const {
return getJn(3); }
112 double getJ4()
const {
return getJn(4); }
115 double getJ5()
const {
return getJn(5); }
118 double getJ6()
const {
return getJn(6); }
127 errc_t getPosICRF(
const TimePoint& tp, Vector3d& pos)
const;
135 errc_t getPosVelICRF(
const TimePoint& tp, Vector3d& pos, Vector3d& vel)
const;
140 errc_t getPos(const
TimePoint& tp, Vector3d& pos) const final;
141 errc_t getPosVel(const
TimePoint& tp, Vector3d& pos, Vector3d& vel) const final;
241 HFrame makeFrameInertial()
const;
244 HFrame makeFrameFixed()
const;
247 HFrame makeFrameMOD()
const;
250 HFrame makeFrameTOD()
const;
253 HFrame makeFrameJ2000()
const;
256 HFrame makeFrameICRF()
const;
260 Axes* getEpochAxesReference()
const;
263 double getJn(
int n)
const {
return gravityField_.getJn(n); }
271 errc_t loadAstroDefinition(
BKVParser& parser);
277 errc_t loadEphemerisData(
BKVParser& parser);
286 errc_t loadMeanEarthDefinition(
BKVParser& parser);
294 double systemGM_{0.0};
320 eSolarSystemBarycenter = 0,
321 eMercuryBarycenter = 1,
322 eVenusBarycenter = 2,
323 eEarthBarycenter = 3,
325 eJupiterBarycenter = 5,
326 eSaturnBarycenter = 6,
327 eUranusBarycenter = 7,
328 eNeptuneBarycenter = 8,
329 ePlutoBarycenter = 9,
键值对解析器(BlockKeyValueParser)
定义 BKVParser.hpp:45
天体星历接口
定义 BodyEphemeris.hpp:38
天体姿态/指向
定义 BodyOrientation.hpp:39
天体形状基类
定义 BodyShape.hpp:30
天体
定义 CelestialBody.hpp:52
SharedPtr< BodyEphemeris > ephemeris_
天体星历
定义 CelestialBody.hpp:301
GravityField gravityField_
重力场
定义 CelestialBody.hpp:298
int getJplIndex() const
获取JPL索引
定义 CelestialBody.hpp:72
double getJ3() const
获取J3项
定义 CelestialBody.hpp:109
SharedPtr< BodyShape > shape_
天体形状
定义 CelestialBody.hpp:299
SharedPtr< AxesBodyMOD > axesMOD_
天体MOD轴
定义 CelestialBody.hpp:305
HAxes makeEpochAxes(Axes *sourceAxes, const TimePoint &tp, Axes *reference) const
创建新的历元轴系
定义 CelestialBody.hpp:187
double getJn(int n) const
获取Jn项
定义 CelestialBody.hpp:263
const std::string & getGravityModel() const
获取重力模型名称
定义 CelestialBody.hpp:86
SharedPtr< AxesBodyTOD > axesTOD_
天体TOD轴
定义 CelestialBody.hpp:306
SharedPtr< AxesBodyFixed > axesFixed_
天体固定轴
定义 CelestialBody.hpp:304
double getJ4() const
获取J4项
定义 CelestialBody.hpp:112
BodyEphemeris * getEphemeris() const
获取天体星历
定义 CelestialBody.hpp:152
CelestialBody * getParent() const
获取父天体
定义 CelestialBody.hpp:82
double getJ2() const
获取J2项
定义 CelestialBody.hpp:106
Axes * getAxesTOD() const
获取天体TOD轴系
定义 CelestialBody.hpp:172
double getGM() const
获取引力常数
定义 CelestialBody.hpp:97
HAxes makeEpochAxes(Axes *sourceAxes, EventTime *time, Axes *reference) const
创建新的历元轴系
定义 CelestialBody.hpp:194
Axes * getAxesMOD() const
获取天体MOD轴系
定义 CelestialBody.hpp:169
Point * getPointCenter() const
获取天体中心
定义 CelestialBody.hpp:160
Axes * getAxesFixed() const
获取天体固定轴系
定义 CelestialBody.hpp:166
void setName(StringView name) override
设置对象的名称
定义 CelestialBody.hpp:65
double getSystemGM() const
获取系统引力常数
定义 CelestialBody.hpp:100
double getRadius() const
获取天体半径
定义 CelestialBody.hpp:94
WeakPtr< SolarSystem > solarSystem_
太阳系指针
定义 CelestialBody.hpp:290
std::string name_
天体名称
定义 CelestialBody.hpp:292
SharedPtr< AxesBodyInertial > axesInertial_
天体惯性轴
定义 CelestialBody.hpp:303
bool isEarth() const
是否为地球
定义 CelestialBody.hpp:121
BodyOrientation * getOrientation() const
获取天体姿态
定义 CelestialBody.hpp:155
const std::string & getName() const override
获取天体名称
定义 CelestialBody.hpp:63
const GravityField & getGravityField() const
获取天体重力场
定义 CelestialBody.hpp:149
double getJ6() const
获取J6项
定义 CelestialBody.hpp:118
Axes * getAxesInertial() const
获取天体惯性轴系
定义 CelestialBody.hpp:163
SharedPtr< CelestialBody > parent_
父天体
定义 CelestialBody.hpp:291
int getJplSpiceId() const
获取JPL SPICE ID
定义 CelestialBody.hpp:68
double getJ5() const
获取J5项
定义 CelestialBody.hpp:115
SharedPtr< BodyOrientation > orientation_
天体姿态
定义 CelestialBody.hpp:300
重力场系数
定义 GravityField.hpp:63
@ eEarth
地球
定义 JplDe.hpp:48
const std::string & name() const
获取对象的名称
定义 Object.hpp:133
static Object * Resolve(StringView value)
解析字符串
定义 Object.cpp:38
virtual Frame * getFrame() const =0
获取点所在的参考坐标系
绝对时间点
定义 TimePoint.hpp:106
ESpiceId
SPICE 天体ID
定义 CelestialBody.hpp:319
HAxes aMakeEpochAxes(Axes *sourceAxes, const TimePoint &tp, Axes *referenceAxes)
创建一个历元轴系
定义 AxesAPI.cpp:27