Уменшение количества внутренних методов за счёт методов получения матрицы поворота для веросора; исправления в методах проверки матрицы поворота; добавление методов вычисления поворота (turn3) по матрице поворота 3x3

This commit is contained in:
Andrey Pokidov 2026-04-03 02:22:11 +07:00
parent abf99a7126
commit 54c762da14
9 changed files with 448 additions and 351 deletions

View file

@ -9,7 +9,9 @@
#include <time.h>
#endif // _WINDOWS_
#include "printing_utils.h"
#include "vector3_pair_difference.h"
#include "affine3.h"
typedef struct {
BGC_FP32_Turn3 versor1, versor2, result;
@ -132,20 +134,56 @@ int main() {
}
*/
void test_fp32_quaternion_set_matrix()
{
BGC_FP32_Turn3 turn;
BGC_FP32_Matrix3x3 rotation;
BGC_FP32_Quaternion quaternion;
bgc_fp32_turn3_set_rotation(&turn, 1.0f, 1.0f, 1.0f, 120.0f, BGC_ANGLE_UNIT_DEGREES);
#include "affine3.h"
bgc_fp32_turn3_get_rotation_matrix(&rotation, &turn);
if (bgc_fp32_quaternion_set_rotation_matrix(&quaternion, &rotation) == BGC_FAILURE) {
printf("Failed\n");
return;
}
print_fp32_quaternion(&quaternion);
print_fp32_quaternion(&turn._versor);
}
void test_fp64_quaternion_set_matrix()
{
BGC_FP64_Turn3 turn;
BGC_FP64_Matrix3x3 rotation;
BGC_FP64_Quaternion quaternion;
bgc_fp64_turn3_set_rotation(&turn, 1.0, 1.0, 1.0, 120.0, BGC_ANGLE_UNIT_DEGREES);
bgc_fp64_turn3_get_rotation_matrix(&rotation, &turn);
if (bgc_fp64_quaternion_set_rotation_matrix(&quaternion, &rotation) == BGC_FAILURE) {
printf("Failed\n");
return;
}
print_fp64_quaternion(&quaternion);
print_fp64_quaternion(&turn._versor);
}
int main()
{
//test_fp32_pair_difference();
test_fp64_pair_difference();
//test_fp64_pair_difference();
//printf("Affine3 performance test: %f\n", test_bgc_affine3_performance(10000000, 10));
//printf("sizeof(BGC_FP32_Affine3) = %zu\n", sizeof(BGC_FP32_Affine3));
//printf("offsetof(shift) = %zu\n", offsetof(BGC_FP32_Affine3, shift));
//printf("sizeof(BGC_FP32_Matrix3x3) = %zu\n", sizeof(BGC_FP32_Matrix3x3));
test_fp32_quaternion_set_matrix();
return 0;
}