42 QuaternionBase(
const T &new_w,
const T &new_x,
const T &new_y,
const T &new_z)
43 :
w(new_w),
x(new_x),
y(new_y),
z(new_z){};
80 return {this->
w, this->
x, this->
y, this->z};
137 return {a.
w *
b.w - a.
x *
b.x - a.
y *
b.y - a.
z *
b.z,
138 a.
w *
b.x + a.
x *
b.w + a.
y *
b.z - a.
z *
b.y,
139 a.
w *
b.y + a.
y *
b.w + a.
z *
b.x - a.
x *
b.z,
140 a.
w *
b.z + a.
z *
b.w + a.
x *
b.y - a.
y *
b.x};
152 return {a.
w *
b, a.
x *
b, a.
y *
b, a.
z *
b};
158 return {-a.
w, -a.
x, -a.
y, -a.
z};
270 stream <<
"DualQuaternion(\n";
271 stream <<
" .quat = " <<
rot.quat <<
"\n";
272 stream <<
" .trans = " <<
rot.trans <<
"\n";
273 if (
rot.scale_weight != T(0)) {
274 stream <<
" .scale = " <<
rot.scale;
275 stream <<
" .scale_weight = " <<
rot.scale_weight <<
"\n";
277 stream <<
" .quat_weight = " <<
rot.quat_weight <<
"\n)\n";
#define BLI_STRUCT_EQUALITY_OPERATORS_4(Type, m1, m2, m3, m4)
bool is_normalized(const DualQuaternionBase< T > &dq)
std::ostream & operator<<(std::ostream &stream, EulerOrder order)
unsigned __int64 uint64_t
friend DualQuaternionBase operator*(const DualQuaternionBase &a, const T &t)
DualQuaternionBase()=delete
QuaternionBase< T > trans
DualQuaternionBase & operator*=(const T &t) &
DualQuaternionBase & operator+=(const DualQuaternionBase &b) &
friend DualQuaternionBase operator+(const DualQuaternionBase &a, const DualQuaternionBase &b)
static DualQuaternionBase identity()
friend DualQuaternionBase operator*(const T &t, const DualQuaternionBase &a)
BLI_STRUCT_EQUALITY_OPERATORS_5(DualQuaternionBase, quat, trans, quat_weight, scale_weight, scale) friend std
friend QuaternionBase operator*(const QuaternionBase &a, const T &b)
const VecBase< T, 3 > & imaginary_part() const
QuaternionBase swing(const Axis axis) const
AngleRadianBase< T > twist_angle(const Axis axis) const
friend std::ostream & operator<<(std::ostream &stream, const QuaternionBase &rot)
QuaternionBase & operator*=(const QuaternionBase &b) &
QuaternionBase(const T &real, const VecBase< T, 3 > &imaginary)
QuaternionBase(const T &new_w, const T &new_x, const T &new_y, const T &new_z)
static QuaternionBase identity()
friend QuaternionBase operator*(const QuaternionBase &a, const QuaternionBase &b)
QuaternionBase twist(const Axis axis) const
static QuaternionBase zero()
VecBase< T, 3 > expmap() const
QuaternionBase wrapped_around(const QuaternionBase &reference) const
QuaternionBase(const VecBase< T, 4 > &vec)
VecBase< T, 3 > & imaginary_part()
friend QuaternionBase operator-(const QuaternionBase &a)