BIMHome v1.0.0
BIMHome接口文档说明
Placement.h
浏览该文件的文档.
1/************************************************************************
2* @file Placement.h
3*
4* @brief 位置姿态类
5*
6* @details 位置姿态类
7*
8* @author dixu
9*
10* @version 1.0
11*
12* @date 2014-9-11
13*
14* @license 北京华科软科技有限公司
15*
16*************************************************************************/
17
18#ifndef BIMHOMEBASE_PLACEMENT_H
19#define BIMHOMEBASE_PLACEMENT_H
20
21#include <Base/Rotation.h>
22#include <Base/Vector3D.h>
23
24namespace Base
25{
26
27 class DualQuat;
28 class Matrix4D;
33 class BaseExport Placement
34 {
35 public:
43
52 static Placement slerp(const Placement& p0, const Placement& p1, double t);
53
63 static Placement sclerp(const Placement& p0, const Placement& p1, double t, bool shorten = true);
64
65 public:
71
78
84 Placement(const Base::Matrix4D& matrix);
85
92 Placement(const Vector3d& Pos, const Rotation& Rot);
93
101 Placement(const Vector3d& Pos, const Rotation& Rot, const Vector3d& Cnt);
102
108
115
121 void fromMatrix(const Matrix4D& m);
122
129
135 const Vector3d& getPosition() const
136 {
137 return m_Pos;
138 }
139
145 const Rotation& getRotation() const
146 {
147 return m_Rot;
148 }
149
155 void setPosition(const Vector3d& Pos)
156 {
157 m_Pos = Pos;
158 }
159
165 void setRotation(const Rotation& Rot)
166 {
167 m_Rot = Rot;
168 }
169
175 bool isIdentity() const;
176
181 void invert();
182
189
195 void move(const Vector3d& MovVec);
196
204 Placement pow(double t, bool shorten = true) const;
205
212 void multVec(const Vector3d& src, Vector3d& dst) const;
213
220 Placement& operator *= (const Placement& p);
221
228 Placement operator * (const Placement& p) const;
229
236 bool operator == (const Placement& that) const;
237
244 bool operator != (const Placement& that) const;
245
252 Placement& operator = (const Placement&);
253
254 protected:
257 };
258} // namespace Base
259
260#endif // BIMHOMEBASE_PLACEMENT_H
261
262
DualQuat 类表示一个对偶四元数,即由对偶数分量组成的四元数。
Definition DualQuaternion.h:34
Matrix4D 类,表示一个 4x4 矩阵
Definition Matrix.h:53
Vector3< double > m_Pos
位置
Definition Placement.h:255
void fromMatrix(const Matrix4D &m)
从 4x4 变换矩阵提取位置和旋转
void setPosition(const Vector3d &Pos)
设置位置
Definition Placement.h:155
void move(const Vector3d &MovVec)
移动 Placement 对象
Matrix4D toMatrix() const
将 Placement 对象转换为 4x4 变换矩阵
void multVec(const Vector3d &src, Vector3d &dst) const
将 Placement 对象应用于向量
void setRotation(const Rotation &Rot)
设置旋转
Definition Placement.h:165
static Placement slerp(const Placement &p0, const Placement &p1, double t)
在两个 Placement 对象之间进行球面线性插值(SLERP)
Placement(const Placement &)
拷贝构造函数
Placement inverse() const
获取逆变换
void invert()
计算逆变换
DualQuat toDualQuaternion() const
将 Placement 对象转换为对偶四元数
static Placement sclerp(const Placement &p0, const Placement &p1, double t, bool shorten=true)
在两个 Placement 对象之间进行球面线性插值(SLERP),可选缩短路径
static Placement fromDualQuaternion(DualQuat qq)
从对偶四元数创建 Placement 对象
~Placement()
析构函数
Definition Placement.h:107
Placement(const Vector3d &Pos, const Rotation &Rot)
从位置和旋转创建 Placement 对象
const Rotation & getRotation() const
获取当前旋转
Definition Placement.h:145
const Vector3d & getPosition() const
获取当前位置
Definition Placement.h:135
Placement()
默认构造函数
bool isIdentity() const
检查是否为单位 Placement
Placement(const Vector3d &Pos, const Rotation &Rot, const Vector3d &Cnt)
从位置、旋转和参考点创建 Placement 对象
Base::Rotation m_Rot
旋转
Definition Placement.h:256
Placement(const Base::Matrix4D &matrix)
从 4x4 变换矩阵创建 Placement 对象
Placement pow(double t, bool shorten=true) const
计算 Placement 对象的幂
Placement 类,表示三维空间中的位置和旋转
Definition Placement.h:34
Definition Rotation.h:32
Definition BaseFigureFactory.h:24