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)
typedef double(DMatrix)[4][4]
local_group_size(16, 16) .push_constant(Type b
draw_view in_light_buf[] float
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 & operator*=(const T &t)
DualQuaternionBase()=delete
QuaternionBase< T > trans
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(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)
QuaternionBase & operator*=(const QuaternionBase &b)
VecBase< T, 3 > & imaginary_part()
friend QuaternionBase operator-(const QuaternionBase &a)