🛰️航天仿真算法库 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
59class AST_CORE_API Frame: public ObjectNamed
60{
61public:
62 AST_OBJECT(Frame)
63
64
67 static Frame* Resolve(StringView value);
68
69 Frame() = default;
70 ~Frame() override= default;
71
73 std::string getRepresentation() const override;
74
77 CelestialBody* getBody();
78
81 double getGM();
82
85 virtual Frame* getParent() const;
86
91 virtual errc_t getTransform(const TimePoint& tp, Transform& transform) const;
92
97 virtual errc_t getTransform(const TimePoint& tp, KinematicTransform& transform) const;
98
101 virtual Axes* getAxes() const = 0;
102
105 virtual Point* getOrigin() const = 0;
106public:
112 errc_t getTransformTo(Frame* target, const TimePoint& tp, Transform& transform) const
113 {
114 return aFrameTransform(const_cast<Frame*>(this), target, tp, transform);
115 }
116
122 errc_t getTransformTo(Frame* target, const TimePoint& tp, KinematicTransform& transform) const
123 {
124 return aFrameTransform(const_cast<Frame*>(this), target, tp, transform);
125 }
126
132 errc_t getTransformFrom(Frame* source, const TimePoint& tp, Transform& transform) const
133 {
134 return aFrameTransform(source, const_cast<Frame*>(this), tp, transform);
135 }
136
142 errc_t getTransformFrom(Frame* source, const TimePoint& tp, KinematicTransform& transform) const
143 {
144 return aFrameTransform(source, const_cast<Frame*>(this), tp, transform);
145 }
146};
147
148using HFrame = SharedPtr<Frame>;
149using PFrame = Frame*;
150
153AST_NAMESPACE_END
轴系类
定义 Axes.hpp:70
天体
定义 CelestialBody.hpp:52
坐标系类
定义 Frame.hpp:60
errc_t getTransformTo(Frame *target, const TimePoint &tp, KinematicTransform &transform) const
获取当前坐标系到目标坐标系的运动学变换。
定义 Frame.hpp:122
errc_t getTransformFrom(Frame *source, const TimePoint &tp, KinematicTransform &transform) const
获取源坐标系到当前坐标系的运动学变换。
定义 Frame.hpp:142
errc_t getTransformTo(Frame *target, const TimePoint &tp, Transform &transform) const
获取当前坐标系到目标坐标系的变换。
定义 Frame.hpp:112
virtual Point * getOrigin() const =0
获取当前坐标系的原点。
errc_t getTransformFrom(Frame *source, const TimePoint &tp, Transform &transform) const
获取源坐标系到当前坐标系的变换。
定义 Frame.hpp:132
virtual Axes * getAxes() const =0
获取当前坐标系的轴系。
运动学变换
定义 KinematicTransform.hpp:33
命名对象
定义 ObjectNamed.hpp:36
static Object * Resolve(StringView value)
解析字符串
定义 Object.cpp:38
virtual std::string getRepresentation() const
获取对象的表示
定义 Object.cpp:61
定义 Point.hpp:38
绝对时间点
定义 TimePoint.hpp:106
坐标系转换类
定义 Transform.hpp:33
errc_t aFrameTransform(Frame *source, Frame *target, const TimePoint &tp, Transform &transform)
计算坐标系之间的变换。
定义 Axes.cpp:157