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)
unsigned long long int uint64_t
SIMD_FORCE_INLINE const btScalar & z() const
Return the z value.
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
QuaternionBase< float > Quaternion
bool is_normalized(const DualQuaternionBase< T > &dq)
std::ostream & operator<<(std::ostream &stream, EulerOrder order)
DualQuaternionBase< float > DualQuaternion
friend DualQuaternionBase operator*(const DualQuaternionBase &a, const T &t)
DualQuaternionBase()=delete
QuaternionBase< float > trans
DualQuaternionBase & operator*=(const T &t) &
DualQuaternionBase & operator+=(const DualQuaternionBase &b) &
DualQuaternionBase(const QuaternionBase< T > &non_dual, const QuaternionBase< T > &dual)
friend DualQuaternionBase operator+(const DualQuaternionBase &a, const DualQuaternionBase &b)
static DualQuaternionBase identity()
DualQuaternionBase(const QuaternionBase< T > &non_dual, const QuaternionBase< T > &dual, const MatBase< T, 4, 4 > &scale_mat)
MatBase< float, 4, 4 > scale
friend DualQuaternionBase operator*(const T &t, const DualQuaternionBase &a)
QuaternionBase< float > quat
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)
static QuaternionBase expmap(const VecBase< T, 3 > &expmap)
VecBase< T, 3 > & imaginary_part()
friend QuaternionBase operator-(const QuaternionBase &a)