Скалярное произведение кватернионов: нужно для нормализации дуальных кватернионов
This commit is contained in:
parent
614daf8ebd
commit
a5a59f72f5
2 changed files with 15 additions and 0 deletions
|
|
@ -76,6 +76,9 @@ extern inline void bgc_fp64_quaternion_get_mean3(BGC_FP64_Quaternion* mean, cons
|
||||||
extern inline void bgc_fp32_quaternion_interpolate(BGC_FP32_Quaternion* interpolation, const BGC_FP32_Quaternion* quaternion1, const BGC_FP32_Quaternion* quaternion2, const float phase);
|
extern inline void bgc_fp32_quaternion_interpolate(BGC_FP32_Quaternion* interpolation, const BGC_FP32_Quaternion* quaternion1, const BGC_FP32_Quaternion* quaternion2, const float phase);
|
||||||
extern inline void bgc_fp64_quaternion_interpolate(BGC_FP64_Quaternion* interpolation, const BGC_FP64_Quaternion* quaternion1, const BGC_FP64_Quaternion* quaternion2, const double phase);
|
extern inline void bgc_fp64_quaternion_interpolate(BGC_FP64_Quaternion* interpolation, const BGC_FP64_Quaternion* quaternion1, const BGC_FP64_Quaternion* quaternion2, const double phase);
|
||||||
|
|
||||||
|
extern inline float bgc_fp32_quaternion_get_dot_product(const BGC_FP32_Quaternion* quaternion1, const BGC_FP32_Quaternion* quaternion2);
|
||||||
|
extern inline double bgc_fp64_quaternion_get_dot_product(const BGC_FP64_Quaternion* quaternion1, const BGC_FP64_Quaternion* quaternion2);
|
||||||
|
|
||||||
extern inline void bgc_fp32_quaternion_conjugate(BGC_FP32_Quaternion* quaternion);
|
extern inline void bgc_fp32_quaternion_conjugate(BGC_FP32_Quaternion* quaternion);
|
||||||
extern inline void bgc_fp64_quaternion_conjugate(BGC_FP64_Quaternion* quaternion);
|
extern inline void bgc_fp64_quaternion_conjugate(BGC_FP64_Quaternion* quaternion);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -500,6 +500,18 @@ inline void bgc_fp64_quaternion_interpolate(BGC_FP64_Quaternion* interpolation,
|
||||||
interpolation->x3 = quaternion1->x3 * counter_phase + quaternion2->x3 * phase;
|
interpolation->x3 = quaternion1->x3 * counter_phase + quaternion2->x3 * phase;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ============== Get Dot Product =============== //
|
||||||
|
|
||||||
|
inline float bgc_fp32_quaternion_get_dot_product(const BGC_FP32_Quaternion* quaternion1, const BGC_FP32_Quaternion* quaternion2)
|
||||||
|
{
|
||||||
|
return (quaternion1->s0 * quaternion2->s0 + quaternion1->x1 * quaternion2->x1) + (quaternion1->x2 * quaternion2->x2 + quaternion1->x3 * quaternion2->x3)
|
||||||
|
}
|
||||||
|
|
||||||
|
inline double bgc_fp64_quaternion_get_dot_product(const BGC_FP64_Quaternion* quaternion1, const BGC_FP64_Quaternion* quaternion2)
|
||||||
|
{
|
||||||
|
return (quaternion1->s0 * quaternion2->s0 + quaternion1->x1 * quaternion2->x1) + (quaternion1->x2 * quaternion2->x2 + quaternion1->x3 * quaternion2->x3)
|
||||||
|
}
|
||||||
|
|
||||||
// ================= Conjugate ================== //
|
// ================= Conjugate ================== //
|
||||||
|
|
||||||
inline void bgc_fp32_quaternion_conjugate(BGC_FP32_Quaternion* quaternion)
|
inline void bgc_fp32_quaternion_conjugate(BGC_FP32_Quaternion* quaternion)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue