Реорганизация проекта: перенос определения всех типов в один файл, перегруппировка функций в файлах

This commit is contained in:
Andrey Pokidov 2026-02-12 10:35:03 +07:00
parent c7d9263154
commit 053af33444
45 changed files with 1001 additions and 980 deletions

View file

@ -1,18 +1,18 @@
#include "./slerp.h"
extern inline void bgc_fp32_slerp_reset(BGC_FP32_Slerp* slerp);
extern inline void bgc_fp64_slerp_reset(BGC_FP64_Slerp* slerp);
extern inline void bgc_fp32_slerp_reset(BGC_FP32_Turn3Slerp* slerp);
extern inline void bgc_fp64_slerp_reset(BGC_FP64_Turn3Slerp* slerp);
extern inline void bgc_fp32_slerp_make_full(BGC_FP32_Slerp* slerp, const BGC_FP32_Turn3* start, const BGC_FP32_Turn3* end);
extern inline void bgc_fp64_slerp_make_full(BGC_FP64_Slerp* slerp, const BGC_FP64_Turn3* start, const BGC_FP64_Turn3* end);
extern inline void bgc_fp32_slerp_make_full(BGC_FP32_Turn3Slerp* slerp, const BGC_FP32_Turn3* start, const BGC_FP32_Turn3* end);
extern inline void bgc_fp64_slerp_make_full(BGC_FP64_Turn3Slerp* slerp, const BGC_FP64_Turn3* start, const BGC_FP64_Turn3* end);
extern inline void bgc_fp32_slerp_make_shortened(BGC_FP32_Slerp* slerp, const BGC_FP32_Turn3* start, const BGC_FP32_Turn3* end);
extern inline void bgc_fp64_slerp_make_shortened(BGC_FP64_Slerp* slerp, const BGC_FP64_Turn3* start, const BGC_FP64_Turn3* end);
extern inline void bgc_fp32_slerp_make_shortened(BGC_FP32_Turn3Slerp* slerp, const BGC_FP32_Turn3* start, const BGC_FP32_Turn3* end);
extern inline void bgc_fp64_slerp_make_shortened(BGC_FP64_Turn3Slerp* slerp, const BGC_FP64_Turn3* start, const BGC_FP64_Turn3* end);
extern inline void bgc_fp32_slerp_get_phase_versor(BGC_FP32_Turn3* versor, const BGC_FP32_Slerp* slerp, const float phase);
extern inline void bgc_fp64_slerp_get_phase_versor(BGC_FP64_Turn3* versor, const BGC_FP64_Slerp* slerp, const double phase);
extern inline void bgc_fp32_slerp_get_phase_versor(BGC_FP32_Turn3* versor, const BGC_FP32_Turn3Slerp* slerp, const float phase);
extern inline void bgc_fp64_slerp_get_phase_versor(BGC_FP64_Turn3* versor, const BGC_FP64_Turn3Slerp* slerp, const double phase);
void bgc_fp32_slerp_make(BGC_FP32_Slerp* slerp, const BGC_FP32_Turn3* start, const BGC_FP32_Turn3* augment)
void bgc_fp32_slerp_make(BGC_FP32_Turn3Slerp* slerp, const BGC_FP32_Turn3* start, const BGC_FP32_Turn3* augment)
{
const float square_vector = augment->_versor.x1 * augment->_versor.x1 + augment->_versor.x2 * augment->_versor.x2 + augment->_versor.x3 * augment->_versor.x3;
@ -22,15 +22,15 @@ void bgc_fp32_slerp_make(BGC_FP32_Slerp* slerp, const BGC_FP32_Turn3* start, con
}
if (square_vector <= BGC_FP32_SQUARE_EPSILON) {
slerp->s0_cos_weight = start->_versor.s0;
slerp->x1_cos_weight = start->_versor.x1;
slerp->x2_cos_weight = start->_versor.x2;
slerp->x3_cos_weight = start->_versor.x3;
slerp->_s0_cos_weight = start->_versor.s0;
slerp->_x1_cos_weight = start->_versor.x1;
slerp->_x2_cos_weight = start->_versor.x2;
slerp->_x3_cos_weight = start->_versor.x3;
slerp->s0_sin_weight = 0.0f;
slerp->x1_sin_weight = 0.0f;
slerp->x2_sin_weight = 0.0f;
slerp->x3_sin_weight = 0.0f;
slerp->_s0_sin_weight = 0.0f;
slerp->_x1_sin_weight = 0.0f;
slerp->_x2_sin_weight = 0.0f;
slerp->_x3_sin_weight = 0.0f;
slerp->radians = 0.0f;
return;
@ -42,18 +42,18 @@ void bgc_fp32_slerp_make(BGC_FP32_Slerp* slerp, const BGC_FP32_Turn3* start, con
const float multiplier = 1.0f / vector_modulus;
slerp->s0_cos_weight = start->_versor.s0;
slerp->x1_cos_weight = start->_versor.x1;
slerp->x2_cos_weight = start->_versor.x2;
slerp->x3_cos_weight = start->_versor.x3;
slerp->_s0_cos_weight = start->_versor.s0;
slerp->_x1_cos_weight = start->_versor.x1;
slerp->_x2_cos_weight = start->_versor.x2;
slerp->_x3_cos_weight = start->_versor.x3;
slerp->s0_sin_weight = -multiplier * (augment->_versor.x1 * start->_versor.x1 + augment->_versor.x2 * start->_versor.x2 + augment->_versor.x3 * start->_versor.x3);
slerp->x1_sin_weight = multiplier * (augment->_versor.x1 * start->_versor.s0 + augment->_versor.x2 * start->_versor.x3 - augment->_versor.x3 * start->_versor.x2);
slerp->x2_sin_weight = multiplier * (augment->_versor.x2 * start->_versor.s0 - augment->_versor.x1 * start->_versor.x3 + augment->_versor.x3 * start->_versor.x1);
slerp->x3_sin_weight = multiplier * (augment->_versor.x3 * start->_versor.s0 - augment->_versor.x2 * start->_versor.x1 + augment->_versor.x1 * start->_versor.x2);
slerp->_s0_sin_weight = -multiplier * (augment->_versor.x1 * start->_versor.x1 + augment->_versor.x2 * start->_versor.x2 + augment->_versor.x3 * start->_versor.x3);
slerp->_x1_sin_weight = multiplier * (augment->_versor.x1 * start->_versor.s0 + augment->_versor.x2 * start->_versor.x3 - augment->_versor.x3 * start->_versor.x2);
slerp->_x2_sin_weight = multiplier * (augment->_versor.x2 * start->_versor.s0 - augment->_versor.x1 * start->_versor.x3 + augment->_versor.x3 * start->_versor.x1);
slerp->_x3_sin_weight = multiplier * (augment->_versor.x3 * start->_versor.s0 - augment->_versor.x2 * start->_versor.x1 + augment->_versor.x1 * start->_versor.x2);
}
void bgc_fp64_slerp_make(BGC_FP64_Slerp* slerp, const BGC_FP64_Turn3* start, const BGC_FP64_Turn3* augment)
void bgc_fp64_slerp_make(BGC_FP64_Turn3Slerp* slerp, const BGC_FP64_Turn3* start, const BGC_FP64_Turn3* augment)
{
const double square_vector = augment->_versor.x1 * augment->_versor.x1 + augment->_versor.x2 * augment->_versor.x2 + augment->_versor.x3 * augment->_versor.x3;
@ -63,15 +63,15 @@ void bgc_fp64_slerp_make(BGC_FP64_Slerp* slerp, const BGC_FP64_Turn3* start, con
}
if (square_vector <= BGC_FP64_SQUARE_EPSILON) {
slerp->s0_cos_weight = start->_versor.s0;
slerp->x1_cos_weight = start->_versor.x1;
slerp->x2_cos_weight = start->_versor.x2;
slerp->x3_cos_weight = start->_versor.x3;
slerp->_s0_cos_weight = start->_versor.s0;
slerp->_x1_cos_weight = start->_versor.x1;
slerp->_x2_cos_weight = start->_versor.x2;
slerp->_x3_cos_weight = start->_versor.x3;
slerp->s0_sin_weight = 0.0;
slerp->x1_sin_weight = 0.0;
slerp->x2_sin_weight = 0.0;
slerp->x3_sin_weight = 0.0;
slerp->_s0_sin_weight = 0.0;
slerp->_x1_sin_weight = 0.0;
slerp->_x2_sin_weight = 0.0;
slerp->_x3_sin_weight = 0.0;
slerp->radians = 0.0;
return;
@ -83,13 +83,13 @@ void bgc_fp64_slerp_make(BGC_FP64_Slerp* slerp, const BGC_FP64_Turn3* start, con
const double multiplier = 1.0 / vector_modulus;
slerp->s0_cos_weight = start->_versor.s0;
slerp->x1_cos_weight = start->_versor.x1;
slerp->x2_cos_weight = start->_versor.x2;
slerp->x3_cos_weight = start->_versor.x3;
slerp->_s0_cos_weight = start->_versor.s0;
slerp->_x1_cos_weight = start->_versor.x1;
slerp->_x2_cos_weight = start->_versor.x2;
slerp->_x3_cos_weight = start->_versor.x3;
slerp->s0_sin_weight = -multiplier * (augment->_versor.x1 * start->_versor.x1 + augment->_versor.x2 * start->_versor.x2 + augment->_versor.x3 * start->_versor.x3);
slerp->x1_sin_weight = multiplier * (augment->_versor.x1 * start->_versor.s0 + augment->_versor.x2 * start->_versor.x3 - augment->_versor.x3 * start->_versor.x2);
slerp->x2_sin_weight = multiplier * (augment->_versor.x2 * start->_versor.s0 - augment->_versor.x1 * start->_versor.x3 + augment->_versor.x3 * start->_versor.x1);
slerp->x3_sin_weight = multiplier * (augment->_versor.x3 * start->_versor.s0 - augment->_versor.x2 * start->_versor.x1 + augment->_versor.x1 * start->_versor.x2);
slerp->_s0_sin_weight = -multiplier * (augment->_versor.x1 * start->_versor.x1 + augment->_versor.x2 * start->_versor.x2 + augment->_versor.x3 * start->_versor.x3);
slerp->_x1_sin_weight = multiplier * (augment->_versor.x1 * start->_versor.s0 + augment->_versor.x2 * start->_versor.x3 - augment->_versor.x3 * start->_versor.x2);
slerp->_x2_sin_weight = multiplier * (augment->_versor.x2 * start->_versor.s0 - augment->_versor.x1 * start->_versor.x3 + augment->_versor.x3 * start->_versor.x1);
slerp->_x3_sin_weight = multiplier * (augment->_versor.x3 * start->_versor.s0 - augment->_versor.x2 * start->_versor.x1 + augment->_versor.x1 * start->_versor.x2);
}