|
Blender V4.3
|
#include <BLI_math_quaternion_types.hh>
Public Member Functions | |
| DualQuaternionBase ()=delete | |
| BLI_STRUCT_EQUALITY_OPERATORS_5 (DualQuaternionBase, quat, trans, quat_weight, scale_weight, scale) friend std | |
Dual-Quaternion | |
| DualQuaternionBase (const QuaternionBase< T > &non_dual, const QuaternionBase< T > &dual) | |
| DualQuaternionBase (const QuaternionBase< T > &non_dual, const QuaternionBase< T > &dual, const MatBase< T, 4, 4 > &scale_mat) | |
| DualQuaternionBase & | operator*= (const T &t) |
| DualQuaternionBase & | operator+= (const DualQuaternionBase &b) |
Static Public Member Functions | |
| static DualQuaternionBase | identity () |
Public Attributes | |
| QuaternionBase< T > | quat |
| QuaternionBase< T > | trans |
| MatBase< T, 4, 4 > | scale |
| T | scale_weight |
| T | quat_weight |
Friends | |
| DualQuaternionBase | operator* (const DualQuaternionBase &a, const T &t) |
| DualQuaternionBase | operator* (const T &t, const DualQuaternionBase &a) |
| DualQuaternionBase | operator+ (const DualQuaternionBase &a, const DualQuaternionBase &b) |
A blender::math::DualQuaternionBase<T> implements dual-quaternion skinning with scale aware transformation. It allows volume preserving deformation for skinning.
The type is implemented so that multiple weighted blender::math::DualQuaternionBase<T> can be aggregated into a final rotation. Calling normalize(dual_quat) is mandatory before trying to transform points with it.
Definition at line 188 of file BLI_math_quaternion_types.hh.
|
delete |
Referenced by blender::math::DualQuaternionBase< T >::identity().
| blender::math::DualQuaternionBase< T >::DualQuaternionBase | ( | const QuaternionBase< T > & | non_dual, |
| const QuaternionBase< T > & | dual ) |
Dual quaternion without scaling.
Definition at line 346 of file BLI_math_quaternion.hh.
References BLI_assert, and blender::math::is_unit_scale().
| blender::math::DualQuaternionBase< T >::DualQuaternionBase | ( | const QuaternionBase< T > & | non_dual, |
| const QuaternionBase< T > & | dual, | ||
| const MatBase< T, 4, 4 > & | scale_mat ) |
Dual quaternion with scaling.
Definition at line 354 of file BLI_math_quaternion.hh.
References BLI_assert, and blender::math::is_unit_scale().
|
inline |
Definition at line 265 of file BLI_math_quaternion_types.hh.
References rot.
|
inlinestatic |
Static functions.
Definition at line 226 of file BLI_math_quaternion_types.hh.
References blender::math::DualQuaternionBase< T >::DualQuaternionBase().
Referenced by blender::math::normalize().
| DualQuaternionBase< T > & blender::math::DualQuaternionBase< T >::operator*= | ( | const T & | t | ) |
Methods. Operators. Apply a scalar weight to a dual quaternion.
Definition at line 411 of file BLI_math_quaternion.hh.
References BLI_assert, blender::math::DualQuaternionBase< T >::quat, blender::math::DualQuaternionBase< T >::quat_weight, blender::math::DualQuaternionBase< T >::scale, blender::math::DualQuaternionBase< T >::scale_weight, and blender::math::DualQuaternionBase< T >::trans.
| DualQuaternionBase< T > & blender::math::DualQuaternionBase< T >::operator+= | ( | const DualQuaternionBase< T > & | b | ) |
Add two weighted dual-quaternions rotations.
Definition at line 365 of file BLI_math_quaternion.hh.
References b, and blender::math::DualQuaternionBase< T >::quat.
|
friend |
Apply a scalar weight to a dual quaternion.
Definition at line 242 of file BLI_math_quaternion_types.hh.
|
friend |
Apply a scalar weight to a dual quaternion.
Definition at line 250 of file BLI_math_quaternion_types.hh.
|
friend |
Add two weighted dual-quaternions rotations.
Definition at line 258 of file BLI_math_quaternion_types.hh.
| QuaternionBase<T> blender::math::DualQuaternionBase< T >::quat |
Non-dual part.
Definition at line 190 of file BLI_math_quaternion_types.hh.
Referenced by blender::math::normalize(), blender::math::DualQuaternionBase< T >::operator*=(), blender::math::DualQuaternionBase< T >::operator+=(), blender::math::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), and blender::math::transform_point().
| T blender::math::DualQuaternionBase< T >::quat_weight |
The weight of this dual-quaternion. Used for and summation & normalizing. A weight of 0 means the quaternion is not valid.
Definition at line 208 of file BLI_math_quaternion_types.hh.
Referenced by blender::math::is_normalized(), blender::math::normalize(), blender::math::DualQuaternionBase< T >::operator*=(), blender::math::tests::TEST(), blender::tests::TEST(), and blender::tests::TEST().
| MatBase<T, 4, 4> blender::math::DualQuaternionBase< T >::scale |
Scaling is saved separately to handle cases of non orthonormal axes, non uniform scale and flipped axes.
Definition at line 201 of file BLI_math_quaternion_types.hh.
Referenced by blender::math::normalize(), blender::math::DualQuaternionBase< T >::operator*=(), blender::math::tests::TEST(), blender::tests::TEST(), and blender::math::transform_point().
| T blender::math::DualQuaternionBase< T >::scale_weight |
The weight of DualQuaternionBase.scale. Set to 0 if uniformly scaled to skip scale sum.
Definition at line 203 of file BLI_math_quaternion_types.hh.
Referenced by blender::math::normalize(), blender::math::DualQuaternionBase< T >::operator*=(), blender::math::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), and blender::math::transform_point().
| QuaternionBase<T> blender::math::DualQuaternionBase< T >::trans |
Dual part.
Definition at line 192 of file BLI_math_quaternion_types.hh.
Referenced by blender::math::normalize(), blender::math::DualQuaternionBase< T >::operator*=(), blender::math::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), and blender::math::transform_point().