Добавление операций проверки состояний кватернионов и дуальных кватернионов, а также операций трансформации вектора с помощью rigid pose

This commit is contained in:
Andrey Pokidov 2026-03-26 01:49:18 +07:00
parent dc759e61f7
commit 405af2f3a7
8 changed files with 152 additions and 32 deletions

View file

@ -110,6 +110,30 @@ inline int bgc_fp64_quaternion_is_unit(const BGC_FP64_Quaternion* const quaterni
return bgc_fp64_is_square_unit(bgc_fp64_quaternion_get_square_magnitude(quaternion));
}
// ================== Is Pure =================== //
inline int bgc_fp32_quaternion_is_pure(const BGC_FP32_Quaternion* const quaternion)
{
return bgc_fp32_is_zero(quaternion->s0);
}
inline int bgc_fp64_quaternion_is_pure(const BGC_FP64_Quaternion* const quaternion)
{
return bgc_fp64_is_zero(quaternion->s0);
}
// ================== Is Real =================== //
inline int bgc_fp32_quaternion_is_real(const BGC_FP32_Quaternion* const quaternion)
{
return quaternion->x1 * quaternion->x1 + quaternion->x2 * quaternion->x2 + quaternion->x3 * quaternion->x3 <= BGC_FP32_SQUARE_EPSILON;
}
inline int bgc_fp64_quaternion_is_real(const BGC_FP64_Quaternion* const quaternion)
{
return quaternion->x1 * quaternion->x1 + quaternion->x2 * quaternion->x2 + quaternion->x3 * quaternion->x3 <= BGC_FP64_SQUARE_EPSILON;
}
// ==================== Copy ==================== //
inline void bgc_fp32_quaternion_copy(BGC_FP32_Quaternion* const destination, const BGC_FP32_Quaternion* const source)