Добавление базисов как вспомогательной структуры

This commit is contained in:
Andrey Pokidov 2025-03-21 03:34:20 +07:00
parent 9d7011e81e
commit e6a94ab8d9
9 changed files with 345 additions and 14 deletions

View file

@ -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" />

View file

@ -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
View file

Internal server error - Personal Git Server: Beyond coding. We Forge.

500

Internal server error

Forgejo version: 11.0.1+gitea-1.22.0

@ -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: