Добавлеие позиционирования и аффинного преобразования для 2-мерного пространства, добавление функций для аффинных преобразований и позиционирования

This commit is contained in:
Andrey Pokidov 2026-01-27 18:04:38 +07:00
parent 3c2b89f369
commit 101df9f089
12 changed files with 734 additions and 322 deletions

View file

@ -42,6 +42,10 @@
<Compiler>
<Add option="-Wall" />
</Compiler>
<Unit filename="affine3.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="affine3.h" />
<Unit filename="main.c">
<Option compilerVar="CC" />
</Unit>

28
basic-geometry/affine2.c Normal file
View file

@ -0,0 +1,28 @@
#include "affine2.h"
extern inline void bgc_affine2_reset_fp32(BgcAffine2FP32 * affine);
extern inline void bgc_affine2_reset_fp64(BgcAffine2FP64 * affine);
extern inline void bgc_affine2_make_fp32(const BgcMatrix2x2FP32 * distortion, const BgcVector2FP32 * shift, BgcAffine2FP32 * affine);
extern inline void bgc_affine2_make_fp64(const BgcMatrix2x2FP64 * distortion, const BgcVector2FP64 * shift, BgcAffine2FP64 * affine);
extern inline void bgc_affine2_copy_fp32(const BgcAffine2FP32 * source, BgcAffine2FP32 * destination);
extern inline void bgc_affine2_copy_fp64(const BgcAffine2FP64 * source, BgcAffine2FP64 * destination);
extern inline void bgc_affine2_convert_fp64_to_fp32(const BgcAffine2FP64 * source, BgcAffine2FP32 * destination);
extern inline void bgc_affine2_convert_fp32_to_fp64(const BgcAffine2FP32 * source, BgcAffine2FP64 * destination);
extern inline int bgc_affine2_invert_fp32(BgcAffine2FP32 * affine);
extern inline int bgc_affine2_invert_fp64(BgcAffine2FP64 * affine);
extern inline int bgc_affine2_get_inverse_fp32(const BgcAffine2FP32 * source, BgcAffine2FP32 * destination);
extern inline int bgc_affine2_get_inverse_fp64(const BgcAffine2FP64 * source, BgcAffine2FP64 * destination);
extern inline void bgc_affine2_combine_fp32(const BgcAffine2FP32 * parent, const BgcAffine2FP32 * child, BgcAffine2FP32 * combination);
extern inline void bgc_affine2_combine_fp64(const BgcAffine2FP64 * parent, const BgcAffine2FP64 * child, BgcAffine2FP64 * combination);
extern inline void bgc_affine2_transform_point_fp32(const BgcAffine2FP32 * affine, const BgcVector2FP32 * initial_point, BgcVector2FP32 * transformed_point);
extern inline void bgc_affine2_transform_point_fp64(const BgcAffine2FP64 * affine, const BgcVector2FP64 * initial_point, BgcVector2FP64 * transformed_point);
extern inline void bgc_affine2_transform_vector_fp32(const BgcAffine2FP32 * affine, const BgcVector2FP32 * initial_vector, BgcVector2FP32 * transformed_vector);
extern inline void bgc_affine2_transform_vector_fp64(const BgcAffine2FP64 * affine, const BgcVector2FP64 * initial_vector, BgcVector2FP64 * transformed_vector);

175
basic-geometry/affine2.h 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,175 @@
#ifndef _BGC_AFFINE2_H_INCLUDED_
#define _BGC_AFFINE2_H_INCLUDED_
#include "vector2.h"