Добавление операций проверки состояний кватернионов и дуальных кватернионов, а также операций трансформации вектора с помощью rigid pose
This commit is contained in:
parent
dc759e61f7
commit
405af2f3a7
8 changed files with 152 additions and 32 deletions
|
|
@ -152,6 +152,18 @@ inline void bgc_fp64_rigid_pose3_swap(BGC_FP64_RigidPose3* const pose1, BGC_FP64
|
|||
bgc_fp64_dual_quaternion_swap(&pose1->_versor, &pose2->_versor);
|
||||
}
|
||||
|
||||
// ================== Is Idle =================== //
|
||||
|
||||
inline int bgc_fp32_rigid_pose3_is_idle(const BGC_FP32_RigidPose3* const pose)
|
||||
{
|
||||
return bgc_fp32_quaternion_is_real(&pose->_versor.real_part) && bgc_fp32_quaternion_is_zero(&pose->_versor.dual_part);
|
||||
}
|
||||
|
||||
inline int bgc_fp64_rigid_pose3_is_idle(const BGC_FP64_RigidPose3* const pose)
|
||||
{
|
||||
return bgc_fp64_quaternion_is_real(&pose->_versor.real_part) && bgc_fp64_quaternion_is_zero(&pose->_versor.dual_part);
|
||||
}
|
||||
|
||||
// ================== Convert =================== //
|
||||
|
||||
inline void bgc_fp32_rigid_pose3_convert_to_fp64(BGC_FP64_RigidPose3* const destination, const BGC_FP32_RigidPose3* const source)
|
||||
|
|
@ -488,4 +500,28 @@ inline void bgc_fp64_rigid_pose3_set_reverse_position(BGC_FP64_RigidPose3* const
|
|||
pose->_versor.dual_part.x3 = -0.5f * (versor->s0 * shift->x3 + versor->x2 * shift->x1 - versor->x1 * shift->x2);
|
||||
}
|
||||
|
||||
// ============== Transform Vector ============== //
|
||||
|
||||
inline void bgc_fp32_rigid_pose3_transform_vector(BGC_FP32_Vector3* const turned_vector, const BGC_FP32_RigidPose3* const pose, const BGC_FP32_Vector3* const original_vector)
|
||||
{
|
||||
_bgc_fp32_versor_turn_vector(turned_vector, &pose->_versor.real_part, original_vector);
|
||||
}
|
||||
|
||||
inline void bgc_fp64_rigid_pose3_transform_vector(BGC_FP64_Vector3* const turned_vector, const BGC_FP64_RigidPose3* const pose, const BGC_FP64_Vector3* const original_vector)
|
||||
{
|
||||
_bgc_fp64_versor_turn_vector(turned_vector, &pose->_versor.real_part, original_vector);
|
||||
}
|
||||
|
||||
// =========== Transform Vector Back ============ //
|
||||
|
||||
inline void bgc_fp32_rigid_pose3_transform_vector_back(BGC_FP32_Vector3* const turned_vector, const BGC_FP32_RigidPose3* const pose, const BGC_FP32_Vector3* const original_vector)
|
||||
{
|
||||
_bgc_fp32_versor_turn_vector_back(turned_vector, &pose->_versor.real_part, original_vector);
|
||||
}
|
||||
|
||||
inline void bgc_fp64_rigid_pose3_transform_vector_back(BGC_FP64_Vector3* const turned_vector, const BGC_FP64_RigidPose3* const pose, const BGC_FP64_Vector3* const original_vector)
|
||||
{
|
||||
_bgc_fp64_versor_turn_vector_back(turned_vector, &pose->_versor.real_part, original_vector);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue