Реорганизация проекта: перенос определения всех типов в один файл, перегруппировка функций в файлах
This commit is contained in:
parent
c7d9263154
commit
053af33444
45 changed files with 1001 additions and 980 deletions
|
|
@ -1,62 +1,47 @@
|
|||
#ifndef _BGC_SLERP_H_INCLUDED_
|
||||
#define _BGC_SLERP_H_INCLUDED_
|
||||
|
||||
#include "./types.h"
|
||||
#include "./turn3.h"
|
||||
|
||||
typedef struct {
|
||||
float s0_cos_weight, s0_sin_weight;
|
||||
float x1_cos_weight, x1_sin_weight;
|
||||
float x2_cos_weight, x2_sin_weight;
|
||||
float x3_cos_weight, x3_sin_weight;
|
||||
float radians;
|
||||
} BGC_FP32_Slerp;
|
||||
|
||||
typedef struct {
|
||||
double s0_cos_weight, s0_sin_weight;
|
||||
double x1_cos_weight, x1_sin_weight;
|
||||
double x2_cos_weight, x2_sin_weight;
|
||||
double x3_cos_weight, x3_sin_weight;
|
||||
double radians;
|
||||
} BGC_FP64_Slerp;
|
||||
|
||||
inline void bgc_fp32_slerp_reset(BGC_FP32_Slerp* slerp)
|
||||
inline void bgc_fp32_slerp_reset(BGC_FP32_Turn3Slerp* slerp)
|
||||
{
|
||||
slerp->s0_cos_weight = 1.0f;
|
||||
slerp->s0_sin_weight = 0.0f;
|
||||
slerp->_s0_cos_weight = 1.0f;
|
||||
slerp->_s0_sin_weight = 0.0f;
|
||||
|
||||
slerp->x1_cos_weight = 0.0f;
|
||||
slerp->x1_sin_weight = 0.0f;
|
||||
slerp->_x1_cos_weight = 0.0f;
|
||||
slerp->_x1_sin_weight = 0.0f;
|
||||
|
||||
slerp->x2_cos_weight = 0.0f;
|
||||
slerp->x2_sin_weight = 0.0f;
|
||||
slerp->_x2_cos_weight = 0.0f;
|
||||
slerp->_x2_sin_weight = 0.0f;
|
||||
|
||||
slerp->x3_cos_weight = 0.0f;
|
||||
slerp->x3_sin_weight = 0.0f;
|
||||
slerp->_x3_cos_weight = 0.0f;
|
||||
slerp->_x3_sin_weight = 0.0f;
|
||||
|
||||
slerp->radians = 0.0f;
|
||||
}
|
||||
|
||||
inline void bgc_fp64_slerp_reset(BGC_FP64_Slerp* slerp)
|
||||
inline void bgc_fp64_slerp_reset(BGC_FP64_Turn3Slerp* slerp)
|
||||
{
|
||||
slerp->s0_cos_weight = 1.0;
|
||||
slerp->s0_sin_weight = 0.0;
|
||||
slerp->_s0_cos_weight = 1.0;
|
||||
slerp->_s0_sin_weight = 0.0;
|
||||
|
||||
slerp->x1_cos_weight = 0.0;
|
||||
slerp->x1_sin_weight = 0.0;
|
||||
slerp->_x1_cos_weight = 0.0;
|
||||
slerp->_x1_sin_weight = 0.0;
|
||||
|
||||
slerp->x2_cos_weight = 0.0;
|
||||
slerp->x2_sin_weight = 0.0;
|
||||
slerp->_x2_cos_weight = 0.0;
|
||||
slerp->_x2_sin_weight = 0.0;
|
||||
|
||||
slerp->x3_cos_weight = 0.0;
|
||||
slerp->x3_sin_weight = 0.0;
|
||||
slerp->_x3_cos_weight = 0.0;
|
||||
slerp->_x3_sin_weight = 0.0;
|
||||
|
||||
slerp->radians = 0.0;
|
||||
}
|
||||
|
||||
void bgc_fp32_slerp_make(BGC_FP32_Slerp* slerp, const BGC_FP32_Turn3* start, const BGC_FP32_Turn3* augment);
|
||||
void bgc_fp64_slerp_make(BGC_FP64_Slerp* slerp, const BGC_FP64_Turn3* start, const BGC_FP64_Turn3* augment);
|
||||
void bgc_fp32_slerp_make(BGC_FP32_Turn3Slerp* slerp, const BGC_FP32_Turn3* start, const BGC_FP32_Turn3* augment);
|
||||
void bgc_fp64_slerp_make(BGC_FP64_Turn3Slerp* slerp, const BGC_FP64_Turn3* start, const BGC_FP64_Turn3* augment);
|
||||
|
||||
inline void bgc_fp32_slerp_make_full(BGC_FP32_Slerp* slerp, const BGC_FP32_Turn3* start, const BGC_FP32_Turn3* end)
|
||||
inline void bgc_fp32_slerp_make_full(BGC_FP32_Turn3Slerp* slerp, const BGC_FP32_Turn3* start, const BGC_FP32_Turn3* end)
|
||||
{
|
||||
BGC_FP32_Turn3 augment;
|
||||
|
||||
|
|
@ -65,7 +50,7 @@ inline void bgc_fp32_slerp_make_full(BGC_FP32_Slerp* slerp, const BGC_FP32_Turn3
|
|||
bgc_fp32_slerp_make(slerp, start, &augment);
|
||||
}
|
||||
|
||||
inline void bgc_fp64_slerp_make_full(BGC_FP64_Slerp* slerp, const BGC_FP64_Turn3* start, const BGC_FP64_Turn3* end)
|
||||
inline void bgc_fp64_slerp_make_full(BGC_FP64_Turn3Slerp* slerp, const BGC_FP64_Turn3* start, const BGC_FP64_Turn3* end)
|
||||
{
|
||||
BGC_FP64_Turn3 augment;
|
||||
|
||||
|
|
@ -74,7 +59,7 @@ inline void bgc_fp64_slerp_make_full(BGC_FP64_Slerp* slerp, const BGC_FP64_Turn3
|
|||
bgc_fp64_slerp_make(slerp, start, &augment);
|
||||
}
|
||||
|
||||
inline void bgc_fp32_slerp_make_shortened(BGC_FP32_Slerp* slerp, const BGC_FP32_Turn3* start, const BGC_FP32_Turn3* end)
|
||||
inline void bgc_fp32_slerp_make_shortened(BGC_FP32_Turn3Slerp* slerp, const BGC_FP32_Turn3* start, const BGC_FP32_Turn3* end)
|
||||
{
|
||||
BGC_FP32_Turn3 augment;
|
||||
|
||||
|
|
@ -84,7 +69,7 @@ inline void bgc_fp32_slerp_make_shortened(BGC_FP32_Slerp* slerp, const BGC_FP32_
|
|||
bgc_fp32_slerp_make(slerp, start, &augment);
|
||||
}
|
||||
|
||||
inline void bgc_fp64_slerp_make_shortened(BGC_FP64_Slerp* slerp, const BGC_FP64_Turn3* start, const BGC_FP64_Turn3* end)
|
||||
inline void bgc_fp64_slerp_make_shortened(BGC_FP64_Turn3Slerp* slerp, const BGC_FP64_Turn3* start, const BGC_FP64_Turn3* end)
|
||||
{
|
||||
BGC_FP64_Turn3 augment;
|
||||
|
||||
|
|
@ -94,7 +79,7 @@ inline void bgc_fp64_slerp_make_shortened(BGC_FP64_Slerp* slerp, const BGC_FP64_
|
|||
bgc_fp64_slerp_make(slerp, start, &augment);
|
||||
}
|
||||
|
||||
inline void bgc_fp32_slerp_get_phase_versor(BGC_FP32_Turn3* versor, const BGC_FP32_Slerp* slerp, const float phase)
|
||||
inline void bgc_fp32_slerp_get_phase_versor(BGC_FP32_Turn3* versor, const BGC_FP32_Turn3Slerp* slerp, const float phase)
|
||||
{
|
||||
const float angle = slerp->radians * phase;
|
||||
const float cosine = cosf(angle);
|
||||
|
|
@ -102,14 +87,14 @@ inline void bgc_fp32_slerp_get_phase_versor(BGC_FP32_Turn3* versor, const BGC_FP
|
|||
|
||||
bgc_fp32_turn3_set_raw_values(
|
||||
versor,
|
||||
slerp->s0_cos_weight * cosine + slerp->s0_sin_weight * sine,
|
||||
slerp->x1_cos_weight * cosine + slerp->x1_sin_weight * sine,
|
||||
slerp->x2_cos_weight * cosine + slerp->x2_sin_weight * sine,
|
||||
slerp->x3_cos_weight * cosine + slerp->x3_sin_weight * sine
|
||||
slerp->_s0_cos_weight * cosine + slerp->_s0_sin_weight * sine,
|
||||
slerp->_x1_cos_weight * cosine + slerp->_x1_sin_weight * sine,
|
||||
slerp->_x2_cos_weight * cosine + slerp->_x2_sin_weight * sine,
|
||||
slerp->_x3_cos_weight * cosine + slerp->_x3_sin_weight * sine
|
||||
);
|
||||
}
|
||||
|
||||
inline void bgc_fp64_slerp_get_phase_versor(BGC_FP64_Turn3* versor, const BGC_FP64_Slerp* slerp, const double phase)
|
||||
inline void bgc_fp64_slerp_get_phase_versor(BGC_FP64_Turn3* versor, const BGC_FP64_Turn3Slerp* slerp, const double phase)
|
||||
{
|
||||
const double angle = slerp->radians * phase;
|
||||
const double cosine = cos(angle);
|
||||
|
|
@ -117,10 +102,10 @@ inline void bgc_fp64_slerp_get_phase_versor(BGC_FP64_Turn3* versor, const BGC_FP
|
|||
|
||||
bgc_fp64_turn3_set_raw_values(
|
||||
versor,
|
||||
slerp->s0_cos_weight * cosine + slerp->s0_sin_weight * sine,
|
||||
slerp->x1_cos_weight * cosine + slerp->x1_sin_weight * sine,
|
||||
slerp->x2_cos_weight * cosine + slerp->x2_sin_weight * sine,
|
||||
slerp->x3_cos_weight * cosine + slerp->x3_sin_weight * sine
|
||||
slerp->_s0_cos_weight * cosine + slerp->_s0_sin_weight * sine,
|
||||
slerp->_x1_cos_weight * cosine + slerp->_x1_sin_weight * sine,
|
||||
slerp->_x2_cos_weight * cosine + slerp->_x2_sin_weight * sine,
|
||||
slerp->_x3_cos_weight * cosine + slerp->_x3_sin_weight * sine
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue