Уменшение количества внутренних методов за счёт методов получения матрицы поворота для веросора; исправления в методах проверки матрицы поворота; добавление методов вычисления поворота (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

@ -129,28 +129,20 @@ inline int bgc_fp64_matrix2x2_is_singular(const BGC_FP64_Matrix2x2* const matrix
inline int bgc_fp32_matrix2x2_is_rotation(const BGC_FP32_Matrix2x2* const matrix)
{
BGC_FP32_Matrix2x2 product;
const float r1r1 = matrix->r1c1 * matrix->r1c1 + matrix->r1c2 * matrix->r1c2;
const float r1r2 = matrix->r1c1 * matrix->r2c1 + matrix->r1c2 * matrix->r2c2;
const float r2r2 = matrix->r2c1 * matrix->r2c1 + matrix->r2c2 * matrix->r2c2;
product.r1c1 = matrix->r1c1 * matrix->r1c1 + matrix->r1c2 * matrix->r2c1;
product.r1c2 = matrix->r1c1 * matrix->r1c2 + matrix->r1c2 * matrix->r2c2;
product.r2c1 = matrix->r2c1 * matrix->r1c1 + matrix->r2c2 * matrix->r2c1;
product.r2c2 = matrix->r2c1 * matrix->r1c2 + matrix->r2c2 * matrix->r2c2;
return bgc_fp32_matrix2x2_is_identity(&product);
return bgc_fp32_is_square_unit(r1r1) && bgc_fp32_is_square_unit(r2r2) && bgc_fp32_is_zero(r1r2);
}
inline int bgc_fp64_matrix2x2_is_rotation(const BGC_FP64_Matrix2x2* const matrix)
{
BGC_FP64_Matrix2x2 product;
const double r1r1 = matrix->r1c1 * matrix->r1c1 + matrix->r1c2 * matrix->r1c2;
const double r1r2 = matrix->r1c1 * matrix->r2c1 + matrix->r1c2 * matrix->r2c2;
const double r2r2 = matrix->r2c1 * matrix->r2c1 + matrix->r2c2 * matrix->r2c2;
product.r1c1 = matrix->r1c1 * matrix->r1c1 + matrix->r1c2 * matrix->r2c1;
product.r1c2 = matrix->r1c1 * matrix->r1c2 + matrix->r1c2 * matrix->r2c2;
product.r2c1 = matrix->r2c1 * matrix->r1c1 + matrix->r2c2 * matrix->r2c1;
product.r2c2 = matrix->r2c1 * matrix->r1c2 + matrix->r2c2 * matrix->r2c2;
return bgc_fp64_matrix2x2_is_identity(&product);
return bgc_fp64_is_square_unit(r1r1) && bgc_fp64_is_square_unit(r2r2) && bgc_fp64_is_zero(r1r2);
}
// ==================== Copy ==================== //