Добавление базисов как вспомогательной структуры
This commit is contained in:
parent
9d7011e81e
commit
e6a94ab8d9
9 changed files with 345 additions and 14 deletions
|
|
@ -21,6 +21,7 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="angle.h" />
|
<ClInclude Include="angle.h" />
|
||||||
<ClInclude Include="basic-geometry.h" />
|
<ClInclude Include="basic-geometry.h" />
|
||||||
|
<ClInclude Include="basis3.h" />
|
||||||
<ClInclude Include="complex.h" />
|
<ClInclude Include="complex.h" />
|
||||||
<ClInclude Include="cotes-number.h" />
|
<ClInclude Include="cotes-number.h" />
|
||||||
<ClInclude Include="matrix2x2.h" />
|
<ClInclude Include="matrix2x2.h" />
|
||||||
|
|
@ -40,6 +41,7 @@
|
||||||
<ClCompile Include="angle.c" />
|
<ClCompile Include="angle.c" />
|
||||||
<ClInclude Include="complex.c" />
|
<ClInclude Include="complex.c" />
|
||||||
<ClInclude Include="cotes-number.c" />
|
<ClInclude Include="cotes-number.c" />
|
||||||
|
<ClCompile Include="basis3.c" />
|
||||||
<ClCompile Include="utilities.c" />
|
<ClCompile Include="utilities.c" />
|
||||||
<ClCompile Include="matrix2x2.c" />
|
<ClCompile Include="matrix2x2.c" />
|
||||||
<ClCompile Include="matrix2x3.c" />
|
<ClCompile Include="matrix2x3.c" />
|
||||||
|
|
|
||||||
|
|
@ -69,6 +69,9 @@
|
||||||
<ClInclude Include="slerp.h">
|
<ClInclude Include="slerp.h">
|
||||||
<Filter>Файлы заголовков</Filter>
|
<Filter>Файлы заголовков</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="basis3.h">
|
||||||
|
<Filter>Файлы заголовков</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="angle.c">
|
<ClCompile Include="angle.c">
|
||||||
|
|
@ -110,5 +113,8 @@
|
||||||
<ClCompile Include="slerp.c">
|
<ClCompile Include="slerp.c">
|
||||||
<Filter>Исходные файлы</Filter>
|
<Filter>Исходные файлы</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="basis3.c">
|
||||||
|
<Filter>Исходные файлы</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
232
basic-geometry/basis3.c
Normal file
232
basic-geometry/basis3.c
Normal file
|
|
@ -0,0 +1,232 @@
|
||||||
|
#include <math.h>
|
||||||
|
#include "./basis3.h"
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
int e1, e2, e3;
|
||||||
|
} _BgcBasis3State;
|
||||||
|
|
||||||
|
static inline void _bgc_basis3_state_reset(_BgcBasis3State* state)
|
||||||
|
{
|
||||||
|
state->e1 = 0;
|
||||||
|
state->e2 = 0;
|
||||||
|
state->e3 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int _bgc_basis3_validate_directions(const int primary_direction, const int auxiliary_direction)
|
||||||
|
{
|
||||||
|
if (!bgc_is_correct_direction(primary_direction)) {
|
||||||
|
return BGC_ERROR_BASIS3_PRIMARY_DIRECTION_UNKNOWN;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!bgc_is_correct_direction(auxiliary_direction)) {
|
||||||
|
return BGC_ERROR_BASIS3_AUXILIARY_DIRECTION_UNKNOWN;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (primary_direction == auxiliary_direction || primary_direction == -auxiliary_direction) {
|
||||||
|
return BGC_ERROR_BASIS3_PRIMARY_AUXILIARY_PARALLEL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return BGC_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void _bgc_basis3_load_axis_fp32(const int direction, const BgcVector3FP32* axis, _BgcBasis3State* state, BgcBasis3FP32* basis)
|
||||||
|
{
|
||||||
|
switch (direction) {
|
||||||
|
case BGC_DIRECTION_X1:
|
||||||