From a5a59f72f59d644f9df19f8b83fde153fffdef52 Mon Sep 17 00:00:00 2001 From: Andrey Pokidov Date: Fri, 13 Mar 2026 21:10:16 +0700 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BA=D0=B0=D0=BB=D1=8F=D1=80=D0=BD?= =?UTF-8?q?=D0=BE=D0=B5=20=D0=BF=D1=80=D0=BE=D0=B8=D0=B7=D0=B2=D0=B5=D0=B4?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=B2=D0=B0=D1=82=D0=B5=D1=80?= =?UTF-8?q?=D0=BD=D0=B8=D0=BE=D0=BD=D0=BE=D0=B2:=20=D0=BD=D1=83=D0=B6?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=B4=D0=BB=D1=8F=20=D0=BD=D0=BE=D1=80=D0=BC?= =?UTF-8?q?=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8=20=D0=B4=D1=83?= =?UTF-8?q?=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B=D1=85=20=D0=BA=D0=B2=D0=B0=D1=82?= =?UTF-8?q?=D0=B5=D1=80=D0=BD=D0=B8=D0=BE=D0=BD=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- basic-geometry/quaternion.c | 3 +++ basic-geometry/quaternion.h | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/basic-geometry/quaternion.c b/basic-geometry/quaternion.c index 1a6d100..dd9fac2 100644 --- a/basic-geometry/quaternion.c +++ b/basic-geometry/quaternion.c @@ -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_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_fp64_quaternion_conjugate(BGC_FP64_Quaternion* quaternion); diff --git a/basic-geometry/quaternion.h b/basic-geometry/quaternion.h index 3501483..4edc232 100644 --- a/basic-geometry/quaternion.h +++ b/basic-geometry/quaternion.h @@ -500,6 +500,18 @@ inline void bgc_fp64_quaternion_interpolate(BGC_FP64_Quaternion* interpolation, 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 ================== // inline void bgc_fp32_quaternion_conjugate(BGC_FP32_Quaternion* quaternion)