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)