🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
Frame.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "AstUtil/Object.hpp"
25#include "AstUtil/ObjectNamed.hpp"
26
27AST_NAMESPACE_BEGIN
28
34class Transform;
35class KinematicTransform;
36class Frame;
37class Axes;
38class Point;
39
46AST_CORE_API errc_t aFrameTransform(Frame* source, Frame* target, const TimePoint& tp, Transform& transform);
47
54AST_CORE_API errc_t aFrameTransform(Frame* source, Frame* target, const TimePoint& tp, KinematicTransform& transform);
55
56
61class AST_CORE_API Frame: public ObjectNamed
62{
63public:
64 AST_OBJECT(Frame)
65
66
70 static Frame* Resolve(StringView value);
71
72 Frame() = default;
73 ~Frame() override= default;
74
78 std::string getRepresentation() const override;
79
83 CelestialBody* getBody();
84
88 double getGM();
89
92 virtual Frame* getParent() const;
93
98 virtual errc_t getTransform(const TimePoint& tp, Transform& transform) const;
99
104 virtual errc_t getTransform(const TimePoint& tp, KinematicTransform& transform) const;
105
109 virtual Axes* getAxes() const = 0;
110
114 virtual Point* getOrigin() const = 0;
115public:
121 errc_t getTransformTo(Frame* target, const TimePoint& tp, Transform& transform) const
122 {
123 return aFrameTransform(const_cast<Frame*>(this), target, tp, transform);
124 }
125
131 errc_t getTransformTo(Frame* target, const TimePoint& tp, KinematicTransform& transform) const
132 {
133 return aFrameTransform(const_cast<Frame*>(this), target, tp, transform);
134 }
135
141 errc_t getTransformFrom(Frame* source, const TimePoint& tp, Transform& transform) const
142 {
143 return aFrameTransform(source, const_cast<Frame*>(this), tp, transform);
144 }
145
151 errc_t getTransformFrom(Frame* source, const TimePoint& tp, KinematicTransform& transform) const
152 {
153 return aFrameTransform(source, const_cast<Frame*>(this), tp, transform);
154 }
155};
156
157using PFrame = Frame*;
159
162AST_NAMESPACE_END
轴系抽象基类
定义 Axes.hpp:72
天体
定义 CelestialBody.hpp:72
坐标系抽象基类
定义 Frame.hpp:62
errc_t getTransformTo(Frame *target, const TimePoint &tp, KinematicTransform &transform) const
获取当前坐标系到目标坐标系的运动学变换。
定义 Frame.hpp:131
errc_t getTransformFrom(Frame *source, const TimePoint &tp, KinematicTransform &transform) const
获取源坐标系到当前坐标系的运动学变换。
定义 Frame.hpp:151
errc_t getTransformTo(Frame *target, const TimePoint &tp, Transform &transform) const
获取当前坐标系到目标坐标系的变换。
定义 Frame.hpp:121
virtual Point * getOrigin() const =0
获取当前坐标系的原点
errc_t getTransformFrom(Frame *source, const TimePoint &tp, Transform &transform) const
获取源坐标系到当前坐标系的变换。
定义 Frame.hpp:141
virtual Axes * getAxes() const =0
获取当前坐标系的轴系
运动学变换
定义 KinematicTransform.hpp:33
命名对象
定义 ObjectNamed.hpp:36
static Object * Resolve(StringView value)
解析字符串
定义 Object.cpp:39
virtual std::string getRepresentation() const
获取对象的表示
定义 Object.cpp:62
点抽象基类
定义 Point.hpp:41
绝对时间点
定义 TimePoint.hpp:108
坐标系转换类
定义 Transform.hpp:33
errc_t aFrameTransform(Frame *source, Frame *target, const TimePoint &tp, Transform &transform)
计算源坐标系到目标坐标系的变换,不考虑速度项
定义 Axes.cpp:157