From f7e0b1cff5651a2aa510f6b54c095a62cba1d5e6 Mon Sep 17 00:00:00 2001 From: Andrey Pokidov Date: Wed, 28 Jan 2026 20:25:05 +0700 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D1=8B=D0=B5=20=D0=BC=D0=B5?= =?UTF-8?q?=D1=82=D0=BE=D0=B4=D1=8B=20=D0=B4=D0=BB=D1=8F=20=D0=BC=D0=9E?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- butis/motor.c | 9 +++++++++ butis/motor.h | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/butis/motor.c b/butis/motor.c index ded03d0..17980ad 100644 --- a/butis/motor.c +++ b/butis/motor.c @@ -3,6 +3,15 @@ extern inline void bt_motor_reset_fp32(BtMotorFP32* motor); extern inline void bt_motor_reset_fp64(BtMotorFP64* motor); +extern inline void bt_motor_copy_fp32(const BtMotorFP32* source, BtMotorFP32* destination); +extern inline void bt_motor_copy_fp64(const BtMotorFP64* source, BtMotorFP64* destination); + +extern inline void bt_motor_convert_fp64_to_fp32(const BtMotorFP64* source, BtMotorFP32* destination); +extern inline void bt_motor_convert_fp32_to_fp64(const BtMotorFP32* source, BtMotorFP64* destination); + +extern inline int bt_motor_is_zero_fp32(const BtMotorFP32* motor); +extern inline int bt_motor_is_zero_fp64(const BtMotorFP64* motor); + extern inline int bt_motor_is_vector_fp32(const BtMotorFP32* motor); extern inline int bt_motor_is_vector_fp64(const BtMotorFP64* motor); diff --git a/butis/motor.h b/butis/motor.h index 33a42ba..8fb8b10 100644 --- a/butis/motor.h +++ b/butis/motor.h @@ -27,6 +27,46 @@ inline void bt_motor_reset_fp64(BtMotorFP64* motor) bgc_vector3_reset_fp64(&motor->momentum); } +// ==================== Copy ==================== // + +inline void bt_motor_copy_fp32(const BtMotorFP32* source, BtMotorFP32* destination) +{ + bgc_vector3_copy_fp32(&source->vector, &destination->vector); + bgc_vector3_copy_fp32(&source->momentum, &destination->momentum); +} + +inline void bt_motor_copy_fp64(const BtMotorFP64* source, BtMotorFP64* destination) +{ + bgc_vector3_copy_fp64(&source->vector, &destination->vector); + bgc_vector3_copy_fp64(&source->momentum, &destination->momentum); +} + +// ================== Convert =================== // + +inline void bt_motor_convert_fp64_to_fp32(const BtMotorFP64* source, BtMotorFP32* destination) +{ + bgc_vector3_convert_fp64_to_fp32(&source->vector, &destination->vector); + bgc_vector3_convert_fp64_to_fp32(&source->momentum, &destination->momentum); +} + +inline void bt_motor_convert_fp32_to_fp64(const BtMotorFP32* source, BtMotorFP64* destination) +{ + bgc_vector3_convert_fp32_to_fp64(&source->vector, &destination->vector); + bgc_vector3_convert_fp32_to_fp64(&source->momentum, &destination->momentum); +} + +// ================== Is Zero =================== // + +inline int bt_motor_is_zero_fp32(const BtMotorFP32* motor) +{ + return bgc_vector3_is_zero_fp32(&motor->vector) && bgc_vector3_is_zero_fp32(&motor->momentum); +} + +inline int bt_motor_is_zero_fp64(const BtMotorFP64* motor) +{ + return bgc_vector3_is_zero_fp64(&motor->vector) && bgc_vector3_is_zero_fp64(&motor->momentum); +} + // ================= Is Vector ================== // inline int bt_motor_is_vector_fp32(const BtMotorFP32* motor)