浏览该文件的文档.
24#include "AstUtil/TypeTraits.hpp"
25#include "AstMath/KinematicRotation.hpp"
34class KinematicRotation;
40#define _AST_DECL_AXES(NAME) \
41 class AST_CORE_API Axes##NAME : public Axes \
44 Axes##NAME() = default; \
45 ~Axes##NAME() override = default; \
46 static Axes##NAME* Instance(); \
47 Axes* getParent() const override; \
48 errc_t getTransform(const TimePoint& tp, Rotation& rotation) const override; \
49 errc_t getTransform(const TimePoint& tp, KinematicRotation& rotation) const override; \
51 A_ALWAYS_INLINE Axes* aAxes##NAME()\
53 return Axes##NAME::Instance();\
59#define _AST_IMPL_AXES_BASE(NAME, PARENT)\
60 Axes##NAME* Axes##NAME::Instance() \
62 static SharedPtr<Axes##NAME> instance(new Axes##NAME()); \
63 return instance.get(); \
65 Axes *Axes##NAME::getParent() const\
67 return Axes##PARENT::Instance();\
74#define _AST_IMPL_AXES_DYNAMIC(NAME, PARENT) \
75 _AST_IMPL_AXES_BASE(NAME, PARENT)\
76 errc_t Axes##NAME::getTransform(const TimePoint &tp, Rotation &rotation) const\
78 a##PARENT##To##NAME##Transform(tp, rotation);\
81 errc_t Axes##NAME::getTransform(const TimePoint &tp, KinematicRotation &rotation) const\
83 a##PARENT##To##NAME##Transform(tp, rotation);\
91#define _AST_IMPL_AXES_STATIC(NAME, PARENT) \
92 _AST_IMPL_AXES_BASE(NAME, PARENT)\
93 errc_t Axes##NAME::getTransform(const TimePoint &tp, Rotation &rotation) const\
95 a##PARENT##To##NAME##Transform(rotation);\
98 errc_t Axes##NAME::getTransform(const TimePoint &tp, KinematicRotation &rotation) const\
100 a##PARENT##To##NAME##Transform(rotation.getRotation());\
101 rotation.setRotationRate(Vector3d::Zero());\
109#define _AST_IMPL_AXES_PSEUDO_STATIC(NAME, PARENT) \
110 _AST_IMPL_AXES_BASE(NAME, PARENT)\
111 errc_t Axes##NAME::getTransform(const TimePoint &tp, Rotation &rotation) const\
113 a##PARENT##To##NAME##Transform(tp, rotation);\
116 errc_t Axes##NAME::getTransform(const TimePoint &tp, KinematicRotation &rotation) const\
118 a##PARENT##To##NAME##Transform(tp, rotation.getRotation());\
119 rotation.setRotationRate(Vector3d::Zero());\