Добавление дуальных чисел, дуальных векторов (3D) и дуальных версоров
This commit is contained in:
parent
043cc72c81
commit
3f96b661a9
8 changed files with 440 additions and 0 deletions
70
basic-geometry/dual-number.h
Normal file
70
basic-geometry/dual-number.h
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
#ifndef _BGC_DUAL_NUMBER_H_
|
||||
#define _BGC_DUAL_NUMBER_H_
|
||||
|
||||
// =================== Types ==================== //
|
||||
|
||||
typedef struct {
|
||||
float real, dual;
|
||||
} BGC_FP32_DualNumber;
|
||||
|
||||
typedef struct {
|
||||
double real, dual;
|
||||
} BGC_FP64_DualNumber;
|
||||
|
||||
// =================== Reset ==================== //
|
||||
|
||||
inline void bgc_fp32_dual_number_reset(BGC_FP32_DualNumber* number)
|
||||
{
|
||||
number->real = 0.0f;
|
||||
number->dual = 0.0f;
|
||||
}
|
||||
|
||||
inline void bgc_fp64_dual_number_reset(BGC_FP64_DualNumber* number)
|
||||
{
|
||||
number->real = 0.0;
|
||||
number->dual = 0.0;
|
||||
}
|
||||
|
||||
// ==================== Make ==================== //
|
||||
|
||||
inline void bgc_fp32_dual_number_make(BGC_FP32_DualNumber* number, const float real, const float dual)
|
||||
{
|
||||
number->real = real;
|
||||
number->dual = dual;
|
||||
}
|
||||
|
||||
inline void bgc_fp64_dual_number_make(BGC_FP64_DualNumber* number, const double real, const double dual)
|
||||
{
|
||||
number->real = real;
|
||||
number->dual = dual;
|
||||
}
|
||||
|
||||
// ==================== Copy ==================== //
|
||||
|
||||
inline void bgc_fp32_dual_number_copy(BGC_FP32_DualNumber* destination, const BGC_FP32_DualNumber* source)
|
||||
{
|
||||
destination->real = source->real;
|
||||
destination->dual = source->dual;
|
||||
}
|
||||
|
||||
inline void bgc_fp64_dual_number_copy(BGC_FP64_DualNumber* destination, const BGC_FP64_DualNumber* source)
|
||||
{
|
||||
destination->real = source->real;
|
||||
destination->dual = source->dual;
|
||||
}
|
||||
|
||||
// ==================== Swap ==================== //
|
||||
|
||||
inline void bgc_fp32_dual_number_swap(BGC_FP32_DualNumber* first, BGC_FP32_DualNumber* second)
|
||||
{
|
||||
first->real = second->real;
|
||||
first->dual = second->dual;
|
||||
}
|
||||
|
||||
inline void bgc_fp64_dual_number_swap(BGC_FP64_DualNumber* first, BGC_FP64_DualNumber* second)
|
||||
{
|
||||
first->real = second->real;
|
||||
first->dual = second->dual;
|
||||
}
|
||||
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue