Переход на парадигму Destination first в порядке параметров функий
This commit is contained in:
parent
f7e41645fe
commit
03627f4401
41 changed files with 1570 additions and 1978 deletions
|
|
@ -53,75 +53,74 @@ inline void bgc_fp64_slerp_reset(BGC_FP64_Slerp* slerp)
|
|||
slerp->radians = 0.0;
|
||||
}
|
||||
|
||||
void bgc_fp32_slerp_make(const BGC_FP32_Versor* start, const BGC_FP32_Versor* augment, BGC_FP32_Slerp* slerp);
|
||||
void bgc_fp32_slerp_make(BGC_FP32_Slerp* slerp, const BGC_FP32_Versor* start, const BGC_FP32_Versor* augment);
|
||||
void bgc_fp64_slerp_make(BGC_FP64_Slerp* slerp, const BGC_FP64_Versor* start, const BGC_FP64_Versor* augment);
|
||||
|
||||
void bgc_fp64_slerp_make(const BGC_FP64_Versor* start, const BGC_FP64_Versor* augment, BGC_FP64_Slerp* slerp);
|
||||
|
||||
inline void bgc_fp32_slerp_make_full(const BGC_FP32_Versor* start, const BGC_FP32_Versor* end, BGC_FP32_Slerp* slerp)
|
||||
inline void bgc_fp32_slerp_make_full(BGC_FP32_Slerp* slerp, const BGC_FP32_Versor* start, const BGC_FP32_Versor* end)
|
||||
{
|
||||
BGC_FP32_Versor augment;
|
||||
|
||||
bgc_fp32_versor_exclude(end, start, &augment);
|
||||
bgc_fp32_versor_exclude(&augment, end, start);
|
||||
|
||||
bgc_fp32_slerp_make(start, &augment, slerp);
|
||||
bgc_fp32_slerp_make(slerp, start, &augment);
|
||||
}
|
||||
|
||||
inline void bgc_fp64_slerp_make_full(const BGC_FP64_Versor* start, const BGC_FP64_Versor* end, BGC_FP64_Slerp* slerp)
|
||||
inline void bgc_fp64_slerp_make_full(BGC_FP64_Slerp* slerp, const BGC_FP64_Versor* start, const BGC_FP64_Versor* end)
|
||||
{
|
||||
BGC_FP64_Versor augment;
|
||||
|
||||
bgc_fp64_versor_exclude(end, start, &augment);
|
||||
bgc_fp64_versor_exclude(&augment, end, start);
|
||||
|
||||
bgc_fp64_slerp_make(start, &augment, slerp);
|
||||
bgc_fp64_slerp_make(slerp, start, &augment);
|
||||
}
|
||||
|
||||
inline void bgc_fp32_slerp_make_shortened(const BGC_FP32_Versor* start, const BGC_FP32_Versor* end, BGC_FP32_Slerp* slerp)
|
||||
inline void bgc_fp32_slerp_make_shortened(BGC_FP32_Slerp* slerp, const BGC_FP32_Versor* start, const BGC_FP32_Versor* end)
|
||||
{
|
||||
BGC_FP32_Versor augment;
|
||||
|
||||
bgc_fp32_versor_exclude(end, start, &augment);
|
||||
bgc_fp32_versor_exclude(&augment, end, start);
|
||||
bgc_fp32_versor_shorten(&augment);
|
||||
|
||||
bgc_fp32_slerp_make(start, &augment, slerp);
|
||||
bgc_fp32_slerp_make(slerp, start, &augment);
|
||||
}
|
||||
|
||||
inline void bgc_fp64_slerp_make_shortened(const BGC_FP64_Versor* start, const BGC_FP64_Versor* end, BGC_FP64_Slerp* slerp)
|
||||
inline void bgc_fp64_slerp_make_shortened(BGC_FP64_Slerp* slerp, const BGC_FP64_Versor* start, const BGC_FP64_Versor* end)
|
||||
{
|
||||
BGC_FP64_Versor augment;
|
||||
|
||||
bgc_fp64_versor_exclude(end, start, &augment);
|
||||
bgc_fp64_versor_exclude(&augment, end, start);
|
||||
bgc_fp64_versor_shorten(&augment);
|
||||
|
||||
bgc_fp64_slerp_make(start, &augment, slerp);
|
||||
bgc_fp64_slerp_make(slerp, start, &augment);
|
||||
}
|
||||
|
||||
inline void bgc_fp32_slerp_get_phase_versor(const BGC_FP32_Slerp* slerp, const float phase, BGC_FP32_Versor* result)
|
||||
inline void bgc_fp32_slerp_get_phase_versor(BGC_FP32_Versor* versor, const BGC_FP32_Slerp* slerp, const float phase)
|
||||
{
|
||||
const float angle = slerp->radians * phase;
|
||||
const float cosine = cosf(angle);
|
||||
const float sine = sinf(angle);
|
||||
|
||||
bgc_fp32_versor_make(
|
||||
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,
|
||||
result
|
||||
slerp->x3_cos_weight * cosine + slerp->x3_sin_weight * sine
|
||||
);
|
||||
}
|
||||
|
||||
inline void bgc_fp64_slerp_get_phase_versor(const BGC_FP64_Slerp* slerp, const double phase, BGC_FP64_Versor* result)
|
||||
inline void bgc_fp64_slerp_get_phase_versor(BGC_FP64_Versor* versor, const BGC_FP64_Slerp* slerp, const double phase)
|
||||
{
|
||||
const double angle = slerp->radians * phase;
|
||||
const double cosine = cos(angle);
|
||||
const double sine = sin(angle);
|
||||
|
||||
bgc_fp64_versor_make(
|
||||
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,
|
||||
result
|
||||
slerp->x3_cos_weight * cosine + slerp->x3_sin_weight * sine
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue