Развитие дуальный чисел, векторов и кватернионов, а также гомогенных векторов и матриц
This commit is contained in:
parent
3f96b661a9
commit
b87518cd3f
21 changed files with 1787 additions and 1511 deletions
|
|
@ -41,6 +41,34 @@ inline void bgc_fp64_dual_vector3_make(BGC_FP64_DualVector3* vector, const BGC_F
|
|||
bgc_fp64_vector3_copy(&vector->dual, dual);
|
||||
}
|
||||
|
||||
// ==================== Copy ==================== //
|
||||
|
||||
inline void bgc_fp32_dual_vector3_copy(BGC_FP32_DualVector3* destination, const BGC_FP32_DualVector3* source)
|
||||
{
|
||||
bgc_fp32_vector3_copy(&destination->real, &source->real);
|
||||
bgc_fp32_vector3_copy(&destination->dual, &source->dual);
|
||||
}
|
||||
|
||||
inline void bgc_fp64_dual_vector3_copy(BGC_FP64_DualVector3* destination, const BGC_FP64_DualVector3* source)
|
||||
{
|
||||
bgc_fp64_vector3_copy(&destination->real, &source->real);
|
||||
bgc_fp64_vector3_copy(&destination->dual, &source->dual);
|
||||
}
|
||||
|
||||
// ==================== Swap ==================== //
|
||||
|
||||
inline void bgc_fp32_dual_vector3_swap(BGC_FP32_DualVector3* first, BGC_FP32_DualVector3* second)
|
||||
{
|
||||
bgc_fp32_vector3_swap(&first->real, &second->real);
|
||||
bgc_fp32_vector3_swap(&first->dual, &second->dual);
|
||||
}
|
||||
|
||||
inline void bgc_fp64_dual_vector3_swap(BGC_FP64_DualVector3* first, BGC_FP64_DualVector3* second)
|
||||
{
|
||||
bgc_fp64_vector3_swap(&first->real, &second->real);
|
||||
bgc_fp64_vector3_swap(&first->dual, &second->dual);
|
||||
}
|
||||
|
||||
// ================== Set Real ================== //
|
||||
|
||||
inline void bgc_fp32_dual_vector3_set_real_values(BGC_FP32_DualVector3* vector, const float x1, const float x2, const float x3)
|
||||
|
|
@ -115,6 +143,32 @@ inline void bgc_fp64_dual_vector3_subtract(BGC_FP64_DualVector3* difference, con
|
|||
bgc_fp64_vector3_subtract(&difference->dual, &minuend->dual, &subtrahend->dual);
|
||||
}
|
||||
|
||||
// ================== Multiply ================== //
|
||||
|
||||
inline void bgc_fp32_dual_vector3_multiply(BGC_FP32_DualVector3* product, const BGC_FP32_DualVector3* multiplicand, const float multiplier)
|
||||
{
|
||||
bgc_fp32_vector3_multiply(&product->real, &multiplicand->real, multiplier);
|
||||
bgc_fp32_vector3_multiply(&product->dual, &multiplicand->dual, multiplier);
|
||||
}
|
||||
|
||||
inline void bgc_fp64_dual_vector3_multiply(BGC_FP64_DualVector3* product, const BGC_FP64_DualVector3* multiplicand, const double multiplier)
|
||||
{
|
||||
bgc_fp64_vector3_multiply(&product->real, &multiplicand->real, multiplier);
|
||||
bgc_fp64_vector3_multiply(&product->dual, &multiplicand->dual, multiplier);
|
||||
}
|
||||
|
||||
// =================== Divide =================== //
|
||||
|
||||
inline void bgc_fp32_dual_vector3_divide(BGC_FP32_DualVector3* quotient, const BGC_FP32_DualVector3* dividend, const float divisor)
|
||||
{
|
||||
bgc_fp32_dual_vector3_multiply(quotient, dividend, 1.0f / divisor);
|
||||
}
|
||||
|
||||
inline void bgc_fp64_dual_vector3_divide(BGC_FP64_DualVector3* quotient, const BGC_FP64_DualVector3* dividend, const double divisor)
|
||||
{
|
||||
bgc_fp64_dual_vector3_multiply(quotient, dividend, 1.0 / divisor);
|
||||
}
|
||||
|
||||
// ================== Average2 ================== //
|
||||
|
||||
inline void bgc_fp32_dual_vector3_get_mean2(BGC_FP32_DualVector3* mean, const BGC_FP32_DualVector3* vector1, const BGC_FP32_DualVector3* vector2)
|
||||
|
|
@ -133,14 +187,14 @@ inline void bgc_fp64_dual_vector3_get_mean2(BGC_FP64_DualVector3* mean, const BG
|
|||
|
||||
inline void bgc_fp32_dual_vector3_get_mean3(BGC_FP32_DualVector3* mean, const BGC_FP32_DualVector3* vector1, const BGC_FP32_DualVector3* vector2, const BGC_FP32_DualVector3* vector3)
|
||||
{
|
||||
bgc_fp32_vector3_get_mean2(&mean->real, &vector1->real, &vector2->real, &vector3->real);
|
||||
bgc_fp32_vector3_get_mean2(&mean->dual, &vector1->dual, &vector2->dual, &vector3->dual);
|
||||
bgc_fp32_vector3_get_mean3(&mean->real, &vector1->real, &vector2->real, &vector3->real);
|
||||
bgc_fp32_vector3_get_mean3(&mean->dual, &vector1->dual, &vector2->dual, &vector3->dual);
|
||||
}
|
||||
|
||||
inline void bgc_fp64_dual_vector3_get_mean3(BGC_FP64_DualVector3* mean, const BGC_FP64_DualVector3* vector1, const BGC_FP64_DualVector3* vector2, const BGC_FP64_DualVector3* vector3)
|
||||
{
|
||||
bgc_fp64_vector3_get_mean2(&mean->real, &vector1->real, &vector2->real, &vector3->real);
|
||||
bgc_fp64_vector3_get_mean2(&mean->dual, &vector1->dual, &vector2->dual, &vector3->dual);
|
||||
bgc_fp64_vector3_get_mean3(&mean->real, &vector1->real, &vector2->real, &vector3->real);
|
||||
bgc_fp64_vector3_get_mean3(&mean->dual, &vector1->dual, &vector2->dual, &vector3->dual);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue