BIMHome v1.0.0
BIMHome接口文档说明
DualQuaternion.h
浏览该文件的文档.
1/************************************************************************
2* @file DualQuater.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_DUALQUATERNION_H
19#define BIMHOMEBASE_DUALQUATERNION_H
20
21#include "DualNumber.h"
22#include <BHGlobal.h>
23
24namespace Base
25{
33 class BaseExport DualQuat
34 {
35 public:
41 {
42 }
43
53 : x(x), y(y), z(z), w(w)
54 {
55 }
56
63 DualQuat(double x, double y, double z, double w, double dx, double dy, double dz, double dw)
64 : x(x, dx), y(y, dy), z(z, dz), w(w, dw)
65 {
66 }
67
73 DualQuat(double x, double y, double z, double w)
74 : x(x), y(y), z(z), w(w)
75 {
76 }
77
85
92 {
93 return DualQuat(0.0, 0.0, 0.0, 1.0);
94 }
95
102 {
103 return DualQuat(x.getRE(), y.getRE(), z.getRE(), w.getRE());
104 }
105
112 {
113 return DualQuat(x.getDU(), y.getDU(), z.getDU(), w.getDU());
114 }
115
122 {
123 return DualQuat(-x, -y, -z, w);
124 }
125
131 DualQuat vec() const
132 {
133 return DualQuat(x, y, z, 0.0);
134 }
135
141 double length() const
142 {
143 return sqrt(x.getRE() * x.getRE() + y.getRE() * y.getRE() + z.getRE() * z.getRE() + w.getRE() * w.getRE());
144 }
145
151 double theta() const
152 {
153 return 2.0 * atan2(vec().length(), w.getRE());
154 }
155
163 static double dot(DualQuat a, DualQuat b);
164
172 DualQuat pow(double t, bool shorten = true) const;
173
179 DualQuat operator -() const
180 {
181 return DualQuat(-x, -y, -z, -w);
182 }
183
190 {
191 return x;
192 }
193
200 {
201 return y;
202 }
203
210 {
211 return z;
212 }
213
220 {
221 return w;
222 }
223
229 void setX(const DualNumber& number)
230 {
231 x = number;
232 }
233
239 void setY(const DualNumber& number)
240 {
241 y = number;
242 }
243
249 void setZ(const DualNumber& number)
250 {
251 z = number;
252 }
253
259 void setW(const DualNumber& number)
260 {
261 w = number;
262 }
263
264 public:
269 };
270
279
288
297
306
315
324
333
334} //namespace
335
336#endif
对偶数(Dual Numbers)类
Definition DualNumber.h:33
DualNumber x
x 分量
Definition DualQuaternion.h:265
DualQuat vec() const
提取向量部分(x, y, z),并将标量部分(w)置为0.0
Definition DualQuaternion.h:131
DualQuat(double x, double y, double z, double w, double dx, double dy, double dz, double dw)
构造函数,初始化对偶四元数
Definition DualQuaternion.h:63
DualNumber z
z 分量
Definition DualQuaternion.h:267
DualQuat dual() const
返回一个对偶四元数,只包含对偶部分
Definition DualQuaternion.h:111
DualNumber y
y 分量
Definition DualQuaternion.h:266
DualQuat conj() const
返回当前对偶四元数的共轭
Definition DualQuaternion.h:121
static double dot(DualQuat a, DualQuat b)
计算两个对偶四元数的点积
DualNumber getZ() const
获取对偶四元数的 z 分量
Definition DualQuaternion.h:209
DualQuat real() const
返回一个新的对偶四元数,其对偶部分被置零
Definition DualQuaternion.h:101
DualNumber getY() const
获取对偶四元数的 y 分量
Definition DualQuaternion.h:199
void setX(const DualNumber &number)
设置对偶四元数的 x 分量
Definition DualQuaternion.h:229
void setW(const DualNumber &number)
设置对偶四元数的 w 分量
Definition DualQuaternion.h:259
void setY(const DualNumber &number)
设置对偶四元数的 y 分量
Definition DualQuaternion.h:239
DualQuat(DualQuat re, DualQuat du)
构造函数,从实部和对偶部分构建对偶四元数
double length() const
计算当前四元数的模
Definition DualQuaternion.h:141
DualQuat()
默认构造函数
Definition DualQuaternion.h:40
DualNumber getW() const
获取对偶四元数的 w 分量
Definition DualQuaternion.h:219
DualQuat pow(double t, bool shorten=true) const
计算对偶四元数的指数运算
DualNumber w
w 分量
Definition DualQuaternion.h:268
DualQuat(double x, double y, double z, double w)
构造函数,初始化对偶四元数
Definition DualQuaternion.h:73
void setZ(const DualNumber &number)
设置对偶四元数的 z 分量
Definition DualQuaternion.h:249
static DualQuat identity()
返回单位(或恒等)对偶四元数
Definition DualQuaternion.h:91
DualQuat(DualNumber x, DualNumber y, DualNumber z, DualNumber w)
构造函数,初始化对偶四元数
Definition DualQuaternion.h:52
DualNumber getX() const
获取对偶四元数的 x 分量
Definition DualQuaternion.h:189
double theta() const
计算四元数表示的旋转角
Definition DualQuaternion.h:151
DualQuat 类表示一个对偶四元数,即由对偶数分量组成的四元数。
Definition DualQuaternion.h:34
DualNumber operator+(DualNumber a, DualNumber b)
将两个对偶数相加
Definition DualNumber.h:116
DualNumber operator-(DualNumber a, DualNumber b)
将两个对偶数相减
Definition DualNumber.h:152
DualNumber operator*(DualNumber a, DualNumber b)
将两个对偶数相乘
Definition DualNumber.h:188
Definition BaseFigureFactory.h:24