19#ifndef REFERENCEFRAME_H
20#define REFERENCEFRAME_H
30#define RZ_REF_FRAME_WORLD_ID 0x0
31#define RZ_REF_FRAME_ROTATION_ID 0x1000
32#define RZ_REF_FRAME_TRANSLATION_ID 0x1001
33#define RZ_REF_FRAME_TRIPOD_ID 0x1002
63 bool m_calculated =
false;
65 int m_parentIndex = -1;
67 std::vector<NamedVector> m_axes;
68 std::vector<NamedVector> m_points;
70 std::map<std::string, int> m_nameToAxis;
71 std::map<std::string, int> m_nameToPoint;
74 std::map<std::string, Vec3 *> m_nameToAxisCache;
75 std::map<std::string, Vec3 *> m_nameToPointCache;
77 std::vector<ReferenceFrame *> m_children;
79 void recalculateVectors();
82 uint32_t m_typeId = 0;
90 virtual void recalculateFrame() = 0;
92 void setCenter(
Vec3 const &);
93 void setOrientation(
Matrix3 const &);
126 return m_orientation.t().rows[0];
132 return m_orientation.t().rows[1];
138 return m_orientation.t().rows[2];
151 case RZ_REF_FRAME_WORLD_ID:
153 case RZ_REF_FRAME_ROTATION_ID:
155 case RZ_REF_FRAME_TRANSLATION_ID:
156 return "Translation";
157 case RZ_REF_FRAME_TRIPOD_ID:
165 toRelative(
Vec3 const &absv)
const
167 return m_orientation.t() * (absv - getCenter());
171 fromRelative(
Vec3 const &relv)
const
173 return m_orientation * relv + getCenter();
177 toRelativeVec(
Vec3 const &absv)
const
179 return m_orientation.t() * absv;
183 fromRelativeVec(
Vec3 const &relv)
const
185 return m_orientation * relv;
188 int replaceAxis(std::string
const &,
Vec3 const &);
189 int replacePoint(std::string
const &,
Point3 const &);
191 int addAxis(std::string
const &,
Vec3 const &);
192 int addPoint(std::string
const &,
Point3 const &);
195 void recalculateChildren();
196 const Matrix3 &getOrientation()
const;
197 const Point3 &getCenter()
const;
199 int getAxisIndex(std::string
const &)
const;
200 int getPointIndex(std::string
const &)
const;
202 const Vec3 *getAxis(std::string
const &);
203 const Point3 *getPoint(std::string
const &);
205 const Vec3 *getAxis(std::string
const &)
const;
206 const Point3 *getPoint(std::string
const &)
const;
208 const Vec3 *getAxis(
int)
const;
209 const Point3 *getPoint(
int)
const;
Definition: ReferenceFrame.h:59
Definition: WorldFrame.h:25
Definition: ReferenceFrame.h:36