From 3b6efaafa9a83392d0a79aefe515ad5134f4f0a4 Mon Sep 17 00:00:00 2001 From: Andrey Pokidov Date: Tue, 14 Jan 2025 19:25:04 +0700 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B4=D0=BE=D0=BB=D0=B6?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B8=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D1=82=D0=B8?= =?UTF-8?q?=D0=BF=D0=BE=D0=B2=20=D0=B8=20=D1=84=D1=83=D0=BD=D0=BA=D1=86?= =?UTF-8?q?=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- basic-geometry-dev/basic-geometry-dev.cbp | 1 - basic-geometry-dev/main.c | 265 ++++------------------ basic-geometry-test/fp32_vector2_test.c | 48 ++-- basic-geometry-test/fp32_vector2_test.h | 8 +- basic-geometry-test/main.c | 2 +- basic-geometry/angle.h | 76 +++---- basic-geometry/basis.h | 8 +- basic-geometry/matrix2x2.h | 112 ++++----- basic-geometry/matrix2x3.h | 76 +++---- basic-geometry/matrix3x2.h | 76 +++---- basic-geometry/matrix3x3.c | 16 +- basic-geometry/matrix3x3.h | 112 ++++----- basic-geometry/matrixes.c | 28 +-- basic-geometry/matrixes.h | 48 ++-- basic-geometry/quaternion.h | 104 ++++----- basic-geometry/rotation3.c | 4 +- basic-geometry/rotation3.h | 32 +-- basic-geometry/tangent.c | 4 +- basic-geometry/tangent.h | 72 +++--- basic-geometry/vector2.c | 16 +- basic-geometry/vector2.h | 164 ++++++------- basic-geometry/vector3.c | 16 +- basic-geometry/vector3.h | 260 ++++++++++++--------- basic-geometry/versor.c | 24 +- basic-geometry/versor.h | 112 ++++----- 25 files changed, 768 insertions(+), 916 deletions(-) diff --git a/basic-geometry-dev/basic-geometry-dev.cbp b/basic-geometry-dev/basic-geometry-dev.cbp index 2dde9b3..d894694 100644 --- a/basic-geometry-dev/basic-geometry-dev.cbp +++ b/basic-geometry-dev/basic-geometry-dev.cbp @@ -31,7 +31,6 @@ - diff --git a/basic-geometry-dev/main.c b/basic-geometry-dev/main.c index 0c1224c..56e0f53 100644 --- a/basic-geometry-dev/main.c +++ b/basic-geometry-dev/main.c @@ -10,19 +10,19 @@ #endif // _WINDOWS_ typedef struct { -// fp32_versor_t versor1, versor2, result; - fp32_matrix3x3_t matrix; - fp32_vector3_t vector1, vector2; -} fp32_structure_t; + versor_fp32_t versor1, versor2, result; + matrix3x3_fp32_t matrix; + vector3_fp32_t vector1, vector2; +} structure_fp32_t; -fp32_structure_t* allocate_structures(const unsigned int amount) +structure_fp32_t* allocate_structures(const unsigned int amount) { - return calloc(amount, sizeof(fp32_structure_t)); + return calloc(amount, sizeof(structure_fp32_t)); } -fp32_structure_t* make_structures(const unsigned int amount) +structure_fp32_t* make_structures(const unsigned int amount) { - fp32_structure_t* list = allocate_structures(amount); + structure_fp32_t* list = allocate_structures(amount); if (list == 0) { return 0; @@ -31,8 +31,7 @@ fp32_structure_t* make_structures(const unsigned int amount) const float multiplier = 2.0f / RAND_MAX; for (unsigned int i = 0; i < amount; i++) { - /* - fp32_versor_set_values( + versor_fp32_set_values( rand() * multiplier - 1.0f, rand() * multiplier - 1.0f, rand() * multiplier - 1.0f, @@ -40,7 +39,7 @@ fp32_structure_t* make_structures(const unsigned int amount) &list[i].versor1 ); - fp32_versor_set_values( + versor_fp32_set_values( rand() * multiplier - 1.0f, rand() * multiplier - 1.0f, rand() * multiplier - 1.0f, @@ -48,54 +47,54 @@ fp32_structure_t* make_structures(const unsigned int amount) &list[i].versor2 ); - fp32_versor_reset(&list[i].result); -*/ - fp32_matrix3x3_set_to_identity(&list[i].matrix); + versor_reset_fp32(&list[i].result); - fp32_vector3_set_values( + matrix3x3_fp32_set_to_identity(&list[i].matrix); + + vector3_set_fp32( rand() * multiplier - 1.0f, rand() * multiplier - 1.0f, rand() * multiplier - 1.0f, &list[i].vector1 ); - fp32_vector3_reset(&list[i].vector2); + vector3_reset_fp32(&list[i].vector2); } return list; } -void print_versor(const fp32_versor_t* versor) +void print_versor_fp32(const versor_fp32_t* versor) { printf("Versor (%f, %f, %f, %f)\n", versor->s0, versor->x1, versor->x2, versor->x3); } -void print_vector(const fp32_vector3_t* vector) +void print_versor_fp64(const versor_fp64_t* versor) { - printf("(%f, %f, %f) / %f\n", vector->x1, vector->x2, vector->x3, fp32_vector3_get_modulus(vector)); + printf("Versor (%lf, %lf, %lf, %lf)\n", versor->s0, versor->x1, versor->x2, versor->x3); } -void item_work(fp32_structure_t* item) +void print_vector_fp32(const vector3_fp32_t* vector) { - //fp32_versor_combine(&item->versor1, &item->versor1, &item->result); - //fp32_versor_make_rotation_matrix(&item->result, &item->matrix); - fp32_matrix3x3_right_product(&item->matrix, &item->vector1, &item->vector2); + printf("(%f, %f, %f) / %f\n", vector->x1, vector->x2, vector->x3, vector3_get_modulus_fp32(vector)); } -void circle_work(const unsigned int amount, fp32_structure_t* list) +void print_vector_fp64(const vector3_fp64_t* vector) { - for (unsigned int i = 0; i < amount; i++) { - //fp32_versor_combine(&list[i].versor1, &list[i].versor1, &list[i].result); - //fp32_versor_make_rotation_matrix(&list[i].result, &list[i].matrix); - fp32_matrix3x3_right_product(&list[i].matrix, &list[i].vector1, &list[i].vector2); - //fp32_versor_turn(&list[i].result, &list[i].vector1, &list[i].vector2); - } + printf("(%lf, %lf, %lf) / %lf\n", vector->x1, vector->x2, vector->x3, vector3_get_modulus_fp64(vector)); +} + +void item_work(structure_fp32_t* item) +{ + versor_fp32_combine(&item->versor1, &item->versor1, &item->result); + versor_fp32_make_rotation_matrix(&item->result, &item->matrix); + matrix3x3_fp32_right_product(&item->matrix, &item->vector1, &item->vector2); } int main() { const unsigned int amount = 1000000; - fp32_structure_t* list; + structure_fp32_t* list; #ifdef _WIN64 ULONGLONG now, start, end; @@ -121,14 +120,13 @@ int main() clock_gettime(CLOCK_REALTIME, &start); #endif // _WIN64 - for (int j = 0; j < 1000; j++) { - //circle(amount, list); - for (unsigned int i = 0; i < amount; i++) { + for (unsigned int i = 0; i < amount; i++) { + for (int j = 0; j < 1000; j++) { //item_work(list + i); - //fp32_versor_combine(&list[i].versor1, &list[i].versor1, &list[i].result); - //fp32_versor_make_rotation_matrix(&list[i].result, &list[i].matrix); - fp32_matrix3x3_right_product(&list[i].matrix, &list[i].vector1, &list[i].vector2); - //fp32_versor_turn(&list[i].result, &list[i].vector1, &list[i].vector2); + versor_fp32_combine(&list[i].versor1, &list[i].versor2, &list[i].result); + versor_fp32_make_rotation_matrix(&list[i].result, &list[i].matrix); + matrix3x3_fp32_right_product(&list[i].matrix, &list[i].vector1, &list[i].vector2); + //versor_fp32_turn(&list[i].result, &list[i].vector1, &list[i].vector2); } } @@ -142,196 +140,11 @@ int main() printf("Time: %lf\n", (end.tv_sec - start.tv_sec) * 1000.0 + (end.tv_nsec - start.tv_nsec) * 0.000001); #endif // _WIN64 - //print_versor(&list[10].versor1); - //print_versor(&list[10].versor2); - //print_versor(&list[10].result); + //print_versor_fp32(&list[10].versor1); + //print_versor_fp32(&list[10].versor2); + //print_versor_fp32(&list[10].result); free(list); return 0; } - -/* -fp32_vector3_t* allocate_vectors3(const unsigned int amount) -{ - return calloc(amount, sizeof(fp32_vector3_t)); -} - -fp32_vector3_t* make_zero_vectors3(const unsigned int amount) -{ - fp32_vector3_t* list = allocate_vectors3(amount); - - if (list == 0) { - return 0; - } - - for (unsigned int i = 0; i < amount; i++) { - fp32_vector3_reset(&list[i]); - } - - return list; -} - -fp32_vector3_t* make_random_vectors3(const unsigned int amount) -{ - fp32_vector3_t* list = allocate_vectors3(amount); - - if (list == 0) { - return 0; - } - - const float multiplier = 2.0f / RAND_MAX; - - for (unsigned int i = 0; i < amount; i++) { - list[i].x1 = rand() * multiplier - 1.0f; - list[i].x2 = rand() * multiplier - 1.0f; - list[i].x3 = rand() * multiplier - 1.0f; - } - - return list; -} - -fp32_versor_t* allocate_versors(const unsigned int amount) -{ - return calloc(amount, sizeof(fp32_versor_t)); -} - -fp32_versor_t * make_zero_versors(const unsigned int amount) -{ - fp32_versor_t * list = allocate_versors(amount); - - if (list == 0) { - return 0; - } - - for (unsigned int i = 0; i < amount; i++) { - fp32_versor_reset(&list[i]); - } - - return list; -} - -fp32_versor_t * make_random_versors(const unsigned int amount) -{ - fp32_versor_t * list = allocate_versors(amount); - - if (list == 0) { - return 0; - } - - const float multiplier = 2.0f / RAND_MAX; - - for (unsigned int i = 0; i < amount; i++) { - fp32_versor_set_values( - rand() * multiplier - 1.0f, - rand() * multiplier - 1.0f, - rand() * multiplier - 1.0f, - rand() * multiplier - 1.0f, - &list[i] - ); - } - - return list; -} - -int main() -{ - const unsigned int amount = 1000000; - -#ifdef _WIN64 - ULONGLONG now, start, end; - now = GetTickCount64(); - srand((unsigned int)(now & 0xfffffff)); -#else - struct timespec now, start, end; - clock_gettime(0, &now); - srand((unsigned int)(now.tv_nsec & 0xfffffff)); -#endif // _WIN64 - - fp32_versor_t * versors1 = make_random_versors(amount); - - if (versors1 == 0) { - printf("Cannot allocate memory for versors1"); - return 0; - } - - fp32_versor_t * versors2 = make_random_versors(amount); - - if (versors2 == 0) { - printf("Cannot allocate memory for versors2"); - free(versors1); - return 0; - } - - fp32_versor_t * results = make_zero_versors(amount); - - if (results == 0) { - printf("Cannot allocate memory for results"); - free(versors2); - free(versors1); - return 0; - } - - fp32_matrix3x3_t* matrixes =malloc(amount * sizeof(fp32_matrix3x3_t)); - - if (matrixes == 0) { - printf("Cannot allocate memory for matrixes"); - free(results); - free(versors2); - free(versors1); - return 0; - } - - fp32_vector3_t* vectors = make_random_vectors3(amount); - - if (results == 0) { - printf("Cannot allocate memory for result vectors"); - free(matrixes); - free(results); - free(versors2); - free(versors1); - return 0; - } - -#ifdef _WIN64 - end = GetTickCount64(); - printf("Setup time: %lld\n", end - now); - - start = GetTickCount64(); -#else - clock_gettime(CLOCK_REALTIME, &end); - printf("Time: %lf\n", (end.tv_sec - now.tv_sec) * 1000.0 + (end.tv_nsec - now.tv_nsec) * 0.000001); - - clock_gettime(CLOCK_REALTIME, &start); -#endif // _WIN64 - for (int j = 0; j < 1000; j++) { - for (unsigned int i = 0; i < amount; i++) { - fp32_versor_combine(&versors1[i], &versors2[i], &results[i]); - fp32_versor_make_rotation_matrix(&versors1[i], &matrixes[i]); - fp32_matrix3x3_right_product(&matrixes[i], &vectors[i], &vectors[i]); - //fp32_versor_turn(&results[i], &vectors[i], &vectors[i]); - } - } - -#ifdef _WIN64 - end = GetTickCount64(); - - printf("Time: %lld\n", end - start); -#else - clock_gettime(CLOCK_REALTIME, &end); - - printf("Time: %lf\n", (end.tv_sec - start.tv_sec) * 1000.0 + (end.tv_nsec - start.tv_nsec) * 0.000001); -#endif // _WIN64 - - print_versor(versors1 + 10); - print_versor(versors2 + 10); - print_versor(results + 10); - - free(vectors); - free(matrixes); - free(results); - free(versors2); - free(versors1); - return 0; -} -*/ diff --git a/basic-geometry-test/fp32_vector2_test.c b/basic-geometry-test/fp32_vector2_test.c index 33cc74c..1be1ee4 100644 --- a/basic-geometry-test/fp32_vector2_test.c +++ b/basic-geometry-test/fp32_vector2_test.c @@ -1,8 +1,8 @@ -#include "fp32_vector2_test.h" +#include "vector2_fp32_test.h" const int TEST_FP32_VECTOR2_AMOUNT_1 = 5; -const fp32_vector2_t TEST_FP32_VECTOR2_COMMON_1[] = { +const vector2_fp32_t TEST_FP32_VECTOR2_COMMON_1[] = { { 3.0f, 4.0f }, { -3.0f, -4.0f }, { 10000.0f, -20000.0f }, @@ -10,7 +10,7 @@ const fp32_vector2_t TEST_FP32_VECTOR2_COMMON_1[] = { { -123.5f, 3.7283f } }; -const fp32_vector2_t TEST_FP32_VECTOR2_COMMON_2[] = { +const vector2_fp32_t TEST_FP32_VECTOR2_COMMON_2[] = { { -3.0f, -4.0f }, { -3.0f, -4.0f }, { 0.002f, -0.05f }, @@ -22,14 +22,14 @@ const fp32_vector2_t TEST_FP32_VECTOR2_COMMON_2[] = { const float FP32_VECTOR2_SQUARE_MODULUS_1[] = { 25.0f, 25.0f, 500000000.0f, 100.01f, 15266.150221f }; -int test_fp32_vector2_square_modulus() +int test_vector2_fp32_square_modulus() { - print_test_name("fp32_vector2_t square modulus"); + print_test_name("vector2_fp32_t square modulus"); float square_modulus; for (int i = 0; i < TEST_FP32_VECTOR2_AMOUNT_1; i++) { - square_modulus = fp32_vector2_get_square_modulus(&TEST_FP32_VECTOR2_COMMON_1[i]); + square_modulus = vector2_get_square_modulus_fp32(&TEST_FP32_VECTOR2_COMMON_1[i]); if (!test_fp32_are_equal(square_modulus, FP32_VECTOR2_SQUARE_MODULUS_1[i], TEST_FP32_TWO_EPSYLON)) { print_test_failed(); @@ -45,14 +45,14 @@ int test_fp32_vector2_square_modulus() const float FP32_VECTOR2_MODULUS_1[] = { 5.0f, 5.0f, 22360.68f, 10.0005f, 123.55626338f }; -int test_fp32_vector2_modulus() +int test_vector2_fp32_modulus() { - print_test_name("fp32_vector2_t modulus"); + print_test_name("vector2_fp32_t modulus"); float square_modulus; for (int i = 0; i < TEST_FP32_VECTOR2_AMOUNT_1; i++) { - square_modulus = fp32_vector2_get_modulus(&TEST_FP32_VECTOR2_COMMON_1[i]); + square_modulus = vector2_get_modulus_fp32(&TEST_FP32_VECTOR2_COMMON_1[i]); if (!test_fp32_are_equal(square_modulus, FP32_VECTOR2_MODULUS_1[i], TEST_FP32_EPSYLON)) { print_test_failed(); @@ -66,7 +66,7 @@ int test_fp32_vector2_modulus() // ===================== Add ==================== // -const fp32_vector2_t TEST_FP32_VECTOR2_COMMON_1_2_SUM[] = { +const vector2_fp32_t TEST_FP32_VECTOR2_COMMON_1_2_SUM[] = { { 0.0f, 0.0f }, { -6.0f, -8.0f }, { 10000.002f, -20000.05f }, @@ -74,14 +74,14 @@ const fp32_vector2_t TEST_FP32_VECTOR2_COMMON_1_2_SUM[] = { { -122.0f, -19.6217f } }; -int test_fp32_vector2_add() +int test_vector2_fp32_add() { - print_test_name("fp32_vector2_t add"); + print_test_name("vector2_fp32_t add"); - fp32_vector2_t vector; + vector2_fp32_t vector; for (int i = 0; i < TEST_FP32_VECTOR2_AMOUNT_1; i++) { - fp32_vector2_add(&TEST_FP32_VECTOR2_COMMON_1[i], &TEST_FP32_VECTOR2_COMMON_2[i], &vector); + vector2_fp32_add(&TEST_FP32_VECTOR2_COMMON_1[i], &TEST_FP32_VECTOR2_COMMON_2[i], &vector); if (!test_fp32_are_equal(vector.x1, TEST_FP32_VECTOR2_COMMON_1_2_SUM[i].x1, TEST_FP32_EPSYLON) || !test_fp32_are_equal(vector.x2, TEST_FP32_VECTOR2_COMMON_1_2_SUM[i].x2, TEST_FP32_EPSYLON)) { @@ -96,7 +96,7 @@ int test_fp32_vector2_add() // ================== Subtract ================== // -const fp32_vector2_t TEST_FP32_VECTOR2_COMMON_1_2_DIFF[] = { +const vector2_fp32_t TEST_FP32_VECTOR2_COMMON_1_2_DIFF[] = { { 6.0f, 8.0f }, { 0.0f, 0.0f }, { 9999.998f, -19999.95f }, @@ -104,14 +104,14 @@ const fp32_vector2_t TEST_FP32_VECTOR2_COMMON_1_2_DIFF[] = { { -125.0f, 27.0783f } }; -int test_fp32_vector2_subtract() +int test_vector2_fp32_subtract() { - print_test_name("fp32_vector2_t subtract"); + print_test_name("vector2_fp32_t subtract"); - fp32_vector2_t vector; + vector2_fp32_t vector; for (int i = 0; i < TEST_FP32_VECTOR2_AMOUNT_1; i++) { - fp32_vector2_subtract(&TEST_FP32_VECTOR2_COMMON_1[i], &TEST_FP32_VECTOR2_COMMON_2[i], &vector); + vector2_fp32_subtract(&TEST_FP32_VECTOR2_COMMON_1[i], &TEST_FP32_VECTOR2_COMMON_2[i], &vector); if (!test_fp32_are_equal(vector.x1, TEST_FP32_VECTOR2_COMMON_1_2_DIFF[i].x1, TEST_FP32_EPSYLON) || !test_fp32_are_equal(vector.x2, TEST_FP32_VECTOR2_COMMON_1_2_DIFF[i].x2, TEST_FP32_EPSYLON)) { @@ -128,21 +128,21 @@ int test_fp32_vector2_subtract() int test_fp32_vector2() { - print_test_section("fp32_vector2_t"); + print_test_section("vector2_fp32_t"); - if (test_fp32_vector2_square_modulus() != TEST_RESULT_SUCCES) { + if (test_vector2_fp32_square_modulus() != TEST_RESULT_SUCCES) { return TEST_RESULT_FAILED; } - if (test_fp32_vector2_modulus() != TEST_RESULT_SUCCES) { + if (test_vector2_fp32_modulus() != TEST_RESULT_SUCCES) { return TEST_RESULT_FAILED; } - if (test_fp32_vector2_add() != TEST_RESULT_SUCCES) { + if (test_vector2_fp32_add() != TEST_RESULT_SUCCES) { return TEST_RESULT_FAILED; } - if (test_fp32_vector2_subtract() != TEST_RESULT_SUCCES) { + if (test_vector2_fp32_subtract() != TEST_RESULT_SUCCES) { return TEST_RESULT_FAILED; } diff --git a/basic-geometry-test/fp32_vector2_test.h b/basic-geometry-test/fp32_vector2_test.h index 8bfe676..0ea82f7 100644 --- a/basic-geometry-test/fp32_vector2_test.h +++ b/basic-geometry-test/fp32_vector2_test.h @@ -5,12 +5,12 @@ int test_fp32_vector2(); -int test_fp32_vector2_square_modulus(); +int test_vector2_fp32_square_modulus(); -int test_fp32_vector2_modulus(); +int test_vector2_fp32_modulus(); -int test_fp32_vector2_add(); +int test_vector2_fp32_add(); -int test_fp32_vector2_subtract(); +int test_vector2_fp32_subtract(); #endif diff --git a/basic-geometry-test/main.c b/basic-geometry-test/main.c index 03b5b92..ffd2985 100644 --- a/basic-geometry-test/main.c +++ b/basic-geometry-test/main.c @@ -2,7 +2,7 @@ #include #include "geometry_test.h" -#include "fp32_vector2_test.h" +#include "vector2_fp32_test.h" #define PROGRAM_RESULT_SUCCESS 0 #define PROGRAM_RESULT_FAILED 1 diff --git a/basic-geometry/angle.h b/basic-geometry/angle.h index 36a91b0..aa7f05c 100644 --- a/basic-geometry/angle.h +++ b/basic-geometry/angle.h @@ -52,31 +52,31 @@ typedef enum { // ========= Convert radians to degrees ========= // -static inline float fp32_radians_to_degrees(const float radians) +inline float fp32_radians_to_degrees(const float radians) { return radians * FP32_DEGREES_IN_RADIAN; } -static inline double fp64_radians_to_degrees(const double radians) +inline double fp64_radians_to_degrees(const double radians) { return radians * FP64_DEGREES_IN_RADIAN; } // ========== Convert radians to turns ========== // -static inline float fp32_radians_to_turns(const float radians) +inline float fp32_radians_to_turns(const float radians) { return radians * FP32_TURNS_IN_RADIAN; } -static inline double fp64_radians_to_turns(const double radians) +inline double fp64_radians_to_turns(const double radians) { return radians * FP64_TURNS_IN_RADIAN; } // ========= Convert radians to any unit ======== // -static inline float fp32_radians_to_units(const float radians, const angle_unit_t to_unit) +inline float fp32_radians_to_units(const float radians, const angle_unit_t to_unit) { if (to_unit == BG_ANGLE_UNIT_DEGREES) { return radians * FP32_DEGREES_IN_RADIAN; @@ -89,7 +89,7 @@ static inline float fp32_radians_to_units(const float radians, const angle_unit_ return radians; } -static inline double fp64_radians_to_units(const double radians, const angle_unit_t to_unit) +inline double fp64_radians_to_units(const double radians, const angle_unit_t to_unit) { if (to_unit == BG_ANGLE_UNIT_DEGREES) { return radians * FP64_DEGREES_IN_RADIAN; @@ -104,7 +104,7 @@ static inline double fp64_radians_to_units(const double radians, const angle_uni // ============ Normalize radians ============= // -static inline float fp32_radians_normalize(const float radians, const angle_range_t range) +inline float fp32_radians_normalize(const float radians, const angle_range_t range) { if (range == BG_ANGLE_RANGE_UNSIGNED) { if (0.0f <= radians && radians < FP32_TWO_PI) { @@ -128,7 +128,7 @@ static inline float fp32_radians_normalize(const float radians, const angle_rang return turns * FP32_TWO_PI; } -static inline double fp64_radians_normalize(const double radians, const angle_range_t range) +inline double fp64_radians_normalize(const double radians, const angle_range_t range) { if (range == BG_ANGLE_RANGE_UNSIGNED) { if (0.0 <= radians && radians < FP64_TWO_PI) { @@ -156,31 +156,31 @@ static inline double fp64_radians_normalize(const double radians, const angle_ra // ========= Convert degrees to radians ========= // -static inline float fp32_degrees_to_radians(const float degrees) +inline float fp32_degrees_to_radians(const float degrees) { return degrees * FP32_RADIANS_IN_DEGREE; } -static inline double fp64_degrees_to_radians(const double degrees) +inline double fp64_degrees_to_radians(const double degrees) { return degrees * FP64_RADIANS_IN_DEGREE; } // ========== Convert degrees to turns ========== // -static inline float fp32_degrees_to_turns(const float radians) +inline float fp32_degrees_to_turns(const float radians) { return radians * FP32_TURNS_IN_DEGREE; } -static inline double fp64_degrees_to_turns(const double radians) +inline double fp64_degrees_to_turns(const double radians) { return radians * FP64_TURNS_IN_DEGREE; } // ========= Convert degreess to any unit ======== // -static inline float fp32_degrees_to_units(const float degrees, const angle_unit_t to_unit) +inline float fp32_degrees_to_units(const float degrees, const angle_unit_t to_unit) { if (to_unit == BG_ANGLE_UNIT_RADIANS) { return degrees * FP32_RADIANS_IN_DEGREE; @@ -193,7 +193,7 @@ static inline float fp32_degrees_to_units(const float degrees, const angle_unit_ return degrees; } -static inline double fp64_degrees_to_units(const double degrees, const angle_unit_t to_unit) +inline double fp64_degrees_to_units(const double degrees, const angle_unit_t to_unit) { if (to_unit == BG_ANGLE_UNIT_RADIANS) { return degrees * FP64_RADIANS_IN_DEGREE; @@ -208,7 +208,7 @@ static inline double fp64_degrees_to_units(const double degrees, const angle_uni // ============ Normalize degrees ============= // -static inline float fp32_degrees_normalize(const float degrees, const angle_range_t range) +inline float fp32_degrees_normalize(const float degrees, const angle_range_t range) { if (range == BG_ANGLE_RANGE_UNSIGNED) { if (0.0f <= degrees && degrees < 360.0f) { @@ -232,7 +232,7 @@ static inline float fp32_degrees_normalize(const float degrees, const angle_rang return turns * 360.0f; } -static inline double fp64_degrees_normalize(const double degrees, const angle_range_t range) +inline double fp64_degrees_normalize(const double degrees, const angle_range_t range) { if (range == BG_ANGLE_RANGE_UNSIGNED) { if (0.0 <= degrees && degrees < 360.0) { @@ -260,31 +260,31 @@ static inline double fp64_degrees_normalize(const double degrees, const angle_ra // ========== Convert turns to radians ========== // -static inline float fp32_turns_to_radians(const float turns) +inline float fp32_turns_to_radians(const float turns) { return turns * FP32_TWO_PI; } -static inline double fp64_turns_to_radians(const double turns) +inline double fp64_turns_to_radians(const double turns) { return turns * FP64_TWO_PI; } // ========== Convert turns to degrees ========== // -static inline float fp32_turns_to_degrees(const float turns) +inline float fp32_turns_to_degrees(const float turns) { return turns * 360.0f; } -static inline double fp64_turns_to_degrees(const double turns) +inline double fp64_turns_to_degrees(const double turns) { return turns * 360.0; } // ========= Convert turns to any unit ======== // -static inline float fp32_turns_to_units(const float turns, const angle_unit_t to_unit) +inline float fp32_turns_to_units(const float turns, const angle_unit_t to_unit) { if (to_unit == BG_ANGLE_UNIT_RADIANS) { return turns * FP32_TWO_PI; @@ -297,7 +297,7 @@ static inline float fp32_turns_to_units(const float turns, const angle_unit_t to return turns; } -static inline double fp64_turns_to_units(const double turns, const angle_unit_t to_unit) +inline double fp64_turns_to_units(const double turns, const angle_unit_t to_unit) { if (to_unit == BG_ANGLE_UNIT_RADIANS) { return turns * FP64_TWO_PI; @@ -312,7 +312,7 @@ static inline double fp64_turns_to_units(const double turns, const angle_unit_t // ============= Normalize turns ============== // -static inline float fp32_turns_normalize(const float turns, const angle_range_t range) +inline float fp32_turns_normalize(const float turns, const angle_range_t range) { if (range == BG_ANGLE_RANGE_UNSIGNED) { if (0.0f <= turns && turns < 1.0f) { @@ -334,7 +334,7 @@ static inline float fp32_turns_normalize(const float turns, const angle_range_t return rest; } -static inline double fp64_turns_normalize(const double turns, const angle_range_t range) +inline double fp64_turns_normalize(const double turns, const angle_range_t range) { if (range == BG_ANGLE_RANGE_UNSIGNED) { if (0.0 <= turns && turns < 1.0) { @@ -360,7 +360,7 @@ static inline double fp64_turns_normalize(const double turns, const angle_range_ // ========= Convert any unit to radians ======== // -static inline float fp32_angle_to_radians(const float angle, const angle_unit_t unit) +inline float fp32_angle_to_radians(const float angle, const angle_unit_t unit) { if (unit == BG_ANGLE_UNIT_DEGREES) { return angle * FP32_RADIANS_IN_DEGREE; @@ -373,7 +373,7 @@ static inline float fp32_angle_to_radians(const float angle, const angle_unit_t return angle; } -static inline double fp64_angle_to_radians(const double angle, const angle_unit_t unit) +inline double fp64_angle_to_radians(const double angle, const angle_unit_t unit) { if (unit == BG_ANGLE_UNIT_DEGREES) { return angle * FP64_RADIANS_IN_DEGREE; @@ -388,7 +388,7 @@ static inline double fp64_angle_to_radians(const double angle, const angle_unit_ // ========= Convert any unit to degreess ======== // -static inline float fp32_angle_to_degrees(const float angle, const angle_unit_t unit) +inline float fp32_angle_to_degrees(const float angle, const angle_unit_t unit) { if (unit == BG_ANGLE_UNIT_RADIANS) { return angle * FP32_DEGREES_IN_RADIAN; @@ -401,7 +401,7 @@ static inline float fp32_angle_to_degrees(const float angle, const angle_unit_t return angle; } -static inline double fp64_angle_to_degrees(const double angle, const angle_unit_t unit) +inline double fp64_angle_to_degrees(const double angle, const angle_unit_t unit) { if (unit == BG_ANGLE_UNIT_RADIANS) { return angle * FP64_DEGREES_IN_RADIAN; @@ -416,7 +416,7 @@ static inline double fp64_angle_to_degrees(const double angle, const angle_unit_ // ========= Convert any unit to turns ======== // -static inline float fp32_angle_to_turns(const float angle, const angle_unit_t unit) +inline float fp32_angle_to_turns(const float angle, const angle_unit_t unit) { if (unit == BG_ANGLE_UNIT_RADIANS) { return angle * FP32_TURNS_IN_RADIAN; @@ -429,7 +429,7 @@ static inline float fp32_angle_to_turns(const float angle, const angle_unit_t un return angle; } -static inline double fp64_angle_to_turns(const double angle, const angle_unit_t unit) +inline double fp64_angle_to_turns(const double angle, const angle_unit_t unit) { if (unit == BG_ANGLE_UNIT_RADIANS) { return angle * FP64_TURNS_IN_RADIAN; @@ -444,7 +444,7 @@ static inline double fp64_angle_to_turns(const double angle, const angle_unit_t // ============= Get Full Circle ============== // -static inline float fp32_angle_get_full_circle(const angle_unit_t unit) +inline float fp32_angle_get_full_circle(const angle_unit_t unit) { if (unit == BG_ANGLE_UNIT_DEGREES) { return 360.0f; @@ -457,7 +457,7 @@ static inline float fp32_angle_get_full_circle(const angle_unit_t unit) return FP32_TWO_PI; } -static inline double fp64_angle_get_full_circle(const angle_unit_t unit) +inline double fp64_angle_get_full_circle(const angle_unit_t unit) { if (unit == BG_ANGLE_UNIT_DEGREES) { return 360.0; @@ -472,7 +472,7 @@ static inline double fp64_angle_get_full_circle(const angle_unit_t unit) // ============= Get Half Circle ============== // -static inline float fp32_angle_get_half_circle(const angle_unit_t unit) +inline float fp32_angle_get_half_circle(const angle_unit_t unit) { if (unit == BG_ANGLE_UNIT_DEGREES) { return 180.0f; @@ -485,7 +485,7 @@ static inline float fp32_angle_get_half_circle(const angle_unit_t unit) return FP32_PI; } -static inline double fp64_angle_get_half_circle(const angle_unit_t unit) +inline double fp64_angle_get_half_circle(const angle_unit_t unit) { if (unit == BG_ANGLE_UNIT_DEGREES) { return 180.0; @@ -500,7 +500,7 @@ static inline double fp64_angle_get_half_circle(const angle_unit_t unit) // ============= Get Half Circle ============== // -static inline float fp32_angle_get_quater_circle(const angle_unit_t unit) +inline float fp32_angle_get_quater_circle(const angle_unit_t unit) { if (unit == BG_ANGLE_UNIT_DEGREES) { return 90.0f; @@ -513,7 +513,7 @@ static inline float fp32_angle_get_quater_circle(const angle_unit_t unit) return FP32_HALF_OF_PI; } -static inline double fp64_angle_get_quater_circle(const angle_unit_t unit) +inline double fp64_angle_get_quater_circle(const angle_unit_t unit) { if (unit == BG_ANGLE_UNIT_DEGREES) { return 90.0; @@ -528,7 +528,7 @@ static inline double fp64_angle_get_quater_circle(const angle_unit_t unit) // ================ Normalize ================= // -static inline float fp32_angle_normalize(const float angle, const angle_unit_t unit, const angle_range_t range) +inline float fp32_angle_normalize(const float angle, const angle_unit_t unit, const angle_range_t range) { if (unit == BG_ANGLE_UNIT_DEGREES) { return fp32_degrees_normalize(angle, range); @@ -541,7 +541,7 @@ static inline float fp32_angle_normalize(const float angle, const angle_unit_t u return fp32_radians_normalize(angle, range); } -static inline double fp64_angle_normalize(const double angle, const angle_unit_t unit, const angle_range_t range) +inline double fp64_angle_normalize(const double angle, const angle_unit_t unit, const angle_range_t range) { if (unit == BG_ANGLE_UNIT_DEGREES) { return fp64_degrees_normalize(angle, range); diff --git a/basic-geometry/basis.h b/basic-geometry/basis.h index e46a56f..67f50a3 100644 --- a/basic-geometry/basis.h +++ b/basic-geometry/basis.h @@ -1,5 +1,5 @@ -#ifndef __GEOMETRY__TYPES_H_ -#define __GEOMETRY__TYPES_H_ +#ifndef _GEOMETRY_BASIS_H_ +#define _GEOMETRY_BASIS_H_ #define FP32_EPSYLON_EFFECTIVENESS_LIMIT 10.0f @@ -27,7 +27,7 @@ #define FP64_GOLDEN_RATIO_HIGH 1.61803398874989485 #define FP64_GOLDEN_RATIO_LOW 0.61803398874989485 -static inline int fp32_are_equal(const float value1, const float value2) +inline int fp32_are_equal(const float value1, const float value2) { if (-FP32_EPSYLON_EFFECTIVENESS_LIMIT < value1 && value1 < FP32_EPSYLON_EFFECTIVENESS_LIMIT) { return -FP32_EPSYLON <= (value1 - value2) && (value1 - value2) <= FP32_EPSYLON; @@ -40,7 +40,7 @@ static inline int fp32_are_equal(const float value1, const float value2) return value2 <= value1 * (1.0f + FP32_EPSYLON) && value1 <= value2 * (1.0f + FP32_EPSYLON); } -static inline int fp64_are_equal(const double value1, const double value2) +inline int fp64_are_equal(const double value1, const double value2) { if (-FP64_EPSYLON_EFFECTIVENESS_LIMIT < value1 && value1 < FP64_EPSYLON_EFFECTIVENESS_LIMIT) { return -FP64_EPSYLON <= (value1 - value2) && (value1 - value2) <= FP64_EPSYLON; diff --git a/basic-geometry/matrix2x2.h b/basic-geometry/matrix2x2.h index 0da1892..fe296a3 100644 --- a/basic-geometry/matrix2x2.h +++ b/basic-geometry/matrix2x2.h @@ -7,7 +7,7 @@ // =================== Reset ==================== // -static inline void fp32_matrix2x2_reset(fp32_matrix2x2_t* matrix) +inline void matrix2x2_reset_fp32(matrix2x2_fp32_t* matrix) { matrix->r1c1 = 0.0f; matrix->r1c2 = 0.0f; @@ -15,7 +15,7 @@ static inline void fp32_matrix2x2_reset(fp32_matrix2x2_t* matrix) matrix->r2c2 = 0.0f; } -static inline void fp64_matrix2x2_reset(fp64_matrix2x2_t* matrix) +inline void matrix2x2_reset_fp64(matrix2x2_fp64_t* matrix) { matrix->r1c1 = 0.0; matrix->r1c2 = 0.0; @@ -25,7 +25,7 @@ static inline void fp64_matrix2x2_reset(fp64_matrix2x2_t* matrix) // ================== Identity ================== // -static inline void fp32_matrix2x2_set_to_identity(fp32_matrix2x2_t* matrix) +inline void matrix2x2_fp32_set_to_identity(matrix2x2_fp32_t* matrix) { matrix->r1c1 = 1.0f; matrix->r1c2 = 0.0f; @@ -33,7 +33,7 @@ static inline void fp32_matrix2x2_set_to_identity(fp32_matrix2x2_t* matrix) matrix->r2c2 = 1.0f; } -static inline void fp64_matrix2x2_set_to_identity(fp64_matrix2x2_t* matrix) +inline void matrix2x2_fp64_set_to_identity(matrix2x2_fp64_t* matrix) { matrix->r1c1 = 1.0; matrix->r1c2 = 0.0; @@ -43,7 +43,7 @@ static inline void fp64_matrix2x2_set_to_identity(fp64_matrix2x2_t* matrix) // ================ Make Diagonal =============== // -static inline void fp32_matrix2x2_set_to_diagonal(const float d1, const float d2, fp32_matrix2x2_t* matrix) +inline void matrix2x2_fp32_set_to_diagonal(const float d1, const float d2, matrix2x2_fp32_t* matrix) { matrix->r1c1 = d1; matrix->r1c2 = 0.0f; @@ -51,7 +51,7 @@ static inline void fp32_matrix2x2_set_to_diagonal(const float d1, const float d2 matrix->r2c2 = d2; } -static inline void fp64_matrix2x2_set_to_diagonal(const double d1, const double d2, fp64_matrix2x2_t* matrix) +inline void matrix2x2_fp64_set_to_diagonal(const double d1, const double d2, matrix2x2_fp64_t* matrix) { matrix->r1c1 = d1; matrix->r1c2 = 0.0; @@ -61,7 +61,7 @@ static inline void fp64_matrix2x2_set_to_diagonal(const double d1, const double // ============== Rotation Matrix =============== // -static inline void fp32_matrix2x2_make_turn(const float angle, const angle_unit_t unit, fp32_matrix2x2_t* matrix) +inline void matrix2x2_fp32_make_turn(const float angle, const angle_unit_t unit, matrix2x2_fp32_t* matrix) { const float radians = fp32_angle_to_radians(angle, unit); const float cosine = cosf(radians); @@ -73,7 +73,7 @@ static inline void fp32_matrix2x2_make_turn(const float angle, const angle_unit_ matrix->r2c2 = cosine; } -static inline void fp64_matrix2x2_make_turn(const double angle, const angle_unit_t unit, fp64_matrix2x2_t* matrix) +inline void matrix2x2_fp64_make_turn(const double angle, const angle_unit_t unit, matrix2x2_fp64_t* matrix) { const double radians = fp64_angle_to_radians(angle, unit); const double cosine = cos(radians); @@ -87,7 +87,7 @@ static inline void fp64_matrix2x2_make_turn(const double angle, const angle_unit // ==================== Copy ==================== // -static inline void fp32_matrix2x2_copy(const fp32_matrix2x2_t* from, fp32_matrix2x2_t* to) +inline void matrix2x2_copy_fp32(const matrix2x2_fp32_t* from, matrix2x2_fp32_t* to) { to->r1c1 = from->r1c1; to->r1c2 = from->r1c2; @@ -96,7 +96,7 @@ static inline void fp32_matrix2x2_copy(const fp32_matrix2x2_t* from, fp32_matrix to->r2c2 = from->r2c2; } -static inline void fp64_matrix2x2_copy(const fp64_matrix2x2_t* from, fp64_matrix2x2_t* to) +inline void matrix2x2_copy_fp64(const matrix2x2_fp64_t* from, matrix2x2_fp64_t* to) { to->r1c1 = from->r1c1; to->r1c2 = from->r1c2; @@ -107,7 +107,7 @@ static inline void fp64_matrix2x2_copy(const fp64_matrix2x2_t* from, fp64_matrix // ==================== Swap ==================== // -static inline void fp32_matrix2x2_swap(fp32_matrix2x2_t* matrix1, fp32_matrix2x2_t* matrix2) +inline void matrix2x2_swap_fp32(matrix2x2_fp32_t* matrix1, matrix2x2_fp32_t* matrix2) { const float r1c1 = matrix2->r1c1; const float r1c2 = matrix2->r1c2; @@ -128,7 +128,7 @@ static inline void fp32_matrix2x2_swap(fp32_matrix2x2_t* matrix1, fp32_matrix2x2 matrix1->r2c2 = r2c2; } -static inline void fp64_matrix2x2_swap(fp64_matrix2x2_t* matrix1, fp64_matrix2x2_t* matrix2) +inline void matrix2x2_swap_fp64(matrix2x2_fp64_t* matrix1, matrix2x2_fp64_t* matrix2) { const double r1c1 = matrix2->r1c1; const double r1c2 = matrix2->r1c2; @@ -151,7 +151,7 @@ static inline void fp64_matrix2x2_swap(fp64_matrix2x2_t* matrix1, fp64_matrix2x2 // ============= Copy to twin type ============== // -static inline void fp32_matrix2x2_set_from_fp64(const fp64_matrix2x2_t* from, fp32_matrix2x2_t* to) +inline void matrix2x2_fp32_set_from_fp64(const matrix2x2_fp64_t* from, matrix2x2_fp32_t* to) { to->r1c1 = (float)from->r1c1; to->r1c2 = (float)from->r1c2; @@ -160,7 +160,7 @@ static inline void fp32_matrix2x2_set_from_fp64(const fp64_matrix2x2_t* from, fp to->r2c2 = (float)from->r2c2; } -static inline void fp64_matrix2x2_set_from_fp32(const fp32_matrix2x2_t* from, fp64_matrix2x2_t* to) +inline void matrix2x2_fp64_set_from_fp32(const matrix2x2_fp32_t* from, matrix2x2_fp64_t* to) { to->r1c1 = from->r1c1; to->r1c2 = from->r1c2; @@ -171,42 +171,42 @@ static inline void fp64_matrix2x2_set_from_fp32(const fp32_matrix2x2_t* from, fp // ================ Determinant ================= // -static inline float fp32_matrix2x2_get_determinant(const fp32_matrix2x2_t* matrix) +inline float matrix2x2_fp32_get_determinant(const matrix2x2_fp32_t* matrix) { return matrix->r1c1 * matrix->r2c2 - matrix->r1c2 * matrix->r2c1; } -static inline double fp64_matrix2x2_get_determinant(const fp64_matrix2x2_t* matrix) +inline double matrix2x2_fp64_get_determinant(const matrix2x2_fp64_t* matrix) { return matrix->r1c1 * matrix->r2c2 - matrix->r1c2 * matrix->r2c1; } // ================== Singular ================== // -static inline int fp32_matrix2x2_is_singular(const fp32_matrix2x2_t* matrix) +inline int matrix2x2_fp32_is_singular(const matrix2x2_fp32_t* matrix) { - const float determinant = fp32_matrix2x2_get_determinant(matrix); + const float determinant = matrix2x2_fp32_get_determinant(matrix); return -FP32_EPSYLON <= determinant && determinant <= FP32_EPSYLON; } -static inline int fp64_matrix2x2_is_singular(const fp64_matrix2x2_t* matrix) +inline int matrix2x2_fp64_is_singular(const matrix2x2_fp64_t* matrix) { - const double determinant = fp64_matrix2x2_get_determinant(matrix); + const double determinant = matrix2x2_fp64_get_determinant(matrix); return -FP64_EPSYLON <= determinant && determinant <= FP64_EPSYLON; } // =============== Transposition ================ // -static inline void fp32_matrix2x2_transpose(fp32_matrix2x2_t* matrix) +inline void matrix2x2_fp32_transpose(matrix2x2_fp32_t* matrix) { const float tmp = matrix->r1c2; matrix->r1c2 = matrix->r2c1; matrix->r2c1 = tmp; } -static inline void fp64_matrix2x2_transpose(fp64_matrix2x2_t* matrix) +inline void matrix2x2_fp64_transpose(matrix2x2_fp64_t* matrix) { const double tmp = matrix->r1c2; matrix->r1c2 = matrix->r2c1; @@ -215,9 +215,9 @@ static inline void fp64_matrix2x2_transpose(fp64_matrix2x2_t* matrix) // ================= Inversion ================== // -static inline int fp32_matrix2x2_invert(fp32_matrix2x2_t* matrix) +inline int matrix2x2_invert_fp32(matrix2x2_fp32_t* matrix) { - const float determinant = fp32_matrix2x2_get_determinant(matrix); + const float determinant = matrix2x2_fp32_get_determinant(matrix); if (-FP32_EPSYLON <= determinant && determinant <= FP32_EPSYLON) { return 0; @@ -240,9 +240,9 @@ static inline int fp32_matrix2x2_invert(fp32_matrix2x2_t* matrix) return 1; } -static inline int fp64_matrix2x2_invert(fp64_matrix2x2_t* matrix) +inline int matrix2x2_invert_fp64(matrix2x2_fp64_t* matrix) { - const double determinant = fp64_matrix2x2_get_determinant(matrix); + const double determinant = matrix2x2_fp64_get_determinant(matrix); if (-FP64_EPSYLON <= determinant && determinant <= FP64_EPSYLON) { return 0; @@ -267,7 +267,7 @@ static inline int fp64_matrix2x2_invert(fp64_matrix2x2_t* matrix) // =============== Set Transposed =============== // -static inline void fp32_matrix2x2_set_transposed(const fp32_matrix2x2_t* from, fp32_matrix2x2_t* to) +inline void matrix2x2_fp32_set_transposed(const matrix2x2_fp32_t* from, matrix2x2_fp32_t* to) { float tmp = from->r1c2; @@ -278,7 +278,7 @@ static inline void fp32_matrix2x2_set_transposed(const fp32_matrix2x2_t* from, f to->r2c2 = from->r2c2; } -static inline void fp64_matrix2x2_set_transposed(const fp64_matrix2x2_t* from, fp64_matrix2x2_t* to) +inline void matrix2x2_fp64_set_transposed(const matrix2x2_fp64_t* from, matrix2x2_fp64_t* to) { double tmp = from->r1c2; @@ -291,9 +291,9 @@ static inline void fp64_matrix2x2_set_transposed(const fp64_matrix2x2_t* from, f // ================ Set Inverted ================ // -static inline int fp32_matrix2x2_set_inverted(const fp32_matrix2x2_t* from, fp32_matrix2x2_t* to) +inline int matrix2x2_fp32_set_inverted(const matrix2x2_fp32_t* from, matrix2x2_fp32_t* to) { - const float determinant = fp32_matrix2x2_get_determinant(from); + const float determinant = matrix2x2_fp32_get_determinant(from); if (-FP32_EPSYLON <= determinant && determinant <= FP32_EPSYLON) { return 0; @@ -316,9 +316,9 @@ static inline int fp32_matrix2x2_set_inverted(const fp32_matrix2x2_t* from, fp32 return 1; } -static inline int fp64_matrix2x2_set_inverted(const fp64_matrix2x2_t* from, fp64_matrix2x2_t* to) +inline int matrix2x2_fp64_set_inverted(const matrix2x2_fp64_t* from, matrix2x2_fp64_t* to) { - const double determinant = fp64_matrix2x2_get_determinant(from); + const double determinant = matrix2x2_fp64_get_determinant(from); if (-FP64_EPSYLON <= determinant && determinant <= FP64_EPSYLON) { return 0; @@ -343,13 +343,13 @@ static inline int fp64_matrix2x2_set_inverted(const fp64_matrix2x2_t* from, fp64 // ================= Set Row 1 ================== // -static inline void fp32_matrix2x2_set_row1(const float c1, const float c2, fp32_matrix2x2_t* matrix) +inline void matrix2x2_fp32_set_row1(const float c1, const float c2, matrix2x2_fp32_t* matrix) { matrix->r1c1 = c1; matrix->r1c2 = c2; } -static inline void fp64_matrix2x2_set_row1(const double c1, const double c2, fp64_matrix2x2_t* matrix) +inline void matrix2x2_fp64_set_row1(const double c1, const double c2, matrix2x2_fp64_t* matrix) { matrix->r1c1 = c1; matrix->r1c2 = c2; @@ -357,13 +357,13 @@ static inline void fp64_matrix2x2_set_row1(const double c1, const double c2, fp6 // ================= Set Row 2 ================== // -static inline void fp32_matrix2x2_set_row2(const float c1, const float c2, fp32_matrix2x2_t* matrix) +inline void matrix2x2_fp32_set_row2(const float c1, const float c2, matrix2x2_fp32_t* matrix) { matrix->r2c1 = c1; matrix->r2c2 = c2; } -static inline void fp64_matrix2x2_set_row2(const double c1, const double c2, fp64_matrix2x2_t* matrix) +inline void matrix2x2_fp64_set_row2(const double c1, const double c2, matrix2x2_fp64_t* matrix) { matrix->r2c1 = c1; matrix->r2c2 = c2; @@ -371,13 +371,13 @@ static inline void fp64_matrix2x2_set_row2(const double c1, const double c2, fp6 // ================ Set Column 1 ================ // -static inline void fp32_matrix2x2_set_column1(const float r1, const float r2, fp32_matrix2x2_t* matrix) +inline void matrix2x2_fp32_set_column1(const float r1, const float r2, matrix2x2_fp32_t* matrix) { matrix->r1c1 = r1; matrix->r2c1 = r2; } -static inline void fp64_matrix2x2_set_column1(const double r1, const double r2, fp64_matrix2x2_t* matrix) +inline void matrix2x2_fp64_set_column1(const double r1, const double r2, matrix2x2_fp64_t* matrix) { matrix->r1c1 = r1; matrix->r2c1 = r2; @@ -385,13 +385,13 @@ static inline void fp64_matrix2x2_set_column1(const double r1, const double r2, // ================ Set Column 2 ================ // -static inline void fp32_matrix2x2_set_column2(const float r1, const float r2, fp32_matrix2x2_t* matrix) +inline void matrix2x2_fp32_set_column2(const float r1, const float r2, matrix2x2_fp32_t* matrix) { matrix->r1c2 = r1; matrix->r2c2 = r2; } -static inline void fp64_matrix2x2_set_column2(const double r1, const double r2, fp64_matrix2x2_t* matrix) +inline void matrix2x2_fp64_set_column2(const double r1, const double r2, matrix2x2_fp64_t* matrix) { matrix->r1c2 = r1; matrix->r2c2 = r2; @@ -399,7 +399,7 @@ static inline void fp64_matrix2x2_set_column2(const double r1, const double r2, // ================ Append scaled =============== // -static inline void fp32_matrix2x2_append_scaled(fp32_matrix2x2_t* basic_vector, const fp32_matrix2x2_t* scalable_vector, const float scale) +inline void matrix2x2_fp32_append_scaled(matrix2x2_fp32_t* basic_vector, const matrix2x2_fp32_t* scalable_vector, const float scale) { basic_vector->r1c1 += scalable_vector->r1c1 * scale; basic_vector->r1c2 += scalable_vector->r1c2 * scale; @@ -408,7 +408,7 @@ static inline void fp32_matrix2x2_append_scaled(fp32_matrix2x2_t* basic_vector, basic_vector->r2c2 += scalable_vector->r2c2 * scale; } -static inline void fp64_matrix2x2_append_scaled(fp64_matrix2x2_t* basic_vector, const fp64_matrix2x2_t* scalable_vector, const double scale) +inline void matrix2x2_fp64_append_scaled(matrix2x2_fp64_t* basic_vector, const matrix2x2_fp64_t* scalable_vector, const double scale) { basic_vector->r1c1 += scalable_vector->r1c1 * scale; basic_vector->r1c2 += scalable_vector->r1c2 * scale; @@ -419,7 +419,7 @@ static inline void fp64_matrix2x2_append_scaled(fp64_matrix2x2_t* basic_vector, // ================== Addition ================== // -static inline void fp32_matrix2x2_add(const fp32_matrix2x2_t* matrix1, const fp32_matrix2x2_t* matrix2, fp32_matrix2x2_t* sum) +inline void matrix2x2_fp32_add(const matrix2x2_fp32_t* matrix1, const matrix2x2_fp32_t* matrix2, matrix2x2_fp32_t* sum) { sum->r1c1 = matrix1->r1c1 + matrix2->r1c1; sum->r1c2 = matrix1->r1c2 + matrix2->r1c2; @@ -428,7 +428,7 @@ static inline void fp32_matrix2x2_add(const fp32_matrix2x2_t* matrix1, const fp3 sum->r2c2 = matrix1->r2c2 + matrix2->r2c2; } -static inline void fp64_matrix2x2_add(const fp64_matrix2x2_t* matrix1, const fp64_matrix2x2_t* matrix2, fp64_matrix2x2_t* sum) +inline void matrix2x2_fp64_add(const matrix2x2_fp64_t* matrix1, const matrix2x2_fp64_t* matrix2, matrix2x2_fp64_t* sum) { sum->r1c1 = matrix1->r1c1 + matrix2->r1c1; sum->r1c2 = matrix1->r1c2 + matrix2->r1c2; @@ -439,7 +439,7 @@ static inline void fp64_matrix2x2_add(const fp64_matrix2x2_t* matrix1, const fp6 // ================ Subtraction ================= // -static inline void fp32_matrix2x2_subtract(const fp32_matrix2x2_t* minuend, const fp32_matrix2x2_t* subtrahend, fp32_matrix2x2_t* difference) +inline void matrix2x2_fp32_subtract(const matrix2x2_fp32_t* minuend, const matrix2x2_fp32_t* subtrahend, matrix2x2_fp32_t* difference) { difference->r1c1 = minuend->r1c1 - subtrahend->r1c1; difference->r1c2 = minuend->r1c2 - subtrahend->r1c2; @@ -448,7 +448,7 @@ static inline void fp32_matrix2x2_subtract(const fp32_matrix2x2_t* minuend, cons difference->r2c2 = minuend->r2c2 - subtrahend->r2c2; } -static inline void fp64_matrix2x2_subtract(const fp64_matrix2x2_t* minuend, const fp64_matrix2x2_t* subtrahend, fp64_matrix2x2_t* difference) +inline void matrix2x2_fp64_subtract(const matrix2x2_fp64_t* minuend, const matrix2x2_fp64_t* subtrahend, matrix2x2_fp64_t* difference) { difference->r1c1 = minuend->r1c1 - subtrahend->r1c1; difference->r1c2 = minuend->r1c2 - subtrahend->r1c2; @@ -459,7 +459,7 @@ static inline void fp64_matrix2x2_subtract(const fp64_matrix2x2_t* minuend, cons // =============== Multiplication =============== // -static inline void fp32_matrix2x2_multiply(const fp32_matrix2x2_t* multiplicand, const float multiplier, fp32_matrix2x2_t* product) +inline void matrix2x2_fp32_multiply(const matrix2x2_fp32_t* multiplicand, const float multiplier, matrix2x2_fp32_t* product) { product->r1c1 = multiplicand->r1c1 * multiplier; product->r1c2 = multiplicand->r1c2 * multiplier; @@ -468,7 +468,7 @@ static inline void fp32_matrix2x2_multiply(const fp32_matrix2x2_t* multiplicand, product->r2c2 = multiplicand->r2c2 * multiplier; } -static inline void fp64_matrix2x2_multiply(const fp64_matrix2x2_t* multiplicand, const double multiplier, fp64_matrix2x2_t* product) +inline void matrix2x2_fp64_multiply(const matrix2x2_fp64_t* multiplicand, const double multiplier, matrix2x2_fp64_t* product) { product->r1c1 = multiplicand->r1c1 * multiplier; product->r1c2 = multiplicand->r1c2 * multiplier; @@ -479,19 +479,19 @@ static inline void fp64_matrix2x2_multiply(const fp64_matrix2x2_t* multiplicand, // ================== Division ================== // -static inline void fp32_matrix2x2_divide(const fp32_matrix2x2_t* dividend, const float divisor, fp32_matrix2x2_t* quotient) +inline void matrix2x2_fp32_divide(const matrix2x2_fp32_t* dividend, const float divisor, matrix2x2_fp32_t* quotient) { - fp32_matrix2x2_multiply(dividend, 1.0f / divisor, quotient); + matrix2x2_fp32_multiply(dividend, 1.0f / divisor, quotient); } -static inline void fp64_matrix2x2_divide(const fp64_matrix2x2_t* dividend, const double divisor, fp64_matrix2x2_t* quotient) +inline void matrix2x2_fp64_divide(const matrix2x2_fp64_t* dividend, const double divisor, matrix2x2_fp64_t* quotient) { - fp64_matrix2x2_multiply(dividend, 1.0 / divisor, quotient); + matrix2x2_fp64_multiply(dividend, 1.0 / divisor, quotient); } // ============ Left Vector Product ============= // -static inline void fp32_matrix2x2_left_product(const fp32_vector2_t* vector, const fp32_matrix2x2_t* matrix, fp32_vector2_t* result) +inline void matrix2x2_fp32_left_product(const vector2_fp32_t* vector, const matrix2x2_fp32_t* matrix, vector2_fp32_t* result) { const float x1 = vector->x1 * matrix->r1c1 + vector->x2 * matrix->r2c1; const float x2 = vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2; @@ -500,7 +500,7 @@ static inline void fp32_matrix2x2_left_product(const fp32_vector2_t* vector, con result->x2 = x2; } -static inline void fp64_matrix2x2_left_product(const fp64_vector2_t* vector, const fp64_matrix2x2_t* matrix, fp64_vector2_t* result) +inline void matrix2x2_fp64_left_product(const vector2_fp64_t* vector, const matrix2x2_fp64_t* matrix, vector2_fp64_t* result) { const double x1 = vector->x1 * matrix->r1c1 + vector->x2 * matrix->r2c1; const double x2 = vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2; @@ -511,7 +511,7 @@ static inline void fp64_matrix2x2_left_product(const fp64_vector2_t* vector, con // ============ Right Vector Product ============ // -static inline void fp32_matrix2x2_right_product(const fp32_matrix2x2_t* matrix, const fp32_vector2_t* vector, fp32_vector2_t* result) +inline void matrix2x2_fp32_right_product(const matrix2x2_fp32_t* matrix, const vector2_fp32_t* vector, vector2_fp32_t* result) { const float x1 = matrix->r1c1 * vector->x1 + matrix->r1c2 * vector->x2; const float x2 = matrix->r2c1 * vector->x1 + matrix->r2c2 * vector->x2; @@ -520,7 +520,7 @@ static inline void fp32_matrix2x2_right_product(const fp32_matrix2x2_t* matrix, result->x2 = x2; } -static inline void fp64_matrix2x2_right_product(const fp64_matrix2x2_t* matrix, const fp64_vector2_t* vector, fp64_vector2_t* result) +inline void matrix2x2_fp64_right_product(const matrix2x2_fp64_t* matrix, const vector2_fp64_t* vector, vector2_fp64_t* result) { const double x1 = matrix->r1c1 * vector->x1 + matrix->r1c2 * vector->x2; const double x2 = matrix->r2c1 * vector->x1 + matrix->r2c2 * vector->x2; diff --git a/basic-geometry/matrix2x3.h b/basic-geometry/matrix2x3.h index 6ac9f99..398e9f7 100644 --- a/basic-geometry/matrix2x3.h +++ b/basic-geometry/matrix2x3.h @@ -7,7 +7,7 @@ // =================== Reset ==================== // -static inline void fp32_matrix2x3_reset(fp32_matrix2x3_t* matrix) +inline void matrix2x3_reset_fp32(matrix2x3_fp32_t* matrix) { matrix->r1c1 = 0.0f; matrix->r1c2 = 0.0f; @@ -19,7 +19,7 @@ static inline void fp32_matrix2x3_reset(fp32_matrix2x3_t* matrix) matrix->r3c2 = 0.0f; } -static inline void fp64_matrix2x3_reset(fp64_matrix2x3_t* matrix) +inline void matrix2x3_reset_fp64(matrix2x3_fp64_t* matrix) { matrix->r1c1 = 0.0; matrix->r1c2 = 0.0; @@ -33,7 +33,7 @@ static inline void fp64_matrix2x3_reset(fp64_matrix2x3_t* matrix) // ==================== Copy ==================== // -static inline void fp32_matrix2x3_copy(const fp32_matrix2x3_t* from, fp32_matrix2x3_t* to) +inline void matrix2x3_copy_fp32(const matrix2x3_fp32_t* from, matrix2x3_fp32_t* to) { to->r1c1 = from->r1c1; to->r1c2 = from->r1c2; @@ -45,7 +45,7 @@ static inline void fp32_matrix2x3_copy(const fp32_matrix2x3_t* from, fp32_matrix to->r3c2 = from->r3c2; } -static inline void fp64_matrix2x3_copy(const fp64_matrix2x3_t* from, fp64_matrix2x3_t* to) +inline void matrix2x3_copy_fp64(const matrix2x3_fp64_t* from, matrix2x3_fp64_t* to) { to->r1c1 = from->r1c1; to->r1c2 = from->r1c2; @@ -59,7 +59,7 @@ static inline void fp64_matrix2x3_copy(const fp64_matrix2x3_t* from, fp64_matrix // ==================== Swap ==================== // -static inline void fp32_matrix2x3_swap(fp32_matrix2x3_t* matrix1, fp32_matrix2x3_t* matrix2) +inline void matrix2x3_swap_fp32(matrix2x3_fp32_t* matrix1, matrix2x3_fp32_t* matrix2) { const float r1c1 = matrix2->r1c1; const float r1c2 = matrix2->r1c2; @@ -89,7 +89,7 @@ static inline void fp32_matrix2x3_swap(fp32_matrix2x3_t* matrix1, fp32_matrix2x3 matrix1->r3c2 = r3c2; } -static inline void fp64_matrix2x3_swap(fp64_matrix2x3_t* matrix1, fp64_matrix2x3_t* matrix2) +inline void matrix2x3_swap_fp64(matrix2x3_fp64_t* matrix1, matrix2x3_fp64_t* matrix2) { const double r1c1 = matrix2->r1c1; const double r1c2 = matrix2->r1c2; @@ -121,7 +121,7 @@ static inline void fp64_matrix2x3_swap(fp64_matrix2x3_t* matrix1, fp64_matrix2x3 // ============= Copy to twin type ============== // -static inline void fp32_matrix2x3_set_from_fp64(const fp64_matrix2x3_t* from, fp32_matrix2x3_t* to) +inline void matrix2x3_fp32_set_from_fp64(const matrix2x3_fp64_t* from, matrix2x3_fp32_t* to) { to->r1c1 = (float) from->r1c1; to->r1c2 = (float) from->r1c2; @@ -133,7 +133,7 @@ static inline void fp32_matrix2x3_set_from_fp64(const fp64_matrix2x3_t* from, fp to->r3c2 = (float) from->r3c2; } -static inline void fp64_matrix2x3_set_from_fp32(const fp32_matrix2x3_t* from, fp64_matrix2x3_t* to) +inline void matrix2x3_fp64_set_from_fp32(const matrix2x3_fp32_t* from, matrix2x3_fp64_t* to) { to->r1c1 = from->r1c1; to->r1c2 = from->r1c2; @@ -147,7 +147,7 @@ static inline void fp64_matrix2x3_set_from_fp32(const fp32_matrix2x3_t* from, fp // =============== Set transposed =============== // -static inline void fp32_matrix2x3_set_transposed(const fp32_matrix3x2_t* from, fp32_matrix2x3_t* to) +inline void matrix2x3_fp32_set_transposed(const matrix3x2_fp32_t* from, matrix2x3_fp32_t* to) { to->r1c1 = from->r1c1; to->r1c2 = from->r2c1; @@ -159,7 +159,7 @@ static inline void fp32_matrix2x3_set_transposed(const fp32_matrix3x2_t* from, f to->r3c2 = from->r2c3; } -static inline void fp64_matrix2x3_set_transposed(const fp64_matrix3x2_t* from, fp64_matrix2x3_t* to) +inline void matrix2x3_fp64_set_transposed(const matrix3x2_fp64_t* from, matrix2x3_fp64_t* to) { to->r1c1 = from->r1c1; to->r1c2 = from->r2c1; @@ -173,7 +173,7 @@ static inline void fp64_matrix2x3_set_transposed(const fp64_matrix3x2_t* from, f // =============== Set transposed =============== // -static inline void fp32_matrix2x3_set_transposed_fp64(const fp64_matrix3x2_t* from, fp32_matrix2x3_t* to) +inline void matrix2x3_fp32_set_transposed_fp64(const matrix3x2_fp64_t* from, matrix2x3_fp32_t* to) { to->r1c1 = (float) from->r1c1; to->r1c2 = (float) from->r2c1; @@ -185,7 +185,7 @@ static inline void fp32_matrix2x3_set_transposed_fp64(const fp64_matrix3x2_t* fr to->r3c2 = (float) from->r2c3; } -static inline void fp64_matrix2x3_set_transposed_fp32(const fp32_matrix3x2_t* from, fp64_matrix2x3_t* to) +inline void matrix2x3_fp64_set_transposed_fp32(const matrix3x2_fp32_t* from, matrix2x3_fp64_t* to) { to->r1c1 = from->r1c1; to->r1c2 = from->r2c1; @@ -199,13 +199,13 @@ static inline void fp64_matrix2x3_set_transposed_fp32(const fp32_matrix3x2_t* fr // ================= Set Row 1 ================== // -static inline void fp32_matrix2x3_set_row1(const float c1, const float c2, fp32_matrix2x3_t* matrix) +inline void matrix2x3_fp32_set_row1(const float c1, const float c2, matrix2x3_fp32_t* matrix) { matrix->r1c1 = c1; matrix->r1c2 = c2; } -static inline void fp64_matrix2x3_set_row1(const double c1, const double c2, fp64_matrix2x3_t* matrix) +inline void matrix2x3_fp64_set_row1(const double c1, const double c2, matrix2x3_fp64_t* matrix) { matrix->r1c1 = c1; matrix->r1c2 = c2; @@ -213,13 +213,13 @@ static inline void fp64_matrix2x3_set_row1(const double c1, const double c2, fp6 // ================= Set Row 2 ================== // -static inline void fp32_matrix2x3_set_row2(const float c1, const float c2, fp32_matrix2x3_t* matrix) +inline void matrix2x3_fp32_set_row2(const float c1, const float c2, matrix2x3_fp32_t* matrix) { matrix->r2c1 = c1; matrix->r2c2 = c2; } -static inline void fp64_matrix2x3_set_row2(const double c1, const double c2, fp64_matrix2x3_t* matrix) +inline void matrix2x3_fp64_set_row2(const double c1, const double c2, matrix2x3_fp64_t* matrix) { matrix->r2c1 = c1; matrix->r2c2 = c2; @@ -227,13 +227,13 @@ static inline void fp64_matrix2x3_set_row2(const double c1, const double c2, fp6 // ================= Set Row 3 ================== // -static inline void fp32_matrix2x3_set_row3(const float c1, const float c2, fp32_matrix2x3_t* matrix) +inline void matrix2x3_fp32_set_row3(const float c1, const float c2, matrix2x3_fp32_t* matrix) { matrix->r3c1 = c1; matrix->r3c2 = c2; } -static inline void fp64_matrix2x3_set_row3(const double c1, const double c2, fp64_matrix2x3_t* matrix) +inline void matrix2x3_fp64_set_row3(const double c1, const double c2, matrix2x3_fp64_t* matrix) { matrix->r3c1 = c1; matrix->r3c2 = c2; @@ -241,14 +241,14 @@ static inline void fp64_matrix2x3_set_row3(const double c1, const double c2, fp6 // ================ Set Column 1 ================ // -static inline void fp32_matrix2x3_set_column1(const float r1, const float r2, const float r3, fp32_matrix2x3_t* matrix) +inline void matrix2x3_fp32_set_column1(const float r1, const float r2, const float r3, matrix2x3_fp32_t* matrix) { matrix->r1c1 = r1; matrix->r2c1 = r2; matrix->r3c1 = r3; } -static inline void fp64_matrix2x3_set_column1(const double r1, const double r2, const double r3, fp64_matrix2x3_t* matrix) +inline void matrix2x3_fp64_set_column1(const double r1, const double r2, const double r3, matrix2x3_fp64_t* matrix) { matrix->r1c1 = r1; matrix->r2c1 = r2; @@ -257,14 +257,14 @@ static inline void fp64_matrix2x3_set_column1(const double r1, const double r2, // ================ Set Column 2 ================ // -static inline void fp32_matrix2x3_set_column2(const float r1, const float r2, const float r3, fp32_matrix2x3_t* matrix) +inline void matrix2x3_fp32_set_column2(const float r1, const float r2, const float r3, matrix2x3_fp32_t* matrix) { matrix->r1c2 = r1; matrix->r2c2 = r2; matrix->r3c2 = r3; } -static inline void fp64_matrix2x3_set_column2(const double r1, const double r2, const double r3, fp64_matrix2x3_t* matrix) +inline void matrix2x3_fp64_set_column2(const double r1, const double r2, const double r3, matrix2x3_fp64_t* matrix) { matrix->r1c2 = r1; matrix->r2c2 = r2; @@ -273,7 +273,7 @@ static inline void fp64_matrix2x3_set_column2(const double r1, const double r2, // ================ Append scaled =============== // -static inline void fp32_matrix2x3_append_scaled(fp32_matrix2x3_t* basic_vector, const fp32_matrix2x3_t* scalable_vector, const float scale) +inline void matrix2x3_fp32_append_scaled(matrix2x3_fp32_t* basic_vector, const matrix2x3_fp32_t* scalable_vector, const float scale) { basic_vector->r1c1 += scalable_vector->r1c1 * scale; basic_vector->r1c2 += scalable_vector->r1c2 * scale; @@ -285,7 +285,7 @@ static inline void fp32_matrix2x3_append_scaled(fp32_matrix2x3_t* basic_vector, basic_vector->r3c2 += scalable_vector->r3c2 * scale; } -static inline void fp64_matrix2x3_append_scaled(fp64_matrix2x3_t* basic_vector, const fp64_matrix2x3_t* scalable_vector, const double scale) +inline void matrix2x3_fp64_append_scaled(matrix2x3_fp64_t* basic_vector, const matrix2x3_fp64_t* scalable_vector, const double scale) { basic_vector->r1c1 += scalable_vector->r1c1 * scale; basic_vector->r1c2 += scalable_vector->r1c2 * scale; @@ -299,7 +299,7 @@ static inline void fp64_matrix2x3_append_scaled(fp64_matrix2x3_t* basic_vector, // ================== Addition ================== // -static inline void fp32_matrix2x3_add(const fp32_matrix2x3_t* matrix1, const fp32_matrix2x3_t* matrix2, fp32_matrix2x3_t* sum) +inline void matrix2x3_fp32_add(const matrix2x3_fp32_t* matrix1, const matrix2x3_fp32_t* matrix2, matrix2x3_fp32_t* sum) { sum->r1c1 = matrix1->r1c1 + matrix2->r1c1; sum->r1c2 = matrix1->r1c2 + matrix2->r1c2; @@ -311,7 +311,7 @@ static inline void fp32_matrix2x3_add(const fp32_matrix2x3_t* matrix1, const fp3 sum->r3c2 = matrix1->r3c2 + matrix2->r3c2; } -static inline void fp64_matrix2x3_add(const fp64_matrix2x3_t* matrix1, const fp64_matrix2x3_t* matrix2, fp64_matrix2x3_t* sum) +inline void matrix2x3_fp64_add(const matrix2x3_fp64_t* matrix1, const matrix2x3_fp64_t* matrix2, matrix2x3_fp64_t* sum) { sum->r1c1 = matrix1->r1c1 + matrix2->r1c1; sum->r1c2 = matrix1->r1c2 + matrix2->r1c2; @@ -325,7 +325,7 @@ static inline void fp64_matrix2x3_add(const fp64_matrix2x3_t* matrix1, const fp6 // ================ Subtraction ================= // -static inline void fp32_matrix2x3_subtract(const fp32_matrix2x3_t* minuend, const fp32_matrix2x3_t* subtrahend, fp32_matrix2x3_t* difference) +inline void matrix2x3_fp32_subtract(const matrix2x3_fp32_t* minuend, const matrix2x3_fp32_t* subtrahend, matrix2x3_fp32_t* difference) { difference->r1c1 = minuend->r1c1 - subtrahend->r1c1; difference->r1c2 = minuend->r1c2 - subtrahend->r1c2; @@ -337,7 +337,7 @@ static inline void fp32_matrix2x3_subtract(const fp32_matrix2x3_t* minuend, cons difference->r3c2 = minuend->r3c2 - subtrahend->r3c2; } -static inline void fp64_matrix2x3_subtract(const fp64_matrix2x3_t* minuend, const fp64_matrix2x3_t* subtrahend, fp64_matrix2x3_t* difference) +inline void matrix2x3_fp64_subtract(const matrix2x3_fp64_t* minuend, const matrix2x3_fp64_t* subtrahend, matrix2x3_fp64_t* difference) { difference->r1c1 = minuend->r1c1 - subtrahend->r1c1; difference->r1c2 = minuend->r1c2 - subtrahend->r1c2; @@ -351,7 +351,7 @@ static inline void fp64_matrix2x3_subtract(const fp64_matrix2x3_t* minuend, cons // =============== Multiplication =============== // -static inline void fp32_matrix2x3_multiply(const fp32_matrix2x3_t* multiplicand, const float multiplier, fp32_matrix2x3_t* product) +inline void matrix2x3_fp32_multiply(const matrix2x3_fp32_t* multiplicand, const float multiplier, matrix2x3_fp32_t* product) { product->r1c1 = multiplicand->r1c1 * multiplier; product->r1c2 = multiplicand->r1c2 * multiplier; @@ -363,7 +363,7 @@ static inline void fp32_matrix2x3_multiply(const fp32_matrix2x3_t* multiplicand, product->r3c2 = multiplicand->r3c2 * multiplier; } -static inline void fp64_matrix2x3_multiply(const fp64_matrix2x3_t* multiplicand, const double multiplier, fp64_matrix2x3_t* product) +inline void matrix2x3_fp64_multiply(const matrix2x3_fp64_t* multiplicand, const double multiplier, matrix2x3_fp64_t* product) { product->r1c1 = multiplicand->r1c1 * multiplier; product->r1c2 = multiplicand->r1c2 * multiplier; @@ -377,25 +377,25 @@ static inline void fp64_matrix2x3_multiply(const fp64_matrix2x3_t* multiplicand, // ================== Division ================== // -static inline void fp32_matrix2x3_divide(const fp32_matrix2x3_t* dividend, const float divisor, fp32_matrix2x3_t* quotient) +inline void matrix2x3_fp32_divide(const matrix2x3_fp32_t* dividend, const float divisor, matrix2x3_fp32_t* quotient) { - fp32_matrix2x3_multiply(dividend, 1.0f / divisor, quotient); + matrix2x3_fp32_multiply(dividend, 1.0f / divisor, quotient); } -static inline void fp64_matrix2x3_divide(const fp64_matrix2x3_t* dividend, const double divisor, fp64_matrix2x3_t* quotient) +inline void matrix2x3_fp64_divide(const matrix2x3_fp64_t* dividend, const double divisor, matrix2x3_fp64_t* quotient) { - fp64_matrix2x3_multiply(dividend, 1.0 / divisor, quotient); + matrix2x3_fp64_multiply(dividend, 1.0 / divisor, quotient); } // ============ Left Vector Product ============= // -static inline void fp32_matrix2x3_left_product(const fp32_vector3_t* vector, const fp32_matrix2x3_t* matrix, fp32_vector2_t* result) +inline void matrix2x3_fp32_left_product(const vector3_fp32_t* vector, const matrix2x3_fp32_t* matrix, vector2_fp32_t* result) { result->x1 = vector->x1 * matrix->r1c1 + vector->x2 * matrix->r2c1 + vector->x3 * matrix->r3c1; result->x2 = vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2 + vector->x3 * matrix->r3c2; } -static inline void fp64_matrix2x3_left_product(const fp64_vector3_t* vector, const fp64_matrix2x3_t* matrix, fp64_vector2_t* result) +inline void matrix2x3_fp64_left_product(const vector3_fp64_t* vector, const matrix2x3_fp64_t* matrix, vector2_fp64_t* result) { result->x1 = vector->x1 * matrix->r1c1 + vector->x2 * matrix->r2c1 + vector->x3 * matrix->r3c1; result->x2 = vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2 + vector->x3 * matrix->r3c2; @@ -403,14 +403,14 @@ static inline void fp64_matrix2x3_left_product(const fp64_vector3_t* vector, con // ============ Right Vector Product ============ // -static inline void fp32_matrix2x3_right_product(const fp32_matrix2x3_t* matrix, const fp32_vector2_t* vector, fp32_vector3_t* result) +inline void matrix2x3_fp32_right_product(const matrix2x3_fp32_t* matrix, const vector2_fp32_t* vector, vector3_fp32_t* result) { result->x1 = matrix->r1c1 * vector->x1 + matrix->r1c2 * vector->x2; result->x2 = matrix->r2c1 * vector->x1 + matrix->r2c2 * vector->x2; result->x3 = matrix->r3c1 * vector->x1 + matrix->r3c2 * vector->x2; } -static inline void fp64_matrix2x3_right_product(const fp64_matrix2x3_t* matrix, const fp64_vector2_t* vector, fp64_vector3_t* result) +inline void matrix2x3_fp64_right_product(const matrix2x3_fp64_t* matrix, const vector2_fp64_t* vector, vector3_fp64_t* result) { result->x1 = matrix->r1c1 * vector->x1 + matrix->r1c2 * vector->x2; result->x2 = matrix->r2c1 * vector->x1 + matrix->r2c2 * vector->x2; diff --git a/basic-geometry/matrix3x2.h b/basic-geometry/matrix3x2.h index bcb7bb6..f851879 100644 --- a/basic-geometry/matrix3x2.h +++ b/basic-geometry/matrix3x2.h @@ -7,7 +7,7 @@ // =================== Reset ==================== // -static inline void fp32_matrix3x2_reset(fp32_matrix3x2_t* matrix) +inline void matrix3x2_reset_fp32(matrix3x2_fp32_t* matrix) { matrix->r1c1 = 0.0f; matrix->r1c2 = 0.0f; @@ -18,7 +18,7 @@ static inline void fp32_matrix3x2_reset(fp32_matrix3x2_t* matrix) matrix->r2c3 = 0.0f; } -static inline void fp64_matrix3x2_reset(fp64_matrix3x2_t* matrix) +inline void matrix3x2_reset_fp64(matrix3x2_fp64_t* matrix) { matrix->r1c1 = 0.0; matrix->r1c2 = 0.0; @@ -31,7 +31,7 @@ static inline void fp64_matrix3x2_reset(fp64_matrix3x2_t* matrix) // ==================== Copy ==================== // -static inline void fp32_matrix3x2_copy(const fp32_matrix3x2_t* from, fp32_matrix3x2_t* to) +inline void matrix3x2_copy_fp32(const matrix3x2_fp32_t* from, matrix3x2_fp32_t* to) { to->r1c1 = from->r1c1; to->r1c2 = from->r1c2; @@ -42,7 +42,7 @@ static inline void fp32_matrix3x2_copy(const fp32_matrix3x2_t* from, fp32_matrix to->r2c3 = from->r2c3; } -static inline void fp64_matrix3x2_copy(const fp64_matrix3x2_t* from, fp64_matrix3x2_t* to) +inline void matrix3x2_copy_fp64(const matrix3x2_fp64_t* from, matrix3x2_fp64_t* to) { to->r1c1 = from->r1c1; to->r1c2 = from->r1c2; @@ -55,7 +55,7 @@ static inline void fp64_matrix3x2_copy(const fp64_matrix3x2_t* from, fp64_matrix // ==================== Swap ==================== // -static inline void fp32_matrix3x2_swap(fp32_matrix3x2_t* matrix1, fp32_matrix3x2_t* matrix2) +inline void matrix3x2_swap_fp32(matrix3x2_fp32_t* matrix1, matrix3x2_fp32_t* matrix2) { const float r1c1 = matrix2->r1c1; const float r1c2 = matrix2->r1c2; @@ -82,7 +82,7 @@ static inline void fp32_matrix3x2_swap(fp32_matrix3x2_t* matrix1, fp32_matrix3x2 matrix1->r2c3 = r2c3; } -static inline void fp64_matrix3x2_swap(fp64_matrix3x2_t* matrix1, fp64_matrix3x2_t* matrix2) +inline void matrix3x2_swap_fp64(matrix3x2_fp64_t* matrix1, matrix3x2_fp64_t* matrix2) { const double r1c1 = matrix2->r1c1; const double r1c2 = matrix2->r1c2; @@ -111,7 +111,7 @@ static inline void fp64_matrix3x2_swap(fp64_matrix3x2_t* matrix1, fp64_matrix3x2 // ============= Set from twin type ============= // -static inline void fp32_matrix3x2_set_from_fp64(const fp64_matrix3x2_t* from, fp32_matrix3x2_t* to) +inline void matrix3x2_fp32_set_from_fp64(const matrix3x2_fp64_t* from, matrix3x2_fp32_t* to) { to->r1c1 = (float) from->r1c1; to->r1c2 = (float) from->r1c2; @@ -122,7 +122,7 @@ static inline void fp32_matrix3x2_set_from_fp64(const fp64_matrix3x2_t* from, fp to->r2c3 = (float) from->r2c3; } -static inline void fp64_matrix3x2_set_from_fp32(const fp32_matrix3x2_t* from, fp64_matrix3x2_t* to) +inline void matrix3x2_fp64_set_from_fp32(const matrix3x2_fp32_t* from, matrix3x2_fp64_t* to) { to->r1c1 = from->r1c1; to->r1c2 = from->r1c2; @@ -135,7 +135,7 @@ static inline void fp64_matrix3x2_set_from_fp32(const fp32_matrix3x2_t* from, fp // =============== Set transposed =============== // -static inline void fp32_matrix3x2_set_transposed(const fp32_matrix2x3_t* from, fp32_matrix3x2_t* to) +inline void matrix3x2_fp32_set_transposed(const matrix2x3_fp32_t* from, matrix3x2_fp32_t* to) { to->r1c1 = from->r1c1; to->r1c2 = from->r2c1; @@ -146,7 +146,7 @@ static inline void fp32_matrix3x2_set_transposed(const fp32_matrix2x3_t* from, f to->r2c3 = from->r3c2; } -static inline void fp64_matrix3x2_set_transposed(const fp64_matrix2x3_t* from, fp64_matrix3x2_t* to) +inline void matrix3x2_fp64_set_transposed(const matrix2x3_fp64_t* from, matrix3x2_fp64_t* to) { to->r1c1 = from->r1c1; to->r1c2 = from->r2c1; @@ -159,7 +159,7 @@ static inline void fp64_matrix3x2_set_transposed(const fp64_matrix2x3_t* from, f // =============== Set transposed =============== // -static inline void fp32_matrix3x2_set_transposed_fp64(const fp64_matrix2x3_t* from, fp32_matrix3x2_t* to) +inline void matrix3x2_fp32_set_transposed_fp64(const matrix2x3_fp64_t* from, matrix3x2_fp32_t* to) { to->r1c1 = (float) from->r1c1; to->r1c2 = (float) from->r2c1; @@ -170,7 +170,7 @@ static inline void fp32_matrix3x2_set_transposed_fp64(const fp64_matrix2x3_t* fr to->r2c3 = (float) from->r3c2; } -static inline void fp64_matrix3x2_set_transposed_fp32(const fp32_matrix2x3_t* from, fp64_matrix3x2_t* to) +inline void matrix3x2_fp64_set_transposed_fp32(const matrix2x3_fp32_t* from, matrix3x2_fp64_t* to) { to->r1c1 = from->r1c1; to->r1c2 = from->r2c1; @@ -183,14 +183,14 @@ static inline void fp64_matrix3x2_set_transposed_fp32(const fp32_matrix2x3_t* fr // ================= Set Row 1 ================== // -static inline void fp32_matrix3x2_set_row1(const float c1, const float c2, const float c3, fp32_matrix3x2_t* matrix) +inline void matrix3x2_fp32_set_row1(const float c1, const float c2, const float c3, matrix3x2_fp32_t* matrix) { matrix->r1c1 = c1; matrix->r1c2 = c2; matrix->r1c3 = c3; } -static inline void fp64_matrix3x2_set_row1(const double c1, const double c2, const double c3, fp64_matrix3x2_t* matrix) +inline void matrix3x2_fp64_set_row1(const double c1, const double c2, const double c3, matrix3x2_fp64_t* matrix) { matrix->r1c1 = c1; matrix->r1c2 = c2; @@ -199,14 +199,14 @@ static inline void fp64_matrix3x2_set_row1(const double c1, const double c2, con // ================= Set Row 2 ================== // -static inline void fp32_matrix3x2_set_row2(const float c1, const float c2, const float c3, fp32_matrix3x2_t* matrix) +inline void matrix3x2_fp32_set_row2(const float c1, const float c2, const float c3, matrix3x2_fp32_t* matrix) { matrix->r2c1 = c1; matrix->r2c2 = c2; matrix->r2c3 = c3; } -static inline void fp64_matrix3x2_set_row2(const double c1, const double c2, const double c3, fp64_matrix3x2_t* matrix) +inline void matrix3x2_fp64_set_row2(const double c1, const double c2, const double c3, matrix3x2_fp64_t* matrix) { matrix->r2c1 = c1; matrix->r2c2 = c2; @@ -215,13 +215,13 @@ static inline void fp64_matrix3x2_set_row2(const double c1, const double c2, con // ================ Set Column 1 ================ // -static inline void fp32_matrix3x2_set_column1(const float r1, const float r2, fp32_matrix3x2_t* matrix) +inline void matrix3x2_fp32_set_column1(const float r1, const float r2, matrix3x2_fp32_t* matrix) { matrix->r1c1 = r1; matrix->r2c1 = r2; } -static inline void fp64_matrix3x2_set_column1(const double r1, const double r2, fp64_matrix3x2_t* matrix) +inline void matrix3x2_fp64_set_column1(const double r1, const double r2, matrix3x2_fp64_t* matrix) { matrix->r1c1 = r1; matrix->r2c1 = r2; @@ -229,13 +229,13 @@ static inline void fp64_matrix3x2_set_column1(const double r1, const double r2, // ================ Set Column 2 ================ // -static inline void fp32_matrix3x2_set_column2(const float r1, const float r2, fp32_matrix3x2_t* matrix) +inline void matrix3x2_fp32_set_column2(const float r1, const float r2, matrix3x2_fp32_t* matrix) { matrix->r1c2 = r1; matrix->r2c2 = r2; } -static inline void fp64_matrix3x2_set_column2(const double r1, const double r2, fp64_matrix3x2_t* matrix) +inline void matrix3x2_fp64_set_column2(const double r1, const double r2, matrix3x2_fp64_t* matrix) { matrix->r1c2 = r1; matrix->r2c2 = r2; @@ -243,13 +243,13 @@ static inline void fp64_matrix3x2_set_column2(const double r1, const double r2, // ================ Set Column 3 ================ // -static inline void fp32_matrix3x2_set_column3(const float r1, const float r2, fp32_matrix3x2_t* matrix) +inline void matrix3x2_fp32_set_column3(const float r1, const float r2, matrix3x2_fp32_t* matrix) { matrix->r1c3 = r1; matrix->r2c3 = r2; } -static inline void fp64_matrix3x2_set_column3(const double r1, const double r2, fp64_matrix3x2_t* matrix) +inline void matrix3x2_fp64_set_column3(const double r1, const double r2, matrix3x2_fp64_t* matrix) { matrix->r1c3 = r1; matrix->r2c3 = r2; @@ -257,7 +257,7 @@ static inline void fp64_matrix3x2_set_column3(const double r1, const double r2, // ================ Append scaled =============== // -static inline void fp32_matrix3x2_append_scaled(fp32_matrix3x2_t* basic_vector, const fp32_matrix3x2_t* scalable_vector, const float scale) +inline void matrix3x2_fp32_append_scaled(matrix3x2_fp32_t* basic_vector, const matrix3x2_fp32_t* scalable_vector, const float scale) { basic_vector->r1c1 += scalable_vector->r1c1 * scale; basic_vector->r1c2 += scalable_vector->r1c2 * scale; @@ -268,7 +268,7 @@ static inline void fp32_matrix3x2_append_scaled(fp32_matrix3x2_t* basic_vector, basic_vector->r2c3 += scalable_vector->r2c3 * scale; } -static inline void fp64_matrix3x2_append_scaled(fp64_matrix3x2_t* basic_vector, const fp64_matrix3x2_t* scalable_vector, const double scale) +inline void matrix3x2_fp64_append_scaled(matrix3x2_fp64_t* basic_vector, const matrix3x2_fp64_t* scalable_vector, const double scale) { basic_vector->r1c1 += scalable_vector->r1c1 * scale; basic_vector->r1c2 += scalable_vector->r1c2 * scale; @@ -281,7 +281,7 @@ static inline void fp64_matrix3x2_append_scaled(fp64_matrix3x2_t* basic_vector, // ================== Addition ================== // -static inline void fp32_matrix3x2_add(const fp32_matrix3x2_t* matrix1, const fp32_matrix3x2_t* matrix2, fp32_matrix3x2_t* sum) +inline void matrix3x2_fp32_add(const matrix3x2_fp32_t* matrix1, const matrix3x2_fp32_t* matrix2, matrix3x2_fp32_t* sum) { sum->r1c1 = matrix1->r1c1 + matrix2->r1c1; sum->r1c2 = matrix1->r1c2 + matrix2->r1c2; @@ -292,7 +292,7 @@ static inline void fp32_matrix3x2_add(const fp32_matrix3x2_t* matrix1, const fp3 sum->r2c3 = matrix1->r2c3 + matrix2->r2c3; } -static inline void fp64_matrix3x2_add(const fp64_matrix3x2_t* matrix1, const fp64_matrix3x2_t* matrix2, fp64_matrix3x2_t* sum) +inline void matrix3x2_fp64_add(const matrix3x2_fp64_t* matrix1, const matrix3x2_fp64_t* matrix2, matrix3x2_fp64_t* sum) { sum->r1c1 = matrix1->r1c1 + matrix2->r1c1; sum->r1c2 = matrix1->r1c2 + matrix2->r1c2; @@ -305,7 +305,7 @@ static inline void fp64_matrix3x2_add(const fp64_matrix3x2_t* matrix1, const fp6 // ================ Subtraction ================= // -static inline void fp32_matrix3x2_subtract(const fp32_matrix3x2_t* minuend, const fp32_matrix3x2_t* subtrahend, fp32_matrix3x2_t* difference) +inline void matrix3x2_fp32_subtract(const matrix3x2_fp32_t* minuend, const matrix3x2_fp32_t* subtrahend, matrix3x2_fp32_t* difference) { difference->r1c1 = minuend->r1c1 - subtrahend->r1c1; difference->r1c2 = minuend->r1c2 - subtrahend->r1c2; @@ -316,7 +316,7 @@ static inline void fp32_matrix3x2_subtract(const fp32_matrix3x2_t* minuend, cons difference->r2c3 = minuend->r2c3 - subtrahend->r2c3; } -static inline void fp64_matrix3x2_subtract(const fp64_matrix3x2_t* minuend, const fp64_matrix3x2_t* subtrahend, fp64_matrix3x2_t* difference) +inline void matrix3x2_fp64_subtract(const matrix3x2_fp64_t* minuend, const matrix3x2_fp64_t* subtrahend, matrix3x2_fp64_t* difference) { difference->r1c1 = minuend->r1c1 - subtrahend->r1c1; difference->r1c2 = minuend->r1c2 - subtrahend->r1c2; @@ -329,7 +329,7 @@ static inline void fp64_matrix3x2_subtract(const fp64_matrix3x2_t* minuend, cons // =============== Multiplication =============== // -static inline void fp32_matrix3x2_multiply(const fp32_matrix3x2_t* multiplicand, const float multiplier, fp32_matrix3x2_t* product) +inline void matrix3x2_fp32_multiply(const matrix3x2_fp32_t* multiplicand, const float multiplier, matrix3x2_fp32_t* product) { product->r1c1 = multiplicand->r1c1 * multiplier; product->r1c2 = multiplicand->r1c2 * multiplier; @@ -340,7 +340,7 @@ static inline void fp32_matrix3x2_multiply(const fp32_matrix3x2_t* multiplicand, product->r2c3 = multiplicand->r2c3 * multiplier; } -static inline void fp64_matrix3x2_multiply(const fp64_matrix3x2_t* multiplicand, const double multiplier, fp64_matrix3x2_t* product) +inline void matrix3x2_fp64_multiply(const matrix3x2_fp64_t* multiplicand, const double multiplier, matrix3x2_fp64_t* product) { product->r1c1 = multiplicand->r1c1 * multiplier; product->r1c2 = multiplicand->r1c2 * multiplier; @@ -353,26 +353,26 @@ static inline void fp64_matrix3x2_multiply(const fp64_matrix3x2_t* multiplicand, // ================== Division ================== // -static inline void fp32_matrix3x2_divide(const fp32_matrix3x2_t* dividend, const float divisor, fp32_matrix3x2_t* quotient) +inline void matrix3x2_fp32_divide(const matrix3x2_fp32_t* dividend, const float divisor, matrix3x2_fp32_t* quotient) { - fp32_matrix3x2_multiply(dividend, 1.0f / divisor, quotient); + matrix3x2_fp32_multiply(dividend, 1.0f / divisor, quotient); } -static inline void fp64_matrix3x2_divide(const fp64_matrix3x2_t* dividend, const double divisor, fp64_matrix3x2_t* quotient) +inline void matrix3x2_fp64_divide(const matrix3x2_fp64_t* dividend, const double divisor, matrix3x2_fp64_t* quotient) { - fp64_matrix3x2_multiply(dividend, 1.0 / divisor, quotient); + matrix3x2_fp64_multiply(dividend, 1.0 / divisor, quotient); } // ============ Left Vector Product ============= // -static inline void fp32_matrix3x2_left_product(const fp32_vector2_t* vector, const fp32_matrix3x2_t* matrix, fp32_vector3_t* result) +inline void matrix3x2_fp32_left_product(const vector2_fp32_t* vector, const matrix3x2_fp32_t* matrix, vector3_fp32_t* result) { result->x1 = vector->x1 * matrix->r1c1 + vector->x2 * matrix->r2c1; result->x2 = vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2; result->x3 = vector->x1 * matrix->r1c3 + vector->x2 * matrix->r2c3; } -static inline void fp64_matrix3x2_left_product(const fp64_vector2_t* vector, const fp64_matrix3x2_t* matrix, fp64_vector3_t* result) +inline void matrix3x2_fp64_left_product(const vector2_fp64_t* vector, const matrix3x2_fp64_t* matrix, vector3_fp64_t* result) { result->x1 = vector->x1 * matrix->r1c1 + vector->x2 * matrix->r2c1; result->x2 = vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2; @@ -381,13 +381,13 @@ static inline void fp64_matrix3x2_left_product(const fp64_vector2_t* vector, con // ============ Right Vector Product ============ // -static inline void fp32_matrix3x2_right_product(const fp32_matrix3x2_t* matrix, const fp32_vector3_t* vector, fp32_vector2_t* result) +inline void matrix3x2_fp32_right_product(const matrix3x2_fp32_t* matrix, const vector3_fp32_t* vector, vector2_fp32_t* result) { result->x1 = matrix->r1c1 * vector->x1 + matrix->r1c2 * vector->x2 + matrix->r1c3 * vector->x3; result->x2 = matrix->r2c1 * vector->x1 + matrix->r2c2 * vector->x2 + matrix->r2c3 * vector->x3; } -static inline void fp64_matrix3x2_right_product(const fp64_matrix3x2_t* matrix, const fp64_vector3_t* vector, fp64_vector2_t* result) +inline void matrix3x2_fp64_right_product(const matrix3x2_fp64_t* matrix, const vector3_fp64_t* vector, vector2_fp64_t* result) { result->x1 = matrix->r1c1 * vector->x1 + matrix->r1c2 * vector->x2 + matrix->r1c3 * vector->x3; result->x2 = matrix->r2c1 * vector->x1 + matrix->r2c2 * vector->x2 + matrix->r2c3 * vector->x3; diff --git a/basic-geometry/matrix3x3.c b/basic-geometry/matrix3x3.c index 3c19b0c..bcd8e79 100644 --- a/basic-geometry/matrix3x3.c +++ b/basic-geometry/matrix3x3.c @@ -2,9 +2,9 @@ // ================= Inversion ================== // -int fp32_matrix3x3_invert(fp32_matrix3x3_t* matrix) +int matrix3x3_invert_fp32(matrix3x3_fp32_t* matrix) { - const float determinant = fp32_matrix3x3_get_determinant(matrix); + const float determinant = matrix3x3_fp32_get_determinant(matrix); if (-FP32_EPSYLON <= determinant && determinant <= FP32_EPSYLON) { return 0; @@ -39,9 +39,9 @@ int fp32_matrix3x3_invert(fp32_matrix3x3_t* matrix) return 1; } -int fp64_matrix3x3_invert(fp64_matrix3x3_t* matrix) +int matrix3x3_invert_fp64(matrix3x3_fp64_t* matrix) { - const double determinant = fp64_matrix3x3_get_determinant(matrix); + const double determinant = matrix3x3_fp64_get_determinant(matrix); if (-FP64_EPSYLON <= determinant && determinant <= FP64_EPSYLON) { return 0; @@ -78,9 +78,9 @@ int fp64_matrix3x3_invert(fp64_matrix3x3_t* matrix) // ================ Make Inverted =============== // -int fp32_matrix3x3_set_inverted(const fp32_matrix3x3_t* matrix, fp32_matrix3x3_t* result) +int matrix3x3_fp32_set_inverted(const matrix3x3_fp32_t* matrix, matrix3x3_fp32_t* result) { - const float determinant = fp32_matrix3x3_get_determinant(matrix); + const float determinant = matrix3x3_fp32_get_determinant(matrix); if (-FP32_EPSYLON <= determinant && determinant <= FP32_EPSYLON) { return 0; @@ -115,9 +115,9 @@ int fp32_matrix3x3_set_inverted(const fp32_matrix3x3_t* matrix, fp32_matrix3x3_t return 1; } -int fp64_matrix3x3_set_inverted(const fp64_matrix3x3_t* matrix, fp64_matrix3x3_t* result) +int matrix3x3_fp64_set_inverted(const matrix3x3_fp64_t* matrix, matrix3x3_fp64_t* result) { - const double determinant = fp64_matrix3x3_get_determinant(matrix); + const double determinant = matrix3x3_fp64_get_determinant(matrix); if (-FP64_EPSYLON <= determinant && determinant <= FP64_EPSYLON) { return 0; diff --git a/basic-geometry/matrix3x3.h b/basic-geometry/matrix3x3.h index 343a974..35838d4 100644 --- a/basic-geometry/matrix3x3.h +++ b/basic-geometry/matrix3x3.h @@ -6,7 +6,7 @@ // =================== Reset ==================== // -static inline void fp32_matrix3x3_reset(fp32_matrix3x3_t* matrix) +inline void matrix3x3_reset_fp32(matrix3x3_fp32_t* matrix) { matrix->r1c1 = 0.0f; matrix->r1c2 = 0.0f; @@ -21,7 +21,7 @@ static inline void fp32_matrix3x3_reset(fp32_matrix3x3_t* matrix) matrix->r3c3 = 0.0f; } -static inline void fp64_matrix3x3_reset(fp64_matrix3x3_t* matrix) +inline void matrix3x3_reset_fp64(matrix3x3_fp64_t* matrix) { matrix->r1c1 = 0.0; matrix->r1c2 = 0.0; @@ -38,7 +38,7 @@ static inline void fp64_matrix3x3_reset(fp64_matrix3x3_t* matrix) // ================== Identity ================== // -static inline void fp32_matrix3x3_set_to_identity(fp32_matrix3x3_t* matrix) +inline void matrix3x3_fp32_set_to_identity(matrix3x3_fp32_t* matrix) { matrix->r1c1 = 1.0f; matrix->r1c2 = 0.0f; @@ -53,7 +53,7 @@ static inline void fp32_matrix3x3_set_to_identity(fp32_matrix3x3_t* matrix) matrix->r3c3 = 1.0f; } -static inline void fp64_matrix3x3_set_to_identity(fp64_matrix3x3_t* matrix) +inline void matrix3x3_fp64_set_to_identity(matrix3x3_fp64_t* matrix) { matrix->r1c1 = 1.0; matrix->r1c2 = 0.0; @@ -70,7 +70,7 @@ static inline void fp64_matrix3x3_set_to_identity(fp64_matrix3x3_t* matrix) // ================ Make Diagonal =============== // -static inline void fp32_matrix3x3_set_to_diagonal(const float d1, const float d2, const float d3, fp32_matrix3x3_t* matrix) +inline void matrix3x3_fp32_set_to_diagonal(const float d1, const float d2, const float d3, matrix3x3_fp32_t* matrix) { matrix->r1c1 = d1; matrix->r1c2 = 0.0f; @@ -85,7 +85,7 @@ static inline void fp32_matrix3x3_set_to_diagonal(const float d1, const float d2 matrix->r3c3 = d2; } -static inline void fp64_matrix3x3_set_to_diagonal(const double d1, const double d2, const double d3, fp64_matrix3x3_t* matrix) +inline void matrix3x3_fp64_set_to_diagonal(const double d1, const double d2, const double d3, matrix3x3_fp64_t* matrix) { matrix->r1c1 = d1; matrix->r1c2 = 0.0; @@ -102,7 +102,7 @@ static inline void fp64_matrix3x3_set_to_diagonal(const double d1, const double // ==================== Copy ==================== // -static inline void fp32_matrix3x3_copy(const fp32_matrix3x3_t* from, fp32_matrix3x3_t* to) +inline void matrix3x3_copy_fp32(const matrix3x3_fp32_t* from, matrix3x3_fp32_t* to) { to->r1c1 = from->r1c1; to->r1c2 = from->r1c2; @@ -117,7 +117,7 @@ static inline void fp32_matrix3x3_copy(const fp32_matrix3x3_t* from, fp32_matrix to->r3c3 = from->r3c3; } -static inline void fp64_matrix3x3_copy(const fp64_matrix3x3_t* from, fp64_matrix3x3_t* to) +inline void matrix3x3_copy_fp64(const matrix3x3_fp64_t* from, matrix3x3_fp64_t* to) { to->r1c1 = from->r1c1; to->r1c2 = from->r1c2; @@ -134,7 +134,7 @@ static inline void fp64_matrix3x3_copy(const fp64_matrix3x3_t* from, fp64_matrix // ==================== Swap ==================== // -static inline void fp32_matrix3x3_swap(fp32_matrix3x3_t* matrix1, fp32_matrix3x3_t* matrix2) +inline void matrix3x3_swap_fp32(matrix3x3_fp32_t* matrix1, matrix3x3_fp32_t* matrix2) { const float r1c1 = matrix2->r1c1; const float r1c2 = matrix2->r1c2; @@ -173,7 +173,7 @@ static inline void fp32_matrix3x3_swap(fp32_matrix3x3_t* matrix1, fp32_matrix3x3 matrix1->r3c3 = r3c3; } -static inline void fp64_matrix3x3_swap(fp64_matrix3x3_t* matrix1, fp64_matrix3x3_t* matrix2) +inline void matrix3x3_swap_fp64(matrix3x3_fp64_t* matrix1, matrix3x3_fp64_t* matrix2) { const double r1c1 = matrix2->r1c1; const double r1c2 = matrix2->r1c2; @@ -214,7 +214,7 @@ static inline void fp64_matrix3x3_swap(fp64_matrix3x3_t* matrix1, fp64_matrix3x3 // ============= Set from twin type ============= // -static inline void fp32_matrix3x3_set_from_fp64(const fp64_matrix3x3_t* from, fp32_matrix3x3_t* to) +inline void matrix3x3_fp32_set_from_fp64(const matrix3x3_fp64_t* from, matrix3x3_fp32_t* to) { to->r1c1 = (float) from->r1c1; to->r1c2 = (float) from->r1c2; @@ -229,7 +229,7 @@ static inline void fp32_matrix3x3_set_from_fp64(const fp64_matrix3x3_t* from, fp to->r3c3 = (float) from->r3c3; } -static inline void fp64_matrix3x3_set_from_fp32(const fp32_matrix3x3_t* from, fp64_matrix3x3_t* to) +inline void matrix3x3_fp64_set_from_fp32(const matrix3x3_fp32_t* from, matrix3x3_fp64_t* to) { to->r1c1 = from->r1c1; to->r1c2 = from->r1c2; @@ -246,14 +246,14 @@ static inline void fp64_matrix3x3_set_from_fp32(const fp32_matrix3x3_t* from, fp // ================ Determinant ================= // -static inline float fp32_matrix3x3_get_determinant(const fp32_matrix3x3_t* matrix) +inline float matrix3x3_fp32_get_determinant(const matrix3x3_fp32_t* matrix) { return matrix->r1c1 * (matrix->r2c2 * matrix->r3c3 - matrix->r2c3 * matrix->r3c2) + matrix->r1c2 * (matrix->r2c3 * matrix->r3c1 - matrix->r2c1 * matrix->r3c3) + matrix->r1c3 * (matrix->r2c1 * matrix->r3c2 - matrix->r2c2 * matrix->r3c1); } -static inline double fp64_matrix3x3_get_determinant(const fp64_matrix3x3_t* matrix) +inline double matrix3x3_fp64_get_determinant(const matrix3x3_fp64_t* matrix) { return matrix->r1c1 * (matrix->r2c2 * matrix->r3c3 - matrix->r2c3 * matrix->r3c2) + matrix->r1c2 * (matrix->r2c3 * matrix->r3c1 - matrix->r2c1 * matrix->r3c3) @@ -262,29 +262,29 @@ static inline double fp64_matrix3x3_get_determinant(const fp64_matrix3x3_t* matr // ================== Singular ================== // -static inline int fp32_matrix3x3_is_singular(const fp32_matrix3x3_t* matrix) +inline int matrix3x3_fp32_is_singular(const matrix3x3_fp32_t* matrix) { - const float determinant = fp32_matrix3x3_get_determinant(matrix); + const float determinant = matrix3x3_fp32_get_determinant(matrix); return -FP32_EPSYLON <= determinant && determinant <= FP32_EPSYLON; } -static inline int fp64_matrix3x3_is_singular(const fp64_matrix3x3_t* matrix) +inline int matrix3x3_fp64_is_singular(const matrix3x3_fp64_t* matrix) { - const double determinant = fp64_matrix3x3_get_determinant(matrix); + const double determinant = matrix3x3_fp64_get_determinant(matrix); return -FP64_EPSYLON <= determinant && determinant <= FP64_EPSYLON; } // ================= Inversion ================== // -int fp32_matrix3x3_invert(fp32_matrix3x3_t* matrix); +int matrix3x3_invert_fp32(matrix3x3_fp32_t* matrix); -int fp64_matrix3x3_invert(fp64_matrix3x3_t* matrix); +int matrix3x3_invert_fp64(matrix3x3_fp64_t* matrix); // =============== Transposition ================ // -static inline void fp32_matrix3x3_transpose(fp32_matrix3x3_t* matrix) +inline void matrix3x3_fp32_transpose(matrix3x3_fp32_t* matrix) { float tmp = matrix->r1c2; matrix->r1c2 = matrix->r2c1; @@ -299,7 +299,7 @@ static inline void fp32_matrix3x3_transpose(fp32_matrix3x3_t* matrix) matrix->r3c2 = tmp; } -static inline void fp64_matrix3x3_transpose(fp64_matrix3x3_t* matrix) +inline void matrix3x3_fp64_transpose(matrix3x3_fp64_t* matrix) { double tmp = matrix->r1c2; matrix->r1c2 = matrix->r2c1; @@ -316,16 +316,16 @@ static inline void fp64_matrix3x3_transpose(fp64_matrix3x3_t* matrix) // ================ Make Inverted =============== // -int fp32_matrix3x3_set_inverted(const fp32_matrix3x3_t* matrix, fp32_matrix3x3_t* result); +int matrix3x3_fp32_set_inverted(const matrix3x3_fp32_t* matrix, matrix3x3_fp32_t* result); -int fp64_matrix3x3_set_inverted(const fp64_matrix3x3_t* matrix, fp64_matrix3x3_t* result); +int matrix3x3_fp64_set_inverted(const matrix3x3_fp64_t* matrix, matrix3x3_fp64_t* result); // =============== Make Transposed ============== // -static inline void fp32_matrix3x3_set_transposed(const fp32_matrix3x3_t* matrix, fp32_matrix3x3_t* result) +inline void matrix3x3_fp32_set_transposed(const matrix3x3_fp32_t* matrix, matrix3x3_fp32_t* result) { if (matrix == result) { - fp32_matrix3x3_transpose(result); + matrix3x3_fp32_transpose(result); return; } @@ -342,10 +342,10 @@ static inline void fp32_matrix3x3_set_transposed(const fp32_matrix3x3_t* matrix, result->r3c3 = matrix->r3c3; } -static inline void fp64_matrix3x3_set_transposed(const fp64_matrix3x3_t* matrix, fp64_matrix3x3_t* result) +inline void matrix3x3_fp64_set_transposed(const matrix3x3_fp64_t* matrix, matrix3x3_fp64_t* result) { if (matrix == result) { - fp64_matrix3x3_transpose(result); + matrix3x3_fp64_transpose(result); return; } @@ -364,14 +364,14 @@ static inline void fp64_matrix3x3_set_transposed(const fp64_matrix3x3_t* matrix, // ================= Set Row 1 ================== // -static inline void fp32_matrix3x3_set_row1(const float c1, const float c2, const float c3, fp32_matrix3x3_t* matrix) +inline void matrix3x3_fp32_set_row1(const float c1, const float c2, const float c3, matrix3x3_fp32_t* matrix) { matrix->r1c1 = c1; matrix->r1c2 = c2; matrix->r1c3 = c3; } -static inline void fp64_matrix3x3_set_row1(const double c1, const double c2, const double c3, fp64_matrix3x3_t* matrix) +inline void matrix3x3_fp64_set_row1(const double c1, const double c2, const double c3, matrix3x3_fp64_t* matrix) { matrix->r1c1 = c1; matrix->r1c2 = c2; @@ -380,14 +380,14 @@ static inline void fp64_matrix3x3_set_row1(const double c1, const double c2, con // ================= Set Row 2 ================== // -static inline void fp32_matrix3x3_set_row2(const float c1, const float c2, const float c3, fp32_matrix3x3_t* matrix) +inline void matrix3x3_fp32_set_row2(const float c1, const float c2, const float c3, matrix3x3_fp32_t* matrix) { matrix->r2c1 = c1; matrix->r2c2 = c2; matrix->r2c3 = c3; } -static inline void fp64_matrix3x3_set_row2(const double c1, const double c2, const double c3, fp64_matrix3x3_t* matrix) +inline void matrix3x3_fp64_set_row2(const double c1, const double c2, const double c3, matrix3x3_fp64_t* matrix) { matrix->r2c1 = c1; matrix->r2c2 = c2; @@ -396,14 +396,14 @@ static inline void fp64_matrix3x3_set_row2(const double c1, const double c2, con // ================= Set Row 3 ================== // -static inline void fp32_matrix3x3_set_row3(const float c1, const float c2, const float c3, fp32_matrix3x3_t* matrix) +inline void matrix3x3_fp32_set_row3(const float c1, const float c2, const float c3, matrix3x3_fp32_t* matrix) { matrix->r3c1 = c1; matrix->r3c2 = c2; matrix->r3c3 = c3; } -static inline void fp64_matrix3x3_set_row3(const double c1, const double c2, const double c3, fp64_matrix3x3_t* matrix) +inline void matrix3x3_fp64_set_row3(const double c1, const double c2, const double c3, matrix3x3_fp64_t* matrix) { matrix->r3c1 = c1; matrix->r3c2 = c2; @@ -412,14 +412,14 @@ static inline void fp64_matrix3x3_set_row3(const double c1, const double c2, con // ================ Set Column 1 ================ // -static inline void fp32_matrix3x3_set_column1(const float r1, const float r2, const float r3, fp32_matrix3x3_t* matrix) +inline void matrix3x3_fp32_set_column1(const float r1, const float r2, const float r3, matrix3x3_fp32_t* matrix) { matrix->r1c1 = r1; matrix->r2c1 = r2; matrix->r3c1 = r3; } -static inline void fp64_matrix3x3_set_column1(const double r1, const double r2, const double r3, fp64_matrix3x3_t* matrix) +inline void matrix3x3_fp64_set_column1(const double r1, const double r2, const double r3, matrix3x3_fp64_t* matrix) { matrix->r1c1 = r1; matrix->r2c1 = r2; @@ -428,14 +428,14 @@ static inline void fp64_matrix3x3_set_column1(const double r1, const double r2, // ================ Set Column 2 ================ // -static inline void fp32_matrix3x3_set_column2(const float r1, const float r2, const float r3, fp32_matrix3x3_t* matrix) +inline void matrix3x3_fp32_set_column2(const float r1, const float r2, const float r3, matrix3x3_fp32_t* matrix) { matrix->r1c2 = r1; matrix->r2c2 = r2; matrix->r3c2 = r3; } -static inline void fp64_matrix3x3_set_column2(const double r1, const double r2, const double r3, fp64_matrix3x3_t* matrix) +inline void matrix3x3_fp64_set_column2(const double r1, const double r2, const double r3, matrix3x3_fp64_t* matrix) { matrix->r1c2 = r1; matrix->r2c2 = r2; @@ -444,14 +444,14 @@ static inline void fp64_matrix3x3_set_column2(const double r1, const double r2, // ================ Set Column 3 ================ // -static inline void fp32_matrix3x3_set_column3(const float r1, const float r2, const float r3, fp32_matrix3x3_t* matrix) +inline void matrix3x3_fp32_set_column3(const float r1, const float r2, const float r3, matrix3x3_fp32_t* matrix) { matrix->r1c3 = r1; matrix->r2c3 = r2; matrix->r3c3 = r3; } -static inline void fp64_matrix3x3_set_column3(const double r1, const double r2, const double r3, fp64_matrix3x3_t* matrix) +inline void matrix3x3_fp64_set_column3(const double r1, const double r2, const double r3, matrix3x3_fp64_t* matrix) { matrix->r1c3 = r1; matrix->r2c3 = r2; @@ -460,7 +460,7 @@ static inline void fp64_matrix3x3_set_column3(const double r1, const double r2, // ================ Append scaled =============== // -static inline void fp32_matrix3x3_append_scaled(fp32_matrix3x3_t* basic_vector, const fp32_matrix3x3_t* scalable_vector, const float scale) +inline void matrix3x3_fp32_append_scaled(matrix3x3_fp32_t* basic_vector, const matrix3x3_fp32_t* scalable_vector, const float scale) { basic_vector->r1c1 += scalable_vector->r1c1 * scale; basic_vector->r1c2 += scalable_vector->r1c2 * scale; @@ -475,7 +475,7 @@ static inline void fp32_matrix3x3_append_scaled(fp32_matrix3x3_t* basic_vector, basic_vector->r3c3 += scalable_vector->r3c3 * scale; } -static inline void fp64_matrix3x3_append_scaled(fp64_matrix3x3_t* basic_vector, const fp64_matrix3x3_t* scalable_vector, const double scale) +inline void matrix3x3_fp64_append_scaled(matrix3x3_fp64_t* basic_vector, const matrix3x3_fp64_t* scalable_vector, const double scale) { basic_vector->r1c1 += scalable_vector->r1c1 * scale; basic_vector->r1c2 += scalable_vector->r1c2 * scale; @@ -492,7 +492,7 @@ static inline void fp64_matrix3x3_append_scaled(fp64_matrix3x3_t* basic_vector, // ================== Addition ================== // -static inline void fp32_matrix3x3_add(const fp32_matrix3x3_t* matrix1, const fp32_matrix3x3_t* matrix2, fp32_matrix3x3_t* sum) +inline void matrix3x3_fp32_add(const matrix3x3_fp32_t* matrix1, const matrix3x3_fp32_t* matrix2, matrix3x3_fp32_t* sum) { sum->r1c1 = matrix1->r1c1 + matrix2->r1c1; sum->r1c2 = matrix1->r1c2 + matrix2->r1c2; @@ -507,7 +507,7 @@ static inline void fp32_matrix3x3_add(const fp32_matrix3x3_t* matrix1, const fp3 sum->r3c3 = matrix1->r3c3 + matrix2->r3c3; } -static inline void fp64_matrix3x3_add(const fp64_matrix3x3_t* matrix1, const fp64_matrix3x3_t* matrix2, fp64_matrix3x3_t* sum) +inline void matrix3x3_fp64_add(const matrix3x3_fp64_t* matrix1, const matrix3x3_fp64_t* matrix2, matrix3x3_fp64_t* sum) { sum->r1c1 = matrix1->r1c1 + matrix2->r1c1; sum->r1c2 = matrix1->r1c2 + matrix2->r1c2; @@ -524,7 +524,7 @@ static inline void fp64_matrix3x3_add(const fp64_matrix3x3_t* matrix1, const fp6 // ================ Subtraction ================= // -static inline void fp32_matrix3x3_subtract(const fp32_matrix3x3_t* minuend, const fp32_matrix3x3_t* subtrahend, fp32_matrix3x3_t* difference) +inline void matrix3x3_fp32_subtract(const matrix3x3_fp32_t* minuend, const matrix3x3_fp32_t* subtrahend, matrix3x3_fp32_t* difference) { difference->r1c1 = minuend->r1c1 - subtrahend->r1c1; difference->r1c2 = minuend->r1c2 - subtrahend->r1c2; @@ -539,7 +539,7 @@ static inline void fp32_matrix3x3_subtract(const fp32_matrix3x3_t* minuend, cons difference->r3c3 = minuend->r3c3 - subtrahend->r3c3; } -static inline void fp64_matrix3x3_subtract(const fp64_matrix3x3_t* minuend, const fp64_matrix3x3_t* subtrahend, fp64_matrix3x3_t* difference) +inline void matrix3x3_fp64_subtract(const matrix3x3_fp64_t* minuend, const matrix3x3_fp64_t* subtrahend, matrix3x3_fp64_t* difference) { difference->r1c1 = minuend->r1c1 - subtrahend->r1c1; difference->r1c2 = minuend->r1c2 - subtrahend->r1c2; @@ -556,7 +556,7 @@ static inline void fp64_matrix3x3_subtract(const fp64_matrix3x3_t* minuend, cons // =============== Multiplication =============== // -static inline void fp32_matrix3x3_multiply(const fp32_matrix3x3_t* multiplicand, const float multiplier, fp32_matrix3x3_t* product) +inline void matrix3x3_fp32_multiply(const matrix3x3_fp32_t* multiplicand, const float multiplier, matrix3x3_fp32_t* product) { product->r1c1 = multiplicand->r1c1 * multiplier; product->r1c2 = multiplicand->r1c2 * multiplier; @@ -571,7 +571,7 @@ static inline void fp32_matrix3x3_multiply(const fp32_matrix3x3_t* multiplicand, product->r3c3 = multiplicand->r3c3 * multiplier; } -static inline void fp64_matrix3x3_multiply(const fp64_matrix3x3_t* multiplicand, const double multiplier, fp64_matrix3x3_t* product) +inline void matrix3x3_fp64_multiply(const matrix3x3_fp64_t* multiplicand, const double multiplier, matrix3x3_fp64_t* product) { product->r1c1 = multiplicand->r1c1 * multiplier; product->r1c2 = multiplicand->r1c2 * multiplier; @@ -588,19 +588,19 @@ static inline void fp64_matrix3x3_multiply(const fp64_matrix3x3_t* multiplicand, // ================== Division ================== // -static inline void fp32_matrix3x3_divide(const fp32_matrix3x3_t* dividend, const float divisor, fp32_matrix3x3_t* quotient) +inline void matrix3x3_fp32_divide(const matrix3x3_fp32_t* dividend, const float divisor, matrix3x3_fp32_t* quotient) { - fp32_matrix3x3_multiply(dividend, 1.0f / divisor, quotient); + matrix3x3_fp32_multiply(dividend, 1.0f / divisor, quotient); } -static inline void fp64_matrix3x3_divide(const fp64_matrix3x3_t* dividend, const double divisor, fp64_matrix3x3_t* quotient) +inline void matrix3x3_fp64_divide(const matrix3x3_fp64_t* dividend, const double divisor, matrix3x3_fp64_t* quotient) { - fp64_matrix3x3_multiply(dividend, 1.0 / divisor, quotient); + matrix3x3_fp64_multiply(dividend, 1.0 / divisor, quotient); } // ============ Left Vector Product ============= // -static inline void fp32_matrix3x3_left_product(const fp32_vector3_t* vector, const fp32_matrix3x3_t* matrix, fp32_vector3_t* result) +inline void matrix3x3_fp32_left_product(const vector3_fp32_t* vector, const matrix3x3_fp32_t* matrix, vector3_fp32_t* result) { const float x1 = vector->x1 * matrix->r1c1 + vector->x2 * matrix->r2c1 + vector->x3 * matrix->r3c1; const float x2 = vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2 + vector->x3 * matrix->r3c2; @@ -611,7 +611,7 @@ static inline void fp32_matrix3x3_left_product(const fp32_vector3_t* vector, con result->x3 = x3; } -static inline void fp64_matrix3x3_left_product(const fp64_vector3_t* vector, const fp64_matrix3x3_t* matrix, fp64_vector3_t* result) +inline void matrix3x3_fp64_left_product(const vector3_fp64_t* vector, const matrix3x3_fp64_t* matrix, vector3_fp64_t* result) { const double x1 = vector->x1 * matrix->r1c1 + vector->x2 * matrix->r2c1 + vector->x3 * matrix->r3c1; const double x2 = vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2 + vector->x3 * matrix->r3c2; @@ -624,7 +624,7 @@ static inline void fp64_matrix3x3_left_product(const fp64_vector3_t* vector, con // ============ Right Vector Product ============ // -static inline void fp32_matrix3x3_right_product(const fp32_matrix3x3_t* matrix, const fp32_vector3_t* vector, fp32_vector3_t* result) +inline void matrix3x3_fp32_right_product(const matrix3x3_fp32_t* matrix, const vector3_fp32_t* vector, vector3_fp32_t* result) { const float x1 = matrix->r1c1 * vector->x1 + matrix->r1c2 * vector->x2 + matrix->r1c3 * vector->x3; const float x2 = matrix->r2c1 * vector->x1 + matrix->r2c2 * vector->x2 + matrix->r2c3 * vector->x3; @@ -635,7 +635,7 @@ static inline void fp32_matrix3x3_right_product(const fp32_matrix3x3_t* matrix, result->x3 = x3; } -static inline void fp64_matrix3x3_right_product(const fp64_matrix3x3_t* matrix, const fp64_vector3_t* vector, fp64_vector3_t* result) +inline void matrix3x3_fp64_right_product(const matrix3x3_fp64_t* matrix, const vector3_fp64_t* vector, vector3_fp64_t* result) { const double x1 = matrix->r1c1 * vector->x1 + matrix->r1c2 * vector->x2 + matrix->r1c3 * vector->x3; const double x2 = matrix->r2c1 * vector->x1 + matrix->r2c2 * vector->x2 + matrix->r2c3 * vector->x3; diff --git a/basic-geometry/matrixes.c b/basic-geometry/matrixes.c index 1fb5858..f3c496d 100644 --- a/basic-geometry/matrixes.c +++ b/basic-geometry/matrixes.c @@ -2,7 +2,7 @@ // ========== Matrix Product 2x2 at 3x2 ========= // -void fp32_matrix_product_2x2_at_3x2(const fp32_matrix2x2_t* matrix1, const fp32_matrix3x2_t* matrix2, fp32_matrix3x2_t* result) +void matrix_fp32_product_2x2_at_3x2(const matrix2x2_fp32_t* matrix1, const matrix3x2_fp32_t* matrix2, matrix3x2_fp32_t* result) { const float r1c1 = matrix1->r1c1 * matrix2->r1c1 + matrix1->r1c2 * matrix2->r2c1; const float r1c2 = matrix1->r1c1 * matrix2->r1c2 + matrix1->r1c2 * matrix2->r2c2; @@ -21,7 +21,7 @@ void fp32_matrix_product_2x2_at_3x2(const fp32_matrix2x2_t* matrix1, const fp32_ result->r2c3 = r2c3; } -void fp64_matrix_product_2x2_at_3x2(const fp64_matrix2x2_t* matrix1, const fp64_matrix3x2_t* matrix2, fp64_matrix3x2_t* result) +void matrix_fp64_product_2x2_at_3x2(const matrix2x2_fp64_t* matrix1, const matrix3x2_fp64_t* matrix2, matrix3x2_fp64_t* result) { const double r1c1 = matrix1->r1c1 * matrix2->r1c1 + matrix1->r1c2 * matrix2->r2c1; const double r1c2 = matrix1->r1c1 * matrix2->r1c2 + matrix1->r1c2 * matrix2->r2c2; @@ -42,7 +42,7 @@ void fp64_matrix_product_2x2_at_3x2(const fp64_matrix2x2_t* matrix1, const fp64_ // ========== Matrix Product 2x3 at 2x2 ========= // -void fp32_matrix_product_2x3_at_2x2(const fp32_matrix2x3_t* matrix1, const fp32_matrix2x2_t* matrix2, fp32_matrix2x3_t* result) +void matrix_fp32_product_2x3_at_2x2(const matrix2x3_fp32_t* matrix1, const matrix2x2_fp32_t* matrix2, matrix2x3_fp32_t* result) { const float r1c1 = matrix1->r1c1 * matrix2->r1c1 + matrix1->r1c2 * matrix2->r2c1; const float r1c2 = matrix1->r1c1 * matrix2->r1c2 + matrix1->r1c2 * matrix2->r2c2; @@ -63,7 +63,7 @@ void fp32_matrix_product_2x3_at_2x2(const fp32_matrix2x3_t* matrix1, const fp32_ result->r3c2 = r3c2; } -void fp64_matrix_product_2x3_at_2x2(const fp64_matrix2x3_t* matrix1, const fp64_matrix2x2_t* matrix2, fp64_matrix2x3_t* result) +void matrix_fp64_product_2x3_at_2x2(const matrix2x3_fp64_t* matrix1, const matrix2x2_fp64_t* matrix2, matrix2x3_fp64_t* result) { const double r1c1 = matrix1->r1c1 * matrix2->r1c1 + matrix1->r1c2 * matrix2->r2c1; const double r1c2 = matrix1->r1c1 * matrix2->r1c2 + matrix1->r1c2 * matrix2->r2c2; @@ -86,7 +86,7 @@ void fp64_matrix_product_2x3_at_2x2(const fp64_matrix2x3_t* matrix1, const fp64_ // ========== Matrix Product 2x3 at 3x2 ========= // -void fp32_matrix_product_2x3_at_3x2(const fp32_matrix2x3_t* matrix1, const fp32_matrix3x2_t* matrix2, fp32_matrix3x3_t* result) +void matrix_fp32_product_2x3_at_3x2(const matrix2x3_fp32_t* matrix1, const matrix3x2_fp32_t* matrix2, matrix3x3_fp32_t* result) { result->r1c1 = matrix1->r1c1 * matrix2->r1c1 + matrix1->r1c2 * matrix2->r2c1; result->r1c2 = matrix1->r1c1 * matrix2->r1c2 + matrix1->r1c2 * matrix2->r2c2; @@ -101,7 +101,7 @@ void fp32_matrix_product_2x3_at_3x2(const fp32_matrix2x3_t* matrix1, const fp32_ result->r3c3 = matrix1->r3c1 * matrix2->r1c3 + matrix1->r3c2 * matrix2->r2c3; } -void fp64_matrix_product_2x3_at_3x2(const fp64_matrix2x3_t* matrix1, const fp64_matrix3x2_t* matrix2, fp64_matrix3x3_t* result) +void matrix_fp64_product_2x3_at_3x2(const matrix2x3_fp64_t* matrix1, const matrix3x2_fp64_t* matrix2, matrix3x3_fp64_t* result) { result->r1c1 = matrix1->r1c1 * matrix2->r1c1 + matrix1->r1c2 * matrix2->r2c1; result->r1c2 = matrix1->r1c1 * matrix2->r1c2 + matrix1->r1c2 * matrix2->r2c2; @@ -118,7 +118,7 @@ void fp64_matrix_product_2x3_at_3x2(const fp64_matrix2x3_t* matrix1, const fp64_ // ========== Matrix Product 3x2 at 2x3 ========= // -void fp32_matrix_product_3x2_at_2x3(const fp32_matrix3x2_t* matrix1, const fp32_matrix2x3_t* matrix2, fp32_matrix2x2_t* result) +void matrix_fp32_product_3x2_at_2x3(const matrix3x2_fp32_t* matrix1, const matrix2x3_fp32_t* matrix2, matrix2x2_fp32_t* result) { result->r1c1 = matrix1->r1c1 * matrix2->r1c1 + matrix1->r1c2 * matrix2->r2c1 + matrix1->r1c3 * matrix2->r3c1; result->r1c2 = matrix1->r1c1 * matrix2->r1c2 + matrix1->r1c2 * matrix2->r2c2 + matrix1->r1c3 * matrix2->r3c2; @@ -127,7 +127,7 @@ void fp32_matrix_product_3x2_at_2x3(const fp32_matrix3x2_t* matrix1, const fp32_ result->r2c2 = matrix1->r2c1 * matrix2->r1c2 + matrix1->r2c2 * matrix2->r2c2 + matrix1->r2c3 * matrix2->r3c2; } -void fp64_matrix_product_3x2_at_2x3(const fp64_matrix3x2_t* matrix1, const fp64_matrix2x3_t* matrix2, fp64_matrix2x2_t* result) +void matrix_fp64_product_3x2_at_2x3(const matrix3x2_fp64_t* matrix1, const matrix2x3_fp64_t* matrix2, matrix2x2_fp64_t* result) { result->r1c1 = matrix1->r1c1 * matrix2->r1c1 + matrix1->r1c2 * matrix2->r2c1 + matrix1->r1c3 * matrix2->r3c1; result->r1c2 = matrix1->r1c1 * matrix2->r1c2 + matrix1->r1c2 * matrix2->r2c2 + matrix1->r1c3 * matrix2->r3c2; @@ -138,7 +138,7 @@ void fp64_matrix_product_3x2_at_2x3(const fp64_matrix3x2_t* matrix1, const fp64_ // ========== Matrix Product 3x2 at 3x3 ========= // -void fp32_matrix_product_3x2_at_3x3(const fp32_matrix3x2_t* matrix1, const fp32_matrix3x3_t* matrix2, fp32_matrix3x2_t* result) +void matrix_fp32_product_3x2_at_3x3(const matrix3x2_fp32_t* matrix1, const matrix3x3_fp32_t* matrix2, matrix3x2_fp32_t* result) { const float r1c1 = matrix1->r1c1 * matrix2->r1c1 + matrix1->r1c2 * matrix2->r2c1 + matrix1->r1c3 * matrix2->r3c1; const float r1c2 = matrix1->r1c1 * matrix2->r1c2 + matrix1->r1c2 * matrix2->r2c2 + matrix1->r1c3 * matrix2->r3c2; @@ -157,7 +157,7 @@ void fp32_matrix_product_3x2_at_3x3(const fp32_matrix3x2_t* matrix1, const fp32_ result->r2c3 = r2c3; } -void fp64_matrix_product_3x2_at_3x3(const fp64_matrix3x2_t* matrix1, const fp64_matrix3x3_t* matrix2, fp64_matrix3x2_t* result) +void matrix_fp64_product_3x2_at_3x3(const matrix3x2_fp64_t* matrix1, const matrix3x3_fp64_t* matrix2, matrix3x2_fp64_t* result) { const double r1c1 = matrix1->r1c1 * matrix2->r1c1 + matrix1->r1c2 * matrix2->r2c1 + matrix1->r1c3 * matrix2->r3c1; const double r1c2 = matrix1->r1c1 * matrix2->r1c2 + matrix1->r1c2 * matrix2->r2c2 + matrix1->r1c3 * matrix2->r3c2; @@ -178,7 +178,7 @@ void fp64_matrix_product_3x2_at_3x3(const fp64_matrix3x2_t* matrix1, const fp64_ // ========== Matrix Product 3x3 at 2x3 ========= // -void fp32_matrix_product_3x3_at_2x3(const fp32_matrix3x3_t* matrix1, const fp32_matrix2x3_t* matrix2, fp32_matrix2x3_t* result) +void matrix_fp32_product_3x3_at_2x3(const matrix3x3_fp32_t* matrix1, const matrix2x3_fp32_t* matrix2, matrix2x3_fp32_t* result) { const float r1c1 = matrix1->r1c1 * matrix2->r1c1 + matrix1->r1c2 * matrix2->r2c1 + matrix1->r1c3 * matrix2->r3c1; const float r1c2 = matrix1->r1c1 * matrix2->r1c2 + matrix1->r1c2 * matrix2->r2c2 + matrix1->r1c3 * matrix2->r3c2; @@ -199,7 +199,7 @@ void fp32_matrix_product_3x3_at_2x3(const fp32_matrix3x3_t* matrix1, const fp32_ result->r3c2 = r3c2; } -void fp64_matrix_product_3x3_at_2x3(const fp64_matrix3x3_t* matrix1, const fp64_matrix2x3_t* matrix2, fp64_matrix2x3_t* result) +void matrix_fp64_product_3x3_at_2x3(const matrix3x3_fp64_t* matrix1, const matrix2x3_fp64_t* matrix2, matrix2x3_fp64_t* result) { const double r1c1 = matrix1->r1c1 * matrix2->r1c1 + matrix1->r1c2 * matrix2->r2c1 + matrix1->r1c3 * matrix2->r3c1; const double r1c2 = matrix1->r1c1 * matrix2->r1c2 + matrix1->r1c2 * matrix2->r2c2 + matrix1->r1c3 * matrix2->r3c2; @@ -222,7 +222,7 @@ void fp64_matrix_product_3x3_at_2x3(const fp64_matrix3x3_t* matrix1, const fp64_ // ========== Matrix Product 3x3 at 3x3 ========= // -void fp32_matrix_product_3x3_at_3x3(const fp32_matrix3x3_t* matrix1, const fp32_matrix3x3_t* matrix2, fp32_matrix3x3_t* result) +void matrix_fp32_product_3x3_at_3x3(const matrix3x3_fp32_t* matrix1, const matrix3x3_fp32_t* matrix2, matrix3x3_fp32_t* result) { const float r1c1 = matrix1->r1c1 * matrix2->r1c1 + matrix1->r1c2 * matrix2->r2c1 + matrix1->r1c3 * matrix2->r3c1; const float r1c2 = matrix1->r1c1 * matrix2->r1c2 + matrix1->r1c2 * matrix2->r2c2 + matrix1->r1c3 * matrix2->r3c2; @@ -249,7 +249,7 @@ void fp32_matrix_product_3x3_at_3x3(const fp32_matrix3x3_t* matrix1, const fp32_ result->r3c3 = r3c3; } -void fp64_matrix_product_3x3_at_3x3(const fp64_matrix3x3_t* matrix1, const fp64_matrix3x3_t* matrix2, fp64_matrix3x3_t* result) +void matrix_fp64_product_3x3_at_3x3(const matrix3x3_fp64_t* matrix1, const matrix3x3_fp64_t* matrix2, matrix3x3_fp64_t* result) { const double r1c1 = matrix1->r1c1 * matrix2->r1c1 + matrix1->r1c2 * matrix2->r2c1 + matrix1->r1c3 * matrix2->r3c1; const double r1c2 = matrix1->r1c1 * matrix2->r1c2 + matrix1->r1c2 * matrix2->r2c2 + matrix1->r1c3 * matrix2->r3c2; diff --git a/basic-geometry/matrixes.h b/basic-geometry/matrixes.h index 539cfc8..c634ca5 100644 --- a/basic-geometry/matrixes.h +++ b/basic-geometry/matrixes.h @@ -6,12 +6,12 @@ typedef struct { float r1c1, r1c2; float r2c1, r2c2; -} fp32_matrix2x2_t; +} matrix2x2_fp32_t; typedef struct { double r1c1, r1c2; double r2c1, r2c2; -} fp64_matrix2x2_t; +} matrix2x2_fp64_t; // ================== Matrix2x3 ================= // @@ -19,25 +19,25 @@ typedef struct { float r1c1, r1c2; float r2c1, r2c2; float r3c1, r3c2; -} fp32_matrix2x3_t; +} matrix2x3_fp32_t; typedef struct { double r1c1, r1c2; double r2c1, r2c2; double r3c1, r3c2; -} fp64_matrix2x3_t; +} matrix2x3_fp64_t; // ================== Matrix3x2 ================= // typedef struct { float r1c1, r1c2, r1c3; float r2c1, r2c2, r2c3; -} fp32_matrix3x2_t; +} matrix3x2_fp32_t; typedef struct { double r1c1, r1c2, r1c3; double r2c1, r2c2, r2c3; -} fp64_matrix3x2_t; +} matrix3x2_fp64_t; // ================== Matrix3x3 ================= // @@ -45,17 +45,17 @@ typedef struct { float r1c1, r1c2, r1c3; float r2c1, r2c2, r2c3; float r3c1, r3c2, r3c3; -} fp32_matrix3x3_t; +} matrix3x3_fp32_t; typedef struct { double r1c1, r1c2, r1c3; double r2c1, r2c2, r2c3; double r3c1, r3c2, r3c3; -} fp64_matrix3x3_t; +} matrix3x3_fp64_t; // ========== Matrix Product 2x2 at 2x2 ========= // -static inline void fp32_matrix_product_2x2_at_2x2(const fp32_matrix2x2_t* matrix1, const fp32_matrix2x2_t* matrix2, fp32_matrix2x2_t* result) +inline void matrix_fp32_product_2x2_at_2x2(const matrix2x2_fp32_t* matrix1, const matrix2x2_fp32_t* matrix2, matrix2x2_fp32_t* result) { const float r1c1 = matrix1->r1c1 * matrix2->r1c1 + matrix1->r1c2 * matrix2->r2c1; const float r1c2 = matrix1->r1c1 * matrix2->r1c2 + matrix1->r1c2 * matrix2->r2c2; @@ -70,7 +70,7 @@ static inline void fp32_matrix_product_2x2_at_2x2(const fp32_matrix2x2_t* matrix result->r2c2 = r2c2; } -static inline void fp64_matrix_product_2x2_at_2x2(const fp64_matrix2x2_t* matrix1, const fp64_matrix2x2_t* matrix2, fp64_matrix2x2_t* result) +inline void matrix_fp64_product_2x2_at_2x2(const matrix2x2_fp64_t* matrix1, const matrix2x2_fp64_t* matrix2, matrix2x2_fp64_t* result) { const double r1c1 = matrix1->r1c1 * matrix2->r1c1 + matrix1->r1c2 * matrix2->r2c1; const double r1c2 = matrix1->r1c1 * matrix2->r1c2 + matrix1->r1c2 * matrix2->r2c2; @@ -87,44 +87,44 @@ static inline void fp64_matrix_product_2x2_at_2x2(const fp64_matrix2x2_t* matrix // ========== Matrix Product 2x2 at 3x2 ========= // -void fp32_matrix_product_2x2_at_3x2(const fp32_matrix2x2_t* matrix1, const fp32_matrix3x2_t* matrix2, fp32_matrix3x2_t* result); +void matrix_fp32_product_2x2_at_3x2(const matrix2x2_fp32_t* matrix1, const matrix3x2_fp32_t* matrix2, matrix3x2_fp32_t* result); -void fp64_matrix_product_2x2_at_3x2(const fp64_matrix2x2_t* matrix1, const fp64_matrix3x2_t* matrix2, fp64_matrix3x2_t* result); +void matrix_fp64_product_2x2_at_3x2(const matrix2x2_fp64_t* matrix1, const matrix3x2_fp64_t* matrix2, matrix3x2_fp64_t* result); // ========== Matrix Product 2x3 at 2x2 ========= // -void fp32_matrix_product_2x3_at_2x2(const fp32_matrix2x3_t* matrix1, const fp32_matrix2x2_t* matrix2, fp32_matrix2x3_t* result); +void matrix_fp32_product_2x3_at_2x2(const matrix2x3_fp32_t* matrix1, const matrix2x2_fp32_t* matrix2, matrix2x3_fp32_t* result); -void fp64_matrix_product_2x3_at_2x2(const fp64_matrix2x3_t* matrix1, const fp64_matrix2x2_t* matrix2, fp64_matrix2x3_t* result); +void matrix_fp64_product_2x3_at_2x2(const matrix2x3_fp64_t* matrix1, const matrix2x2_fp64_t* matrix2, matrix2x3_fp64_t* result); // ========== Matrix Product 2x3 at 3x2 ========= // -void fp32_matrix_product_2x3_at_3x2(const fp32_matrix2x3_t* matrix1, const fp32_matrix3x2_t* matrix2, fp32_matrix3x3_t* result); +void matrix_fp32_product_2x3_at_3x2(const matrix2x3_fp32_t* matrix1, const matrix3x2_fp32_t* matrix2, matrix3x3_fp32_t* result); -void fp64_matrix_product_2x3_at_3x2(const fp64_matrix2x3_t* matrix1, const fp64_matrix3x2_t* matrix2, fp64_matrix3x3_t* result); +void matrix_fp64_product_2x3_at_3x2(const matrix2x3_fp64_t* matrix1, const matrix3x2_fp64_t* matrix2, matrix3x3_fp64_t* result); // ========== Matrix Product 3x2 at 2x3 ========= // -void fp32_matrix_product_3x2_at_2x3(const fp32_matrix3x2_t* matrix1, const fp32_matrix2x3_t* matrix2, fp32_matrix2x2_t* result); +void matrix_fp32_product_3x2_at_2x3(const matrix3x2_fp32_t* matrix1, const matrix2x3_fp32_t* matrix2, matrix2x2_fp32_t* result); -void fp64_matrix_product_3x2_at_2x3(const fp64_matrix3x2_t* matrix1, const fp64_matrix2x3_t* matrix2, fp64_matrix2x2_t* result); +void matrix_fp64_product_3x2_at_2x3(const matrix3x2_fp64_t* matrix1, const matrix2x3_fp64_t* matrix2, matrix2x2_fp64_t* result); // ========== Matrix Product 3x2 at 3x3 ========= // -void fp32_matrix_product_3x2_at_3x3(const fp32_matrix3x2_t* matrix1, const fp32_matrix3x3_t* matrix2, fp32_matrix3x2_t* result); +void matrix_fp32_product_3x2_at_3x3(const matrix3x2_fp32_t* matrix1, const matrix3x3_fp32_t* matrix2, matrix3x2_fp32_t* result); -void fp64_matrix_product_3x2_at_3x3(const fp64_matrix3x2_t* matrix1, const fp64_matrix3x3_t* matrix2, fp64_matrix3x2_t* result); +void matrix_fp64_product_3x2_at_3x3(const matrix3x2_fp64_t* matrix1, const matrix3x3_fp64_t* matrix2, matrix3x2_fp64_t* result); // ========== Matrix Product 3x3 at 2x3 ========= // -void fp32_matrix_product_3x3_at_2x3(const fp32_matrix3x3_t* matrix1, const fp32_matrix2x3_t* matrix2, fp32_matrix2x3_t* result); +void matrix_fp32_product_3x3_at_2x3(const matrix3x3_fp32_t* matrix1, const matrix2x3_fp32_t* matrix2, matrix2x3_fp32_t* result); -void fp64_matrix_product_3x3_at_2x3(const fp64_matrix3x3_t* matrix1, const fp64_matrix2x3_t* matrix2, fp64_matrix2x3_t* result); +void matrix_fp64_product_3x3_at_2x3(const matrix3x3_fp64_t* matrix1, const matrix2x3_fp64_t* matrix2, matrix2x3_fp64_t* result); // ========== Matrix Product 3x3 at 3x3 ========= // -void fp32_matrix_product_3x3_at_3x3(const fp32_matrix3x3_t* matrix1, const fp32_matrix3x3_t* matrix2, fp32_matrix3x3_t* result); +void matrix_fp32_product_3x3_at_3x3(const matrix3x3_fp32_t* matrix1, const matrix3x3_fp32_t* matrix2, matrix3x3_fp32_t* result); -void fp64_matrix_product_3x3_at_3x3(const fp64_matrix3x3_t* matrix1, const fp64_matrix3x3_t* matrix2, fp64_matrix3x3_t* result); +void matrix_fp64_product_3x3_at_3x3(const matrix3x3_fp64_t* matrix1, const matrix3x3_fp64_t* matrix2, matrix3x3_fp64_t* result); #endif // _GEOMETRY_MATRIX_TYPES_H_ diff --git a/basic-geometry/quaternion.h b/basic-geometry/quaternion.h index 8f1f53e..82b8067 100644 --- a/basic-geometry/quaternion.h +++ b/basic-geometry/quaternion.h @@ -9,15 +9,15 @@ typedef struct { float s0, x1, x2, x3; -} fp32_quaternion_t; +} quaternion_fp32_t; typedef struct { double s0, x1, x2, x3; -} fp64_quaternion_t; +} quaternion_fp64_t; // ==================== Reset =================== // -static inline void fp32_quaternion_reset(fp32_quaternion_t * quaternion) +inline void quaternion_reset_fp32(quaternion_fp32_t * quaternion) { quaternion->s0 = 0.0f; quaternion->x1 = 0.0f; @@ -25,7 +25,7 @@ static inline void fp32_quaternion_reset(fp32_quaternion_t * quaternion) quaternion->x3 = 0.0f; } -static inline void fp64_quaternion_reset(fp64_quaternion_t * quaternion) +inline void quaternion_reset_fp64(quaternion_fp64_t * quaternion) { quaternion->s0 = 0.0; quaternion->x1 = 0.0; @@ -35,7 +35,7 @@ static inline void fp64_quaternion_reset(fp64_quaternion_t * quaternion) // ================== Set Unit ================== // -static inline void fp32_quaternion_set_identity(fp32_quaternion_t * quaternion) +inline void quaternion_fp32_set_identity(quaternion_fp32_t * quaternion) { quaternion->s0 = 1.0f; quaternion->x1 = 0.0f; @@ -43,7 +43,7 @@ static inline void fp32_quaternion_set_identity(fp32_quaternion_t * quaternion) quaternion->x3 = 0.0f; } -static inline void fp64_quaternion_set_identity(fp64_quaternion_t * quaternion) +inline void quaternion_fp64_set_identity(quaternion_fp64_t * quaternion) { quaternion->s0 = 1.0; quaternion->x1 = 0.0; @@ -53,7 +53,7 @@ static inline void fp64_quaternion_set_identity(fp64_quaternion_t * quaternion) // ==================== Set ===================== // -static inline void fp32_quaternion_set_values(const float s0, const float x1, const float x2, const float x3, fp32_quaternion_t * quaternion) +inline void quaternion_fp32_set_values(const float s0, const float x1, const float x2, const float x3, quaternion_fp32_t * quaternion) { quaternion->s0 = s0; quaternion->x1 = x1; @@ -61,7 +61,7 @@ static inline void fp32_quaternion_set_values(const float s0, const float x1, co quaternion->x3 = x3; } -static inline void fp64_quaternion_set_values(const double s0, const double x1, const double x2, const double x3, fp64_quaternion_t * quaternion) +inline void quaternion_fp64_set_values(const double s0, const double x1, const double x2, const double x3, quaternion_fp64_t * quaternion) { quaternion->s0 = s0; quaternion->x1 = x1; @@ -71,7 +71,7 @@ static inline void fp64_quaternion_set_values(const double s0, const double x1, // ==================== Copy ==================== // -static inline void fp32_quaternion_copy(const fp32_quaternion_t* from, fp32_quaternion_t* to) +inline void quaternion_copy_fp32(const quaternion_fp32_t* from, quaternion_fp32_t* to) { to->s0 = from->s0; to->x1 = from->x1; @@ -79,7 +79,7 @@ static inline void fp32_quaternion_copy(const fp32_quaternion_t* from, fp32_quat to->x3 = from->x3; } -static inline void fp64_quaternion_copy(const fp64_quaternion_t* from, fp64_quaternion_t* to) +inline void quaternion_copy_fp64(const quaternion_fp64_t* from, quaternion_fp64_t* to) { to->s0 = from->s0; to->x1 = from->x1; @@ -89,7 +89,7 @@ static inline void fp64_quaternion_copy(const fp64_quaternion_t* from, fp64_quat // ==================== Swap ==================== // -static inline void fp32_quaternion_swap(fp32_quaternion_t* quarternion1, fp32_quaternion_t* quarternion2) +inline void quaternion_swap_fp32(quaternion_fp32_t* quarternion1, quaternion_fp32_t* quarternion2) { const float s0 = quarternion2->s0; const float x1 = quarternion2->x1; @@ -107,7 +107,7 @@ static inline void fp32_quaternion_swap(fp32_quaternion_t* quarternion1, fp32_qu quarternion1->x3 = x3; } -static inline void fp64_quaternion_swap(fp64_quaternion_t* quarternion1, fp64_quaternion_t* quarternion2) +inline void quaternion_swap_fp64(quaternion_fp64_t* quarternion1, quaternion_fp64_t* quarternion2) { const double s0 = quarternion2->s0; const double x1 = quarternion2->x1; @@ -127,7 +127,7 @@ static inline void fp64_quaternion_swap(fp64_quaternion_t* quarternion1, fp64_qu // ============= Copy to twin type ============== // -static inline void fp32_quaternion_set_from_fp64(const fp64_quaternion_t* quaternion, fp32_quaternion_t* result) +inline void quaternion_fp32_set_from_fp64(const quaternion_fp64_t* quaternion, quaternion_fp32_t* result) { result->s0 = (float) quaternion->s0; result->x1 = (float) quaternion->x1; @@ -135,7 +135,7 @@ static inline void fp32_quaternion_set_from_fp64(const fp64_quaternion_t* quater result->x3 = (float) quaternion->x3; } -static inline void fp64_quaternion_set_from_fp32(const fp32_quaternion_t* quaternion, fp64_quaternion_t* result) +inline void quaternion_fp64_set_from_fp32(const quaternion_fp32_t* quaternion, quaternion_fp64_t* result) { result->s0 = quaternion->s0; result->x1 = quaternion->x1; @@ -145,14 +145,14 @@ static inline void fp64_quaternion_set_from_fp32(const fp32_quaternion_t* quater // ================= Inversion ================== // -static inline void fp32_quaternion_conjugate(fp32_quaternion_t* quaternion) +inline void quaternion_fp32_conjugate(quaternion_fp32_t* quaternion) { quaternion->x1 = -quaternion->x1; quaternion->x2 = -quaternion->x2; quaternion->x3 = -quaternion->x3; } -static inline void fp64_quaternion_conjugate(fp64_quaternion_t* quaternion) +inline void quaternion_fp64_conjugate(quaternion_fp64_t* quaternion) { quaternion->x1 = -quaternion->x1; quaternion->x2 = -quaternion->x2; @@ -161,7 +161,7 @@ static inline void fp64_quaternion_conjugate(fp64_quaternion_t* quaternion) // ================ Set Conjugate =============== // -static inline void fp32_quaternion_set_conjugate(const fp32_quaternion_t* quaternion, fp32_quaternion_t* result) +inline void quaternion_fp32_set_conjugate(const quaternion_fp32_t* quaternion, quaternion_fp32_t* result) { result->s0 = quaternion->s0; result->x1 = -quaternion->x1; @@ -169,7 +169,7 @@ static inline void fp32_quaternion_set_conjugate(const fp32_quaternion_t* quater result->x3 = -quaternion->x3; } -static inline void fp64_quaternion_set_conjugate(const fp64_quaternion_t* quaternion, fp64_quaternion_t* result) +inline void quaternion_fp64_set_conjugate(const quaternion_fp64_t* quaternion, quaternion_fp64_t* result) { result->s0 = quaternion->s0; result->x1 = -quaternion->x1; @@ -179,7 +179,7 @@ static inline void fp64_quaternion_set_conjugate(const fp64_quaternion_t* quater // ================ Set Conjugate =============== // -static inline void fp32_quaternion_set_conjugate_fp64(const fp64_quaternion_t* quaternion, fp32_quaternion_t* result) +inline void quaternion_fp32_set_conjugate_fp64(const quaternion_fp64_t* quaternion, quaternion_fp32_t* result) { result->s0 = (float) quaternion->s0; result->x1 = (float) -quaternion->x1; @@ -187,7 +187,7 @@ static inline void fp32_quaternion_set_conjugate_fp64(const fp64_quaternion_t* q result->x3 = (float) -quaternion->x3; } -static inline void fp64_quaternion_set_conjugate_fp32(const fp32_quaternion_t* quaternion, fp64_quaternion_t* result) +inline void quaternion_fp64_set_conjugate_fp32(const quaternion_fp32_t* quaternion, quaternion_fp64_t* result) { result->s0 = quaternion->s0; result->x1 = -quaternion->x1; @@ -197,40 +197,40 @@ static inline void fp64_quaternion_set_conjugate_fp32(const fp32_quaternion_t* q // ============= Get Square Modulus ============= // -static inline float fp32_quaternion_get_square_modulus(const fp32_quaternion_t* quaternion) +inline float quaternion_get_square_modulus_fp32(const quaternion_fp32_t* quaternion) { return (quaternion->s0 * quaternion->s0 + quaternion->x1 * quaternion->x1) + (quaternion->x2 * quaternion->x2 + quaternion->x3 * quaternion->x3); } -static inline double fp64_quaternion_get_square_modulus(const fp64_quaternion_t* quaternion) +inline double quaternion_get_square_modulus_fp64(const quaternion_fp64_t* quaternion) { return (quaternion->s0 * quaternion->s0 + quaternion->x1 * quaternion->x1) + (quaternion->x2 * quaternion->x2 + quaternion->x3 * quaternion->x3); } // ================ Get Modulus ================= // -static inline float fp32_quaternion_get_modulus(const fp32_quaternion_t* quaternion) +inline float quaternion_get_modulus_fp32(const quaternion_fp32_t* quaternion) { - return sqrtf(fp32_quaternion_get_square_modulus(quaternion)); + return sqrtf(quaternion_get_square_modulus_fp32(quaternion)); } -static inline double fp64_quaternion_get_modulus(const fp64_quaternion_t* quaternion) +inline double quaternion_get_modulus_fp64(const quaternion_fp64_t* quaternion) { - return sqrt(fp64_quaternion_get_square_modulus(quaternion)); + return sqrt(quaternion_get_square_modulus_fp64(quaternion)); } // =============== Normalization ================ // -static inline int fp32_quaternion_normalize(fp32_quaternion_t* quaternion) +inline int quaternion_fp32_normalize(quaternion_fp32_t* quaternion) { - const float square_modulus = fp32_quaternion_get_square_modulus(quaternion); + const float square_modulus = quaternion_get_square_modulus_fp32(quaternion); if (1.0f - FP32_TWO_EPSYLON <= square_modulus && square_modulus <= 1.0f + FP32_TWO_EPSYLON) { return 1; } if (square_modulus <= FP32_SQUARE_EPSYLON) { - fp32_quaternion_reset(quaternion); + quaternion_reset_fp32(quaternion); return 0; } @@ -244,16 +244,16 @@ static inline int fp32_quaternion_normalize(fp32_quaternion_t* quaternion) return 1; } -static inline int fp64_quaternion_normalize(fp64_quaternion_t* quaternion) +inline int quaternion_fp64_normalize(quaternion_fp64_t* quaternion) { - const double square_modulus = fp64_quaternion_get_square_modulus(quaternion); + const double square_modulus = quaternion_get_square_modulus_fp64(quaternion); if (1.0 - FP64_TWO_EPSYLON <= square_modulus && square_modulus <= 1.0 + FP64_TWO_EPSYLON) { return 1; } if (square_modulus <= FP32_SQUARE_EPSYLON) { - fp64_quaternion_reset(quaternion); + quaternion_reset_fp64(quaternion); return 0; } @@ -269,7 +269,7 @@ static inline int fp64_quaternion_normalize(fp64_quaternion_t* quaternion) // ============ Make Rotation Matrix ============ // -static inline void fp32_quaternion_get_rotation_matrix(const fp32_quaternion_t* quaternion, fp32_matrix3x3_t* matrix) +inline void quaternion_fp32_get_rotation_matrix(const quaternion_fp32_t* quaternion, matrix3x3_fp32_t* matrix) { const float s0s0 = quaternion->s0 * quaternion->s0; const float x1x1 = quaternion->x1 * quaternion->x1; @@ -280,7 +280,7 @@ static inline void fp32_quaternion_get_rotation_matrix(const fp32_quaternion_t* if (-FP32_EPSYLON <= square_modulus && square_modulus <= FP32_EPSYLON) { - fp32_matrix3x3_set_to_identity(matrix); + matrix3x3_fp32_set_to_identity(matrix); return; } @@ -307,7 +307,7 @@ static inline void fp32_quaternion_get_rotation_matrix(const fp32_quaternion_t* matrix->r1c3 = corrector2 * (x1x3 + s0x2); } -static inline void fp64_quaternion_get_rotation_matrix(const fp64_quaternion_t* quaternion, fp64_matrix3x3_t* matrix) +inline void quaternion_fp64_get_rotation_matrix(const quaternion_fp64_t* quaternion, matrix3x3_fp64_t* matrix) { const double s0s0 = quaternion->s0 * quaternion->s0; const double x1x1 = quaternion->x1 * quaternion->x1; @@ -318,7 +318,7 @@ static inline void fp64_quaternion_get_rotation_matrix(const fp64_quaternion_t* if (-FP64_EPSYLON <= square_modulus && square_modulus <= FP64_EPSYLON) { - fp64_matrix3x3_set_to_identity(matrix); + matrix3x3_fp64_set_to_identity(matrix); return; } @@ -347,7 +347,7 @@ static inline void fp64_quaternion_get_rotation_matrix(const fp64_quaternion_t* // ============ Make Reverse Matrix ============= // -static inline void fp32_quaternion_get_reverse_matrix(const fp32_quaternion_t* quaternion, fp32_matrix3x3_t* matrix) +inline void quaternion_fp32_get_reverse_matrix(const quaternion_fp32_t* quaternion, matrix3x3_fp32_t* matrix) { const float s0s0 = quaternion->s0 * quaternion->s0; const float x1x1 = quaternion->x1 * quaternion->x1; @@ -358,7 +358,7 @@ static inline void fp32_quaternion_get_reverse_matrix(const fp32_quaternion_t* q if (-FP32_EPSYLON <= square_modulus && square_modulus <= FP32_EPSYLON) { - fp32_matrix3x3_set_to_identity(matrix); + matrix3x3_fp32_set_to_identity(matrix); return; } @@ -385,7 +385,7 @@ static inline void fp32_quaternion_get_reverse_matrix(const fp32_quaternion_t* q matrix->r1c3 = corrector2 * (x1x3 - s0x2); } -static inline void fp64_quaternion_get_reverse_matrix(const fp64_quaternion_t* quaternion, fp64_matrix3x3_t* matrix) +inline void quaternion_fp64_get_reverse_matrix(const quaternion_fp64_t* quaternion, matrix3x3_fp64_t* matrix) { const double s0s0 = quaternion->s0 * quaternion->s0; const double x1x1 = quaternion->x1 * quaternion->x1; @@ -396,7 +396,7 @@ static inline void fp64_quaternion_get_reverse_matrix(const fp64_quaternion_t* q if (-FP64_EPSYLON <= square_modulus && square_modulus <= FP64_EPSYLON) { - fp64_matrix3x3_set_to_identity(matrix); + matrix3x3_fp64_set_to_identity(matrix); return; } @@ -425,7 +425,7 @@ static inline void fp64_quaternion_get_reverse_matrix(const fp64_quaternion_t* q // ==================== Add ===================== // -static inline void fp32_quaternion_add(const fp32_quaternion_t * quaternion1, const fp32_quaternion_t * quaternion2, fp32_quaternion_t * result) +inline void quaternion_fp32_add(const quaternion_fp32_t * quaternion1, const quaternion_fp32_t * quaternion2, quaternion_fp32_t * result) { result->s0 = quaternion1->s0 + quaternion2->s0; result->x1 = quaternion1->x1 + quaternion2->x1; @@ -433,7 +433,7 @@ static inline void fp32_quaternion_add(const fp32_quaternion_t * quaternion1, co result->x3 = quaternion1->x3 + quaternion2->x3; } -static inline void fp64_quaternion_add(const fp64_quaternion_t * quaternion1, const fp64_quaternion_t * quaternion2, fp64_quaternion_t * result) +inline void quaternion_fp64_add(const quaternion_fp64_t * quaternion1, const quaternion_fp64_t * quaternion2, quaternion_fp64_t * result) { result->s0 = quaternion1->s0 + quaternion2->s0; result->x1 = quaternion1->x1 + quaternion2->x1; @@ -443,7 +443,7 @@ static inline void fp64_quaternion_add(const fp64_quaternion_t * quaternion1, co // ================== Subtract ================== // -static inline void fp32_quaternion_subtract(const fp32_quaternion_t * minuend, const fp32_quaternion_t * subtrahend, fp32_quaternion_t * difference) +inline void quaternion_fp32_subtract(const quaternion_fp32_t * minuend, const quaternion_fp32_t * subtrahend, quaternion_fp32_t * difference) { difference->s0 = minuend->s0 - subtrahend->s0; difference->x1 = minuend->x1 - subtrahend->x1; @@ -451,7 +451,7 @@ static inline void fp32_quaternion_subtract(const fp32_quaternion_t * minuend, c difference->x3 = minuend->x3 - subtrahend->x3; } -static inline void fp64_quaternion_subtract(const fp64_quaternion_t * minuend, const fp64_quaternion_t * subtrahend, fp64_quaternion_t * difference) +inline void quaternion_fp64_subtract(const quaternion_fp64_t * minuend, const quaternion_fp64_t * subtrahend, quaternion_fp64_t * difference) { difference->s0 = minuend->s0 - subtrahend->s0; difference->x1 = minuend->x1 - subtrahend->x1; @@ -461,7 +461,7 @@ static inline void fp64_quaternion_subtract(const fp64_quaternion_t * minuend, c // =============== Multiplication =============== // -static inline void fp32_quaternion_multiply(const fp32_quaternion_t* multiplicand, const float multipier, fp32_quaternion_t* product) +inline void quaternion_fp32_multiply(const quaternion_fp32_t* multiplicand, const float multipier, quaternion_fp32_t* product) { product->s0 = multiplicand->s0 * multipier; product->x1 = multiplicand->x1 * multipier; @@ -469,7 +469,7 @@ static inline void fp32_quaternion_multiply(const fp32_quaternion_t* multiplican product->x3 = multiplicand->x3 * multipier; } -static inline void fp64_quaternion_multiply(const fp64_quaternion_t* multiplicand, const double multipier, fp64_quaternion_t* product) +inline void quaternion_fp64_multiply(const quaternion_fp64_t* multiplicand, const double multipier, quaternion_fp64_t* product) { product->s0 = multiplicand->s0 * multipier; product->x1 = multiplicand->x1 * multipier; @@ -479,19 +479,19 @@ static inline void fp64_quaternion_multiply(const fp64_quaternion_t* multiplican // ================== Division ================== // -static inline void fp32_quaternion_divide(const fp32_quaternion_t* dividend, const float divisor, fp32_quaternion_t* quotient) +inline void quaternion_fp32_divide(const quaternion_fp32_t* dividend, const float divisor, quaternion_fp32_t* quotient) { - fp32_quaternion_multiply(dividend, 1.0f / divisor, quotient); + quaternion_fp32_multiply(dividend, 1.0f / divisor, quotient); } -static inline void fp64_quaternion_divide(const fp64_quaternion_t* dividend, const double divisor, fp64_quaternion_t* quotient) +inline void quaternion_fp64_divide(const quaternion_fp64_t* dividend, const double divisor, quaternion_fp64_t* quotient) { - fp64_quaternion_multiply(dividend, 1.0 / divisor, quotient); + quaternion_fp64_multiply(dividend, 1.0 / divisor, quotient); } // ================== Product =================== // -static inline void fp32_quaternion_get_product(const fp32_quaternion_t* left, const fp32_quaternion_t* right, fp32_quaternion_t* product) +inline void quaternion_fp32_get_product(const quaternion_fp32_t* left, const quaternion_fp32_t* right, quaternion_fp32_t* product) { const float s0 = (left->s0 * right->s0 - left->x1 * right->x1) - (left->x2 * right->x2 + left->x3 * right->x3); const float x1 = (left->x1 * right->s0 + left->s0 * right->x1) - (left->x3 * right->x2 - left->x2 * right->x3); @@ -504,7 +504,7 @@ static inline void fp32_quaternion_get_product(const fp32_quaternion_t* left, co product->x3 = x3; } -static inline void fp64_quaternion_get_product(const fp64_quaternion_t* left, const fp64_quaternion_t* right, fp64_quaternion_t* product) +inline void quaternion_fp64_get_product(const quaternion_fp64_t* left, const quaternion_fp64_t* right, quaternion_fp64_t* product) { const double s0 = (left->s0 * right->s0 - left->x1 * right->x1) - (left->x2 * right->x2 + left->x3 * right->x3); const double x1 = (left->x1 * right->s0 + left->s0 * right->x1) - (left->x3 * right->x2 - left->x2 * right->x3); diff --git a/basic-geometry/rotation3.c b/basic-geometry/rotation3.c index 033d875..b413fcf 100644 --- a/basic-geometry/rotation3.c +++ b/basic-geometry/rotation3.c @@ -1,5 +1,5 @@ #include "rotation3.h" -const fp32_rotation3_t FP32_IDLE_ROTATION3 = { {0.0f, 0.0f, 0.0f}, 0.0f}; +const rotation3_fp32_t FP32_IDLE_ROTATION3 = { {0.0f, 0.0f, 0.0f}, 0.0f}; -const fp64_rotation3_t FP64_IDLE_ROTATION3 = { {0.0, 0.0, 0.0}, 0.0}; +const rotation3_fp64_t FP64_IDLE_ROTATION3 = { {0.0, 0.0, 0.0}, 0.0}; diff --git a/basic-geometry/rotation3.h b/basic-geometry/rotation3.h index 5f31c07..2a34cab 100644 --- a/basic-geometry/rotation3.h +++ b/basic-geometry/rotation3.h @@ -6,22 +6,22 @@ #include "vector3.h" typedef struct { - fp32_vector3_t axis; + vector3_fp32_t axis; float radians; -} fp32_rotation3_t; +} rotation3_fp32_t; typedef struct { - fp64_vector3_t axis; + vector3_fp64_t axis; double radians; -} fp64_rotation3_t; +} rotation3_fp64_t; -extern const fp32_rotation3_t FP32_IDLE_ROTATION3; +extern const rotation3_fp32_t FP32_IDLE_ROTATION3; -extern const fp64_rotation3_t FP64_IDLE_ROTATION3; +extern const rotation3_fp64_t FP64_IDLE_ROTATION3; // =================== Reset ==================== // -static inline void fp32_rotation_reset(fp32_rotation3_t* rotation) +inline void fp32_rotation_reset(rotation3_fp32_t* rotation) { rotation->axis.x1 = 0.0f; rotation->axis.x2 = 0.0f; @@ -30,7 +30,7 @@ static inline void fp32_rotation_reset(fp32_rotation3_t* rotation) rotation->radians = 0.0f; } -static inline void fp64_rotation_reset(fp64_rotation3_t* rotation) +inline void fp64_rotation_reset(rotation3_fp64_t* rotation) { rotation->axis.x1 = 0.0; rotation->axis.x2 = 0.0; @@ -41,13 +41,13 @@ static inline void fp64_rotation_reset(fp64_rotation3_t* rotation) // ==================== Make ==================== // -static inline void fp32_rotation_set_values(const float x1, const float x2, const float x3, const float angle, const angle_unit_t unit, fp32_rotation3_t* rotation) +inline void fp32_rotation_set_values(const float x1, const float x2, const float x3, const float angle, const angle_unit_t unit, rotation3_fp32_t* rotation) { rotation->axis.x1 = x1; rotation->axis.x2 = x2; rotation->axis.x3 = x3; - if (fp32_vector3_normalize(&rotation->axis)) { + if (vector3_fp32_normalize(&rotation->axis)) { rotation->radians = fp32_angle_to_radians(angle, unit); } else { @@ -56,13 +56,13 @@ static inline void fp32_rotation_set_values(const float x1, const float x2, cons } -static inline void fp64_rotation_set_values(const double x1, const double x2, const double x3, const double angle, const angle_unit_t unit, fp64_rotation3_t* rotation) +inline void fp64_rotation_set_values(const double x1, const double x2, const double x3, const double angle, const angle_unit_t unit, rotation3_fp64_t* rotation) { rotation->axis.x1 = x1; rotation->axis.x2 = x2; rotation->axis.x3 = x3; - if (fp64_vector3_normalize(&rotation->axis)) { + if (vector3_fp64_normalize(&rotation->axis)) { rotation->radians = fp64_angle_to_radians(angle, unit); } else { @@ -70,13 +70,13 @@ static inline void fp64_rotation_set_values(const double x1, const double x2, co } } -static inline void fp32_rotation_set_with_axis(const fp32_vector3_t* axis, const float angle, const angle_unit_t unit, fp32_rotation3_t* rotation) +inline void fp32_rotation_set_with_axis(const vector3_fp32_t* axis, const float angle, const angle_unit_t unit, rotation3_fp32_t* rotation) { rotation->axis.x1 = axis->x1; rotation->axis.x2 = axis->x2; rotation->axis.x3 = axis->x3; - if (fp32_vector3_normalize(&rotation->axis)) { + if (vector3_fp32_normalize(&rotation->axis)) { rotation->radians = fp32_angle_to_radians(angle, unit); } else { @@ -84,13 +84,13 @@ static inline void fp32_rotation_set_with_axis(const fp32_vector3_t* axis, const } } -static inline void fp64_rotation_set_with_axis(const fp64_vector3_t* axis, const double angle, const angle_unit_t unit, fp64_rotation3_t* rotation) +inline void fp64_rotation_set_with_axis(const vector3_fp64_t* axis, const double angle, const angle_unit_t unit, rotation3_fp64_t* rotation) { rotation->axis.x1 = axis->x1; rotation->axis.x2 = axis->x2; rotation->axis.x3 = axis->x3; - if (fp64_vector3_normalize(&rotation->axis)) { + if (vector3_fp64_normalize(&rotation->axis)) { rotation->radians = fp64_angle_to_radians(angle, unit); } else { diff --git a/basic-geometry/tangent.c b/basic-geometry/tangent.c index cc76b2c..7b48806 100644 --- a/basic-geometry/tangent.c +++ b/basic-geometry/tangent.c @@ -1,5 +1,5 @@ #include "tangent.h" -const fp32_tangent_t FP32_IDLE_TANGENT = { 1.0f, 0.0f }; +const tangent_fp32_t FP32_IDLE_TANGENT = { 1.0f, 0.0f }; -const fp64_tangent_t FP64_IDLE_TANGENT = { 1.0, 0.0 }; +const tangent_fp64_t FP64_IDLE_TANGENT = { 1.0, 0.0 }; diff --git a/basic-geometry/tangent.h b/basic-geometry/tangent.h index c1b009b..de3be7a 100644 --- a/basic-geometry/tangent.h +++ b/basic-geometry/tangent.h @@ -13,12 +13,12 @@ typedef struct { const float cos, sin; -} fp32_tangent_t; +} tangent_fp32_t; typedef struct { const double cos, sin; -} fp64_tangent_t; +} tangent_fp64_t; // ================= Dark Twins ================= // @@ -32,12 +32,12 @@ typedef struct { // ================= Constants ================== // -extern const fp32_tangent_t FP32_IDLE_TANGENT; -extern const fp64_tangent_t FP64_IDLE_TANGENT; +extern const tangent_fp32_t FP32_IDLE_TANGENT; +extern const tangent_fp64_t FP64_IDLE_TANGENT; // =================== Reset ==================== // -static inline void fp32_tangent_reset(fp32_tangent_t* tangent) +inline void tangent_reset_fp32(tangent_fp32_t* tangent) { __BgFP32DarkTwinTangent* twin = (__BgFP32DarkTwinTangent*)tangent; @@ -45,7 +45,7 @@ static inline void fp32_tangent_reset(fp32_tangent_t* tangent) twin->sin = 0.0f; } -static inline void fp64_tangent_reset(fp64_tangent_t* tangent) +inline void tangent_reset_fp64(tangent_fp64_t* tangent) { __BgFP64DarkTwinTangent* twin = (__BgFP64DarkTwinTangent*)tangent; @@ -55,7 +55,7 @@ static inline void fp64_tangent_reset(fp64_tangent_t* tangent) // ==================== Set ===================== // -static inline void fp32_tangent_set_values(const float x1, const float x2, fp32_tangent_t* tangent) +inline void tangent_fp32_set_values(const float x1, const float x2, tangent_fp32_t* tangent) { const float square_module = x1 * x1 + x2 * x2; @@ -80,7 +80,7 @@ static inline void fp32_tangent_set_values(const float x1, const float x2, fp32_ twin->sin = x2 * multiplier; } -static inline void fp64_tangent_set_values(const double x1, const double x2, fp64_tangent_t* tangent) +inline void tangent_fp64_set_values(const double x1, const double x2, tangent_fp64_t* tangent) { const double square_module = x1 * x1 + x2 * x2; @@ -107,7 +107,7 @@ static inline void fp64_tangent_set_values(const double x1, const double x2, fp6 // ==================== Copy ==================== // -static inline void fp32_tangent_copy(const fp32_tangent_t* from, fp32_tangent_t* to) +inline void tangent_copy_fp32(const tangent_fp32_t* from, tangent_fp32_t* to) { __BgFP32DarkTwinTangent* twin = (__BgFP32DarkTwinTangent*)to; @@ -115,7 +115,7 @@ static inline void fp32_tangent_copy(const fp32_tangent_t* from, fp32_tangent_t* twin->sin = from->sin; } -static inline void fp64_tangent_copy(const fp64_tangent_t* from, fp64_tangent_t* to) +inline void tangent_copy_fp64(const tangent_fp64_t* from, tangent_fp64_t* to) { __BgFP64DarkTwinTangent* twin = (__BgFP64DarkTwinTangent*)to; @@ -125,7 +125,7 @@ static inline void fp64_tangent_copy(const fp64_tangent_t* from, fp64_tangent_t* // ==================== Swap ==================== // -static inline void fp32_tangent_swap(fp32_tangent_t* tangent1, fp32_tangent_t* tangent2) +inline void tangent_swap_fp32(tangent_fp32_t* tangent1, tangent_fp32_t* tangent2) { const float cos = tangent1->cos; const float sin = tangent1->sin; @@ -141,7 +141,7 @@ static inline void fp32_tangent_swap(fp32_tangent_t* tangent1, fp32_tangent_t* t twin2->sin = sin; } -static inline void fp64_tangent_swap(fp64_tangent_t* tangent1, fp64_tangent_t* tangent2) +inline void tangent_swap_fp64(tangent_fp64_t* tangent1, tangent_fp64_t* tangent2) { const double cos = tangent1->cos; const double sin = tangent1->sin; @@ -159,7 +159,7 @@ static inline void fp64_tangent_swap(fp64_tangent_t* tangent1, fp64_tangent_t* t // ================== Set Turn ================== // -static inline void fp32_tangent_set_turn(const float angle, const angle_unit_t unit, fp32_tangent_t* tangent) +inline void tangent_fp32_set_turn(const float angle, const angle_unit_t unit, tangent_fp32_t* tangent) { const float radians = fp32_angle_to_radians(angle, unit); @@ -169,7 +169,7 @@ static inline void fp32_tangent_set_turn(const float angle, const angle_unit_t u twin->sin = sinf(radians); } -static inline void fp64_tangent_set_turn(const double angle, const angle_unit_t unit, fp64_tangent_t* tangent) +inline void tangent_fp64_set_turn(const double angle, const angle_unit_t unit, tangent_fp64_t* tangent) { const double radians = fp64_angle_to_radians(angle, unit); @@ -181,31 +181,31 @@ static inline void fp64_tangent_set_turn(const double angle, const angle_unit_t // ============= Copy to twin type ============== // -static inline void fp32_tangent_set_from_fp64(const fp64_tangent_t* from, fp32_tangent_t* to) +inline void tangent_fp32_set_from_fp64(const tangent_fp64_t* from, tangent_fp32_t* to) { - fp32_tangent_set_values((float)from->cos, (float)from->sin, to); + tangent_fp32_set_values((float)from->cos, (float)from->sin, to); } -static inline void fp64_tangent_set_from_fp32(const fp32_tangent_t* from, fp64_tangent_t* to) +inline void tangent_fp64_set_from_fp32(const tangent_fp32_t* from, tangent_fp64_t* to) { - fp64_tangent_set_values((double)from->cos, (double)from->sin, to); + tangent_fp64_set_values((double)from->cos, (double)from->sin, to); } // ================= Inversion ================== // -static inline void fp32_tangent_invert(fp32_tangent_t* tangent) +inline void tangent_invert_fp32(tangent_fp32_t* tangent) { ((__BgFP32DarkTwinTangent*)tangent)->sin = -tangent->sin; } -static inline void fp64_tangent_invert(fp64_tangent_t* tangent) +inline void tangent_invert_fp64(tangent_fp64_t* tangent) { ((__BgFP64DarkTwinTangent*)tangent)->sin = -tangent->sin; } // ================ Set Inverted ================ // -static inline void fp32_tangent_set_inverted(const fp32_tangent_t* tangent, fp32_tangent_t* result) +inline void tangent_fp32_set_inverted(const tangent_fp32_t* tangent, tangent_fp32_t* result) { __BgFP32DarkTwinTangent* twin = (__BgFP32DarkTwinTangent*)result; @@ -213,7 +213,7 @@ static inline void fp32_tangent_set_inverted(const fp32_tangent_t* tangent, fp32 twin->sin = -tangent->sin; } -static inline void fp64_tangent_set_inverted(const fp64_tangent_t* tangent, fp64_tangent_t* result) +inline void tangent_fp64_set_inverted(const tangent_fp64_t* tangent, tangent_fp64_t* result) { __BgFP64DarkTwinTangent* twin = (__BgFP64DarkTwinTangent*)result; @@ -223,7 +223,7 @@ static inline void fp64_tangent_set_inverted(const fp64_tangent_t* tangent, fp64 // ============== Rotation Matrix =============== // -static inline void fp32_tangent_make_rotation_matrix(const fp32_tangent_t* tangent, fp32_matrix2x2_t* matrix) +inline void tangent_fp32_make_rotation_matrix(const tangent_fp32_t* tangent, matrix2x2_fp32_t* matrix) { matrix->r1c1 = tangent->cos; matrix->r1c2 = -tangent->sin; @@ -231,7 +231,7 @@ static inline void fp32_tangent_make_rotation_matrix(const fp32_tangent_t* tange matrix->r2c2 = tangent->cos; } -static inline void fp64_tangent_make_rotation_matrix(const fp64_tangent_t* tangent, fp64_matrix2x2_t* matrix) +inline void tangent_fp64_make_rotation_matrix(const tangent_fp64_t* tangent, matrix2x2_fp64_t* matrix) { matrix->r1c1 = tangent->cos; matrix->r1c2 = -tangent->sin; @@ -241,7 +241,7 @@ static inline void fp64_tangent_make_rotation_matrix(const fp64_tangent_t* tange // ============== Reverse Matrix ================ // -static inline void fp32_tangent_make_reverse_matrix(const fp32_tangent_t* tangent, fp32_matrix2x2_t* matrix) +inline void tangent_fp32_make_reverse_matrix(const tangent_fp32_t* tangent, matrix2x2_fp32_t* matrix) { matrix->r1c1 = tangent->cos; matrix->r1c2 = tangent->sin; @@ -249,7 +249,7 @@ static inline void fp32_tangent_make_reverse_matrix(const fp32_tangent_t* tangen matrix->r2c2 = tangent->cos; } -static inline void fp64_tangent_make_reverse_matrix(const fp64_tangent_t* tangent, fp64_matrix2x2_t* matrix) +inline void tangent_fp64_make_reverse_matrix(const tangent_fp64_t* tangent, matrix2x2_fp64_t* matrix) { matrix->r1c1 = tangent->cos; matrix->r1c2 = tangent->sin; @@ -259,7 +259,7 @@ static inline void fp64_tangent_make_reverse_matrix(const fp64_tangent_t* tangen // =================== Angle =================== // -static inline float fp32_tangent_get_angle(const fp32_tangent_t* tangent, const angle_unit_t unit) +inline float tangent_fp32_get_angle(const tangent_fp32_t* tangent, const angle_unit_t unit) { if (tangent->cos >= 1.0f - FP32_TWO_EPSYLON) { return 0.0f; @@ -280,7 +280,7 @@ static inline float fp32_tangent_get_angle(const fp32_tangent_t* tangent, const return fp32_radians_to_units(atan2f(tangent->cos, tangent->sin), unit); } -static inline double fp64_tangent_get_angle(const fp64_tangent_t* tangent, const angle_unit_t unit) +inline double tangent_fp64_get_angle(const tangent_fp64_t* tangent, const angle_unit_t unit) { if (tangent->cos >= 1.0 - FP64_TWO_EPSYLON) { return 0.0; @@ -303,18 +303,18 @@ static inline double fp64_tangent_get_angle(const fp64_tangent_t* tangent, const // ================ Combination ================= // -static inline void fp32_tangent_combine(const fp32_tangent_t* tangent1, const fp32_tangent_t* tangent2, fp32_tangent_t* result) +inline void tangent_fp32_combine(const tangent_fp32_t* tangent1, const tangent_fp32_t* tangent2, tangent_fp32_t* result) { - fp32_tangent_set_values( + tangent_fp32_set_values( tangent1->cos * tangent2->cos - tangent1->sin * tangent2->sin, tangent1->cos * tangent2->sin + tangent1->sin * tangent2->cos, result ); } -static inline void fp64_tangent_combine(const fp64_tangent_t* tangent1, const fp64_tangent_t* tangent2, fp64_tangent_t* result) +inline void tangent_fp64_combine(const tangent_fp64_t* tangent1, const tangent_fp64_t* tangent2, tangent_fp64_t* result) { - fp64_tangent_set_values( + tangent_fp64_set_values( tangent1->cos * tangent2->cos - tangent1->sin * tangent2->sin, tangent1->cos * tangent2->sin + tangent1->sin * tangent2->cos, result @@ -323,7 +323,7 @@ static inline void fp64_tangent_combine(const fp64_tangent_t* tangent1, const fp // ================ Turn Vector ================= // -static inline void fp32_tangent_turn(const fp32_tangent_t* tangent, const fp32_vector2_t* vector, fp32_vector2_t* result) +inline void tangent_fp32_turn(const tangent_fp32_t* tangent, const vector2_fp32_t* vector, vector2_fp32_t* result) { const float x1 = tangent->cos * vector->x1 - tangent->sin * vector->x2; const float x2 = tangent->sin * vector->x1 + tangent->cos * vector->x2; @@ -332,7 +332,7 @@ static inline void fp32_tangent_turn(const fp32_tangent_t* tangent, const fp32_v result->x2 = x2; } -static inline void fp64_tangent_turn(const fp64_tangent_t* tangent, const fp64_vector2_t* vector, fp64_vector2_t* result) +inline void tangent_fp64_turn(const tangent_fp64_t* tangent, const vector2_fp64_t* vector, vector2_fp64_t* result) { const double x1 = tangent->cos * vector->x1 - tangent->sin * vector->x2; const double x2 = tangent->sin * vector->x1 + tangent->cos * vector->x2; @@ -343,7 +343,7 @@ static inline void fp64_tangent_turn(const fp64_tangent_t* tangent, const fp64_v // ============ Turn Vector Backward ============ // -static inline void fp32_tangent_turn_back(const fp32_tangent_t* tangent, const fp32_vector2_t* vector, fp32_vector2_t* result) +inline void tangent_fp32_turn_back(const tangent_fp32_t* tangent, const vector2_fp32_t* vector, vector2_fp32_t* result) { const float x1 = tangent->sin * vector->x2 + tangent->cos * vector->x1; const float x2 = tangent->cos * vector->x2 - tangent->sin * vector->x1; @@ -352,7 +352,7 @@ static inline void fp32_tangent_turn_back(const fp32_tangent_t* tangent, const f result->x2 = x2; } -static inline void fp64_tangent_turn_back(const fp64_tangent_t* tangent, const fp64_vector2_t* vector, fp64_vector2_t* result) +inline void tangent_fp64_turn_back(const tangent_fp64_t* tangent, const vector2_fp64_t* vector, vector2_fp64_t* result) { const double x1 = tangent->sin * vector->x2 + tangent->cos * vector->x1; const double x2 = tangent->cos * vector->x2 - tangent->sin * vector->x1; diff --git a/basic-geometry/vector2.c b/basic-geometry/vector2.c index 5c9884d..e2e3fd4 100644 --- a/basic-geometry/vector2.c +++ b/basic-geometry/vector2.c @@ -2,25 +2,25 @@ // =================== Angle ==================== // -float fp32_vector2_get_angle(const fp32_vector2_t* vector1, const fp32_vector2_t* vector2, const angle_unit_t unit) +float vector2_fp32_get_angle(const vector2_fp32_t* vector1, const vector2_fp32_t* vector2, const angle_unit_t unit) { if (vector1 == 0 || vector2 == 0) { return 0.0f; } - const float square_modulus1 = fp32_vector2_get_square_modulus(vector1); + const float square_modulus1 = vector2_get_square_modulus_fp32(vector1); if (square_modulus1 <= FP32_SQUARE_EPSYLON) { return 0.0f; } - const float square_modulus2 = fp32_vector2_get_square_modulus(vector2); + const float square_modulus2 = vector2_get_square_modulus_fp32(vector2); if (square_modulus2 <= FP32_SQUARE_EPSYLON) { return 0.0f; } - const float cosine = fp32_vector2_scalar_product(vector1, vector2) / sqrtf(square_modulus1 * square_modulus2); + const float cosine = vector2_fp32_scalar_product(vector1, vector2) / sqrtf(square_modulus1 * square_modulus2); if (cosine >= 1.0f - FP32_EPSYLON) { return 0.0f; @@ -33,25 +33,25 @@ float fp32_vector2_get_angle(const fp32_vector2_t* vector1, const fp32_vector2_t return fp32_radians_to_units(acosf(cosine), unit); } -double fp64_vector2_get_angle(const fp64_vector2_t* vector1, const fp64_vector2_t* vector2, const angle_unit_t unit) +double vector2_fp64_get_angle(const vector2_fp64_t* vector1, const vector2_fp64_t* vector2, const angle_unit_t unit) { if (vector1 == 0 || vector2 == 0) { return 0.0; } - const double square_modulus1 = fp64_vector2_get_square_modulus(vector1); + const double square_modulus1 = vector2_get_square_modulus_fp64(vector1); if (square_modulus1 <= FP64_SQUARE_EPSYLON) { return 0.0; } - const double square_modulus2 = fp64_vector2_get_square_modulus(vector2); + const double square_modulus2 = vector2_get_square_modulus_fp64(vector2); if (square_modulus2 <= FP64_SQUARE_EPSYLON) { return 0.0; } - const double cosine = fp64_vector2_scalar_product(vector1, vector2) / sqrt(square_modulus1 * square_modulus2); + const double cosine = vector2_fp64_scalar_product(vector1, vector2) / sqrt(square_modulus1 * square_modulus2); if (cosine >= 1.0 - FP64_EPSYLON) { return 0.0; diff --git a/basic-geometry/vector2.h b/basic-geometry/vector2.h index c6785c5..fde65ee 100644 --- a/basic-geometry/vector2.h +++ b/basic-geometry/vector2.h @@ -9,22 +9,22 @@ typedef struct { float x1, x2; -} fp32_vector2_t; +} vector2_fp32_t; typedef struct { double x1, x2; -} fp64_vector2_t; +} vector2_fp64_t; // =================== Reset ==================== // -static inline void fp32_vector2_reset(fp32_vector2_t* vector) +inline void vector2_reset_fp32(vector2_fp32_t* vector) { vector->x1 = 0.0f; vector->x2 = 0.0f; } -static inline void fp64_vector2_reset(fp64_vector2_t* vector) +inline void vector2_reset_fp64(vector2_fp64_t* vector) { vector->x1 = 0.0; vector->x2 = 0.0; @@ -32,13 +32,13 @@ static inline void fp64_vector2_reset(fp64_vector2_t* vector) // ==================== Set ===================== // -static inline void fp32_vector2_set_values(const float x1, const float x2, fp32_vector2_t* to) +inline void vector2_fp32_set_values(const float x1, const float x2, vector2_fp32_t* to) { to->x1 = x1; to->x2 = x2; } -static inline void fp64_vector2_set_values(const double x1, const double x2, fp64_vector2_t* to) +inline void vector2_fp64_set_values(const double x1, const double x2, vector2_fp64_t* to) { to->x1 = x1; to->x2 = x2; @@ -46,13 +46,13 @@ static inline void fp64_vector2_set_values(const double x1, const double x2, fp6 // ==================== Copy ==================== // -static inline void fp32_vector2_copy(const fp32_vector2_t* from, fp32_vector2_t* to) +inline void vector2_copy_fp32(const vector2_fp32_t* from, vector2_fp32_t* to) { to->x1 = from->x1; to->x2 = from->x2; } -static inline void fp64_vector2_copy(const fp64_vector2_t* from, fp64_vector2_t* to) +inline void vector2_copy_fp64(const vector2_fp64_t* from, vector2_fp64_t* to) { to->x1 = from->x1; to->x2 = from->x2; @@ -60,7 +60,7 @@ static inline void fp64_vector2_copy(const fp64_vector2_t* from, fp64_vector2_t* // ==================== Swap ==================== // -static inline void fp32_vector2_swap(fp32_vector2_t* vector1, fp32_vector2_t* vector2) +inline void vector2_swap_fp32(vector2_fp32_t* vector1, vector2_fp32_t* vector2) { const float x1 = vector2->x1; const float x2 = vector2->x2; @@ -72,7 +72,7 @@ static inline void fp32_vector2_swap(fp32_vector2_t* vector1, fp32_vector2_t* ve vector1->x2 = x2; } -static inline void fp64_vector2_swap(fp64_vector2_t* vector1, fp64_vector2_t* vector2) +inline void vector2_swap_fp64(vector2_fp64_t* vector1, vector2_fp64_t* vector2) { const double x1 = vector2->x1; const double x2 = vector2->x2; @@ -86,13 +86,13 @@ static inline void fp64_vector2_swap(fp64_vector2_t* vector1, fp64_vector2_t* ve // ============= Copy to twin type ============== // -static inline void fp32_vector2_set_from_fp64(const fp64_vector2_t* from, fp32_vector2_t* to) +inline void vector2_fp32_set_from_fp64(const vector2_fp64_t* from, vector2_fp32_t* to) { to->x1 = (float)from->x1; to->x2 = (float)from->x2; } -static inline void fp64_vector2_set_from_fp32(const fp32_vector2_t* from, fp64_vector2_t* to) +inline void vector2_fp64_set_from_fp32(const vector2_fp32_t* from, vector2_fp64_t* to) { to->x1 = from->x1; to->x2 = from->x2; @@ -100,13 +100,13 @@ static inline void fp64_vector2_set_from_fp32(const fp32_vector2_t* from, fp64_v // =================== Reverse ================== // -static inline void fp32_vector2_set_reverse(const fp32_vector2_t* from, fp32_vector2_t* to) +inline void vector2_fp32_set_reverse(const vector2_fp32_t* from, vector2_fp32_t* to) { to->x1 = -from->x1; to->x2 = -from->x2; } -static inline void fp64_vector2_set_reverse(const fp64_vector2_t* from, fp64_vector2_t* to) +inline void vector2_fp64_set_reverse(const vector2_fp64_t* from, vector2_fp64_t* to) { to->x1 = -from->x1; to->x2 = -from->x2; @@ -114,13 +114,13 @@ static inline void fp64_vector2_set_reverse(const fp64_vector2_t* from, fp64_vec // ============= Reverse twin type ============== // -static inline void fp32_vector2_set_reverse_fp64(const fp64_vector2_t* from, fp32_vector2_t* to) +inline void vector2_fp32_set_reverse_fp64(const vector2_fp64_t* from, vector2_fp32_t* to) { to->x1 = (float) -from->x1; to->x2 = (float) -from->x2; } -static inline void fp64_vector2_set_reverse_fp32(const fp32_vector2_t* from, fp64_vector2_t* to) +inline void vector2_fp64_set_reverse_fp32(const vector2_fp32_t* from, vector2_fp64_t* to) { to->x1 = -from->x1; to->x2 = -from->x2; @@ -128,61 +128,61 @@ static inline void fp64_vector2_set_reverse_fp32(const fp32_vector2_t* from, fp6 // =================== Module =================== // -static inline float fp32_vector2_get_square_modulus(const fp32_vector2_t* vector) +inline float vector2_get_square_modulus_fp32(const vector2_fp32_t* vector) { return vector->x1 * vector->x1 + vector->x2 * vector->x2; } -static inline double fp64_vector2_get_square_modulus(const fp64_vector2_t* vector) +inline double vector2_get_square_modulus_fp64(const vector2_fp64_t* vector) { return vector->x1 * vector->x1 + vector->x2 * vector->x2; } -static inline float fp32_vector2_get_modulus(const fp32_vector2_t* vector) +inline float vector2_get_modulus_fp32(const vector2_fp32_t* vector) { - return sqrtf(fp32_vector2_get_square_modulus(vector)); + return sqrtf(vector2_get_square_modulus_fp32(vector)); } -static inline double fp64_vector2_get_modulus(const fp64_vector2_t* vector) +inline double vector2_get_modulus_fp64(const vector2_fp64_t* vector) { - return sqrt(fp64_vector2_get_square_modulus(vector)); + return sqrt(vector2_get_square_modulus_fp64(vector)); } // ================= Comparison ================= // -static inline int fp32_vector2_is_zero(const fp32_vector2_t* vector) +inline int vector2_fp32_is_zero(const vector2_fp32_t* vector) { - return fp32_vector2_get_square_modulus(vector) <= FP32_SQUARE_EPSYLON; + return vector2_get_square_modulus_fp32(vector) <= FP32_SQUARE_EPSYLON; } -static inline int fp64_vector2_is_zero(const fp64_vector2_t* vector) +inline int vector2_fp64_is_zero(const vector2_fp64_t* vector) { - return fp64_vector2_get_square_modulus(vector) <= FP64_SQUARE_EPSYLON; + return vector2_get_square_modulus_fp64(vector) <= FP64_SQUARE_EPSYLON; } -static inline int fp32_vector2_is_unit(const fp32_vector2_t* vector) +inline int vector2_fp32_is_unit(const vector2_fp32_t* vector) { - const float square_modulus = fp32_vector2_get_square_modulus(vector); + const float square_modulus = vector2_get_square_modulus_fp32(vector); return 1.0f - FP32_TWO_EPSYLON <= square_modulus && square_modulus <= 1.0f + FP32_TWO_EPSYLON; } -static inline int fp64_vector2_is_unit(const fp64_vector2_t* vector) +inline int vector2_fp64_is_unit(const vector2_fp64_t* vector) { - const double square_modulus = fp64_vector2_get_square_modulus(vector); + const double square_modulus = vector2_get_square_modulus_fp64(vector); return 1.0f - FP64_TWO_EPSYLON <= square_modulus && square_modulus <= 1.0f + FP64_TWO_EPSYLON; } // ==================== Add ===================== // -static inline void fp32_vector2_add(const fp32_vector2_t* vector1, const fp32_vector2_t* vector2, fp32_vector2_t* sum) +inline void vector2_fp32_add(const vector2_fp32_t* vector1, const vector2_fp32_t* vector2, vector2_fp32_t* sum) { sum->x1 = vector1->x1 + vector2->x1; sum->x2 = vector1->x2 + vector2->x2; } -static inline void fp64_vector2_add(const fp64_vector2_t* vector1, const fp64_vector2_t* vector2, fp64_vector2_t* sum) +inline void vector2_fp64_add(const vector2_fp64_t* vector1, const vector2_fp64_t* vector2, vector2_fp64_t* sum) { sum->x1 = vector1->x1 + vector2->x1; sum->x2 = vector1->x2 + vector2->x2; @@ -190,13 +190,13 @@ static inline void fp64_vector2_add(const fp64_vector2_t* vector1, const fp64_ve // ================ Subtraction ================= // -static inline void fp32_vector2_subtract(const fp32_vector2_t* minuend, const fp32_vector2_t* subtrahend, fp32_vector2_t* difference) +inline void vector2_fp32_subtract(const vector2_fp32_t* minuend, const vector2_fp32_t* subtrahend, vector2_fp32_t* difference) { difference->x1 = minuend->x1 - subtrahend->x1; difference->x2 = minuend->x2 - subtrahend->x2; } -static inline void fp64_vector2_subtract(const fp64_vector2_t* minuend, const fp64_vector2_t* subtrahend, fp64_vector2_t* difference) +inline void vector2_fp64_subtract(const vector2_fp64_t* minuend, const vector2_fp64_t* subtrahend, vector2_fp64_t* difference) { difference->x1 = minuend->x1 - subtrahend->x1; difference->x2 = minuend->x2 - subtrahend->x2; @@ -204,13 +204,13 @@ static inline void fp64_vector2_subtract(const fp64_vector2_t* minuend, const fp // =============== Multiplication =============== // -static inline void fp32_vector2_multiply(const fp32_vector2_t* multiplicand, const float multiplier, fp32_vector2_t* product) +inline void vector2_fp32_multiply(const vector2_fp32_t* multiplicand, const float multiplier, vector2_fp32_t* product) { product->x1 = multiplicand->x1 * multiplier; product->x2 = multiplicand->x2 * multiplier; } -static inline void fp64_vector2_multiply(const fp64_vector2_t* multiplicand, const double multiplier, fp64_vector2_t* product) +inline void vector2_fp64_multiply(const vector2_fp64_t* multiplicand, const double multiplier, vector2_fp64_t* product) { product->x1 = multiplicand->x1 * multiplier; product->x2 = multiplicand->x2 * multiplier; @@ -218,25 +218,25 @@ static inline void fp64_vector2_multiply(const fp64_vector2_t* multiplicand, con // ================== Division ================== // -static inline void fp32_vector2_divide(const fp32_vector2_t* dividend, const float divisor, fp32_vector2_t* quotient) +inline void vector2_fp32_divide(const vector2_fp32_t* dividend, const float divisor, vector2_fp32_t* quotient) { - fp32_vector2_multiply(dividend, 1.0f / divisor, quotient); + vector2_fp32_multiply(dividend, 1.0f / divisor, quotient); } -static inline void fp64_vector2_divide(const fp64_vector2_t* dividend, const double divisor, fp64_vector2_t* quotient) +inline void vector2_fp64_divide(const vector2_fp64_t* dividend, const double divisor, vector2_fp64_t* quotient) { - fp64_vector2_multiply(dividend, 1.0 / divisor, quotient); + vector2_fp64_multiply(dividend, 1.0 / divisor, quotient); } // ================ Append scaled =============== // -static inline void fp32_vector2_append_scaled(fp32_vector2_t* basic_vector, const fp32_vector2_t* scalable_vector, const float scale) +inline void vector2_fp32_append_scaled(vector2_fp32_t* basic_vector, const vector2_fp32_t* scalable_vector, const float scale) { basic_vector->x1 += scalable_vector->x1 * scale; basic_vector->x2 += scalable_vector->x2 * scale; } -static inline void fp64_vector2_append_scaled(fp64_vector2_t* basic_vector, const fp64_vector2_t* scalable_vector, const double scale) +inline void vector2_fp64_append_scaled(vector2_fp64_t* basic_vector, const vector2_fp64_t* scalable_vector, const double scale) { basic_vector->x1 += scalable_vector->x1 * scale; basic_vector->x2 += scalable_vector->x2 * scale; @@ -244,13 +244,13 @@ static inline void fp64_vector2_append_scaled(fp64_vector2_t* basic_vector, cons // ================== Average2 ================== // -static inline void fp32_vector2_get_mean2(const fp32_vector2_t* vector1, const fp32_vector2_t* vector2, fp32_vector2_t* result) +inline void vector2_fp32_get_mean2(const vector2_fp32_t* vector1, const vector2_fp32_t* vector2, vector2_fp32_t* result) { result->x1 = (vector1->x1 + vector2->x1) * 0.5f; result->x2 = (vector1->x2 + vector2->x2) * 0.5f; } -static inline void fp64_vector2_get_mean2(const fp64_vector2_t* vector1, const fp64_vector2_t* vector2, fp64_vector2_t* result) +inline void vector2_fp64_get_mean2(const vector2_fp64_t* vector1, const vector2_fp64_t* vector2, vector2_fp64_t* result) { result->x1 = (vector1->x1 + vector2->x1) * 0.5; result->x2 = (vector1->x2 + vector2->x2) * 0.5; @@ -258,13 +258,13 @@ static inline void fp64_vector2_get_mean2(const fp64_vector2_t* vector1, const f // ================== Average3 ================== // -static inline void fp32_vector2_get_mean3(const fp32_vector2_t* vector1, const fp32_vector2_t* vector2, const fp32_vector2_t* vector3, fp32_vector2_t* result) +inline void vector2_fp32_get_mean3(const vector2_fp32_t* vector1, const vector2_fp32_t* vector2, const vector2_fp32_t* vector3, vector2_fp32_t* result) { result->x1 = (vector1->x1 + vector2->x1 + vector3->x1) * FP32_ONE_THIRD; result->x2 = (vector1->x2 + vector2->x2 + vector3->x2) * FP32_ONE_THIRD; } -static inline void fp64_vector2_get_mean3(const fp64_vector2_t* vector1, const fp64_vector2_t* vector2, const fp64_vector2_t* vector3, fp64_vector2_t* result) +inline void vector2_fp64_get_mean3(const vector2_fp64_t* vector1, const vector2_fp64_t* vector2, const vector2_fp64_t* vector3, vector2_fp64_t* result) { result->x1 = (vector1->x1 + vector2->x1 + vector3->x1) * FP64_ONE_THIRD; result->x2 = (vector1->x2 + vector2->x2 + vector3->x2) * FP64_ONE_THIRD; @@ -272,31 +272,31 @@ static inline void fp64_vector2_get_mean3(const fp64_vector2_t* vector1, const f // =============== Scalar Product =============== // -static inline float fp32_vector2_scalar_product(const fp32_vector2_t* vector1, const fp32_vector2_t* vector2) +inline float vector2_fp32_scalar_product(const vector2_fp32_t* vector1, const vector2_fp32_t* vector2) { return vector1->x1 * vector2->x1 + vector1->x2 * vector2->x2; } -static inline double fp64_vector2_scalar_product(const fp64_vector2_t* vector1, const fp64_vector2_t* vector2) +inline double vector2_fp64_scalar_product(const vector2_fp64_t* vector1, const vector2_fp64_t* vector2) { return vector1->x1 * vector2->x1 + vector1->x2 * vector2->x2; } // =============== Cross Product ================ // -static inline float fp32_vector2_cross_product(const fp32_vector2_t* vector1, const fp32_vector2_t* vector2) +inline float vector2_fp32_cross_product(const vector2_fp32_t* vector1, const vector2_fp32_t* vector2) { return vector1->x1 * vector2->x2 - vector1->x2 * vector2->x1; } -static inline double fp64_vector2_cross_product(const fp64_vector2_t* vector1, const fp64_vector2_t* vector2) +inline double vector2_fp64_cross_product(const vector2_fp64_t* vector1, const vector2_fp64_t* vector2) { return vector1->x1 * vector2->x2 - vector1->x2 * vector2->x1; } // ============== Complex Product =============== // -static inline void fp32_vector2_complex_product(const fp32_vector2_t* vector1, const fp32_vector2_t* vector2, fp32_vector2_t* result) +inline void vector2_fp32_complex_product(const vector2_fp32_t* vector1, const vector2_fp32_t* vector2, vector2_fp32_t* result) { const float x1 = vector1->x1 * vector2->x1 - vector1->x2 * vector2->x2; const float x2 = vector1->x1 * vector2->x2 + vector1->x2 * vector2->x1; @@ -305,7 +305,7 @@ static inline void fp32_vector2_complex_product(const fp32_vector2_t* vector1, c result->x2 = x2; } -static inline void fp64_vector2_complex_product(const fp64_vector2_t* vector1, const fp64_vector2_t* vector2, fp64_vector2_t* result) +inline void vector2_fp64_complex_product(const vector2_fp64_t* vector1, const vector2_fp64_t* vector2, vector2_fp64_t* result) { const double x1 = vector1->x1 * vector2->x1 - vector1->x2 * vector2->x2; const double x2 = vector1->x1 * vector2->x2 + vector1->x2 * vector2->x1; @@ -316,63 +316,63 @@ static inline void fp64_vector2_complex_product(const fp64_vector2_t* vector1, c // =============== Normalization ================ // -static inline int fp32_vector2_normalize(fp32_vector2_t* vector) +inline int vector2_fp32_normalize(vector2_fp32_t* vector) { - const float square_modulus = fp32_vector2_get_square_modulus(vector); + const float square_modulus = vector2_get_square_modulus_fp32(vector); if (1.0f - FP32_TWO_EPSYLON <= square_modulus && square_modulus <= 1.0f + FP32_TWO_EPSYLON) { return 1; } if (square_modulus <= FP32_SQUARE_EPSYLON) { - fp32_vector2_reset(vector); + vector2_reset_fp32(vector); return 0; } - fp32_vector2_multiply(vector, sqrtf(1.0f / square_modulus), vector); + vector2_fp32_multiply(vector, sqrtf(1.0f / square_modulus), vector); return 1; } -static inline int fp64_vector2_normalize(fp64_vector2_t* vector) +inline int vector2_fp64_normalize(vector2_fp64_t* vector) { - const double square_modulus = fp64_vector2_get_square_modulus(vector); + const double square_modulus = vector2_get_square_modulus_fp64(vector); if (1.0 - FP64_TWO_EPSYLON <= square_modulus && square_modulus <= 1.0 + FP64_TWO_EPSYLON) { return 1; } if (square_modulus <= FP64_SQUARE_EPSYLON) { - fp64_vector2_reset(vector); + vector2_reset_fp64(vector); return 0; } - fp64_vector2_multiply(vector, sqrt(1.0 / square_modulus), vector); + vector2_fp64_multiply(vector, sqrt(1.0 / square_modulus), vector); return 1; } // =============== Get Normalized =============== // -static inline int fp32_vector2_set_normalized(const fp32_vector2_t* vector, fp32_vector2_t* result) +inline int vector2_fp32_set_normalized(const vector2_fp32_t* vector, vector2_fp32_t* result) { - fp32_vector2_copy(vector, result); - return fp32_vector2_normalize(result); + vector2_copy_fp32(vector, result); + return vector2_fp32_normalize(result); } -static inline int fp64_vector2_set_normalized(const fp64_vector2_t* vector, fp64_vector2_t* result) +inline int vector2_fp64_set_normalized(const vector2_fp64_t* vector, vector2_fp64_t* result) { - fp64_vector2_copy(vector, result); - return fp64_vector2_normalize(result); + vector2_copy_fp64(vector, result); + return vector2_fp64_normalize(result); } // =================== Angle ==================== // -float fp32_vector2_get_angle(const fp32_vector2_t* vector1, const fp32_vector2_t* vector2, const angle_unit_t unit); +float vector2_fp32_get_angle(const vector2_fp32_t* vector1, const vector2_fp32_t* vector2, const angle_unit_t unit); -double fp64_vector2_get_angle(const fp64_vector2_t* vector1, const fp64_vector2_t* vector2, const angle_unit_t unit); +double vector2_fp64_get_angle(const vector2_fp64_t* vector1, const vector2_fp64_t* vector2, const angle_unit_t unit); // =============== Square Distance ============== // -static inline float fp32_vector2_get_square_distance(const fp32_vector2_t* vector1, const fp32_vector2_t* vector2) +inline float vector2_fp32_get_square_distance(const vector2_fp32_t* vector1, const vector2_fp32_t* vector2) { const float dx1 = (vector1->x1 - vector2->x1); const float dx2 = (vector1->x2 - vector2->x2); @@ -380,7 +380,7 @@ static inline float fp32_vector2_get_square_distance(const fp32_vector2_t* vecto return dx1 * dx1 + dx2 * dx2; } -static inline double fp64_vector2_get_square_distance(const fp64_vector2_t* vector1, const fp64_vector2_t* vector2) +inline double vector2_fp64_get_square_distance(const vector2_fp64_t* vector1, const vector2_fp64_t* vector2) { const double dx1 = (vector1->x1 - vector2->x1); const double dx2 = (vector1->x2 - vector2->x2); @@ -390,23 +390,23 @@ static inline double fp64_vector2_get_square_distance(const fp64_vector2_t* vect // ================== Distance ================== // -static inline float fp32_vector2_get_distance(const fp32_vector2_t* vector1, const fp32_vector2_t* vector2) +inline float vector2_fp32_get_distance(const vector2_fp32_t* vector1, const vector2_fp32_t* vector2) { - return sqrtf(fp32_vector2_get_square_distance(vector1, vector2)); + return sqrtf(vector2_fp32_get_square_distance(vector1, vector2)); } -static inline double fp64_vector2_get_distance(const fp64_vector2_t* vector1, const fp64_vector2_t* vector2) +inline double vector2_fp64_get_distance(const vector2_fp64_t* vector1, const vector2_fp64_t* vector2) { - return sqrt(fp64_vector2_get_square_distance(vector1, vector2)); + return sqrt(vector2_fp64_get_square_distance(vector1, vector2)); } // ================== Are Equal ================= // -static inline int fp32_vector2_are_equal(const fp32_vector2_t* vector1, const fp32_vector2_t* vector2) +inline int vector2_fp32_are_equal(const vector2_fp32_t* vector1, const vector2_fp32_t* vector2) { - const float square_modulus1 = fp32_vector2_get_square_modulus(vector1); - const float square_modulus2 = fp32_vector2_get_square_modulus(vector2); - const float square_modulus3 = fp32_vector2_get_square_distance(vector1, vector2); + const float square_modulus1 = vector2_get_square_modulus_fp32(vector1); + const float square_modulus2 = vector2_get_square_modulus_fp32(vector2); + const float square_modulus3 = vector2_fp32_get_square_distance(vector1, vector2); // 2.0f means dimension amount if (square_modulus1 < FP32_EPSYLON_EFFECTIVENESS_LIMIT || square_modulus2 < FP32_EPSYLON_EFFECTIVENESS_LIMIT) { @@ -420,11 +420,11 @@ static inline int fp32_vector2_are_equal(const fp32_vector2_t* vector1, const fp return square_modulus3 <= (2.0f * FP32_SQUARE_EPSYLON) * square_modulus1; } -static inline int fp64_vector2_are_equal(const fp64_vector2_t* vector1, const fp64_vector2_t* vector2) +inline int vector2_fp64_are_equal(const vector2_fp64_t* vector1, const vector2_fp64_t* vector2) { - const double square_modulus1 = fp64_vector2_get_square_modulus(vector1); - const double square_modulus2 = fp64_vector2_get_square_modulus(vector2); - const double square_modulus3 = fp64_vector2_get_square_distance(vector1, vector2); + const double square_modulus1 = vector2_get_square_modulus_fp64(vector1); + const double square_modulus2 = vector2_get_square_modulus_fp64(vector2); + const double square_modulus3 = vector2_fp64_get_square_distance(vector1, vector2); // 2.0 means dimension amount if (square_modulus1 < FP64_EPSYLON_EFFECTIVENESS_LIMIT || square_modulus2 < FP64_EPSYLON_EFFECTIVENESS_LIMIT) { diff --git a/basic-geometry/vector3.c b/basic-geometry/vector3.c index fa7e31f..525206b 100644 --- a/basic-geometry/vector3.c +++ b/basic-geometry/vector3.c @@ -2,25 +2,25 @@ // =================== Angle ==================== // -float fp32_vector3_get_angle(const fp32_vector3_t* vector1, const fp32_vector3_t* vector2, const angle_unit_t unit) +float vector3_fp32_get_angle(const vector3_fp32_t* vector1, const vector3_fp32_t* vector2, const angle_unit_t unit) { if (vector1 == 0 || vector2 == 0) { return 0.0f; } - const float square_modulus1 = fp32_vector3_get_square_modulus(vector1); + const float square_modulus1 = vector3_get_square_modulus_fp32(vector1); if (square_modulus1 <= FP32_SQUARE_EPSYLON) { return 0.0f; } - const float square_modulus2 = fp32_vector3_get_square_modulus(vector2); + const float square_modulus2 = vector3_get_square_modulus_fp32(vector2); if (square_modulus2 <= FP32_SQUARE_EPSYLON) { return 0.0f; } - const float cosine = fp32_vector3_scalar_product(vector1, vector2) / sqrtf(square_modulus1 * square_modulus2); + const float cosine = vector3_fp32_scalar_product(vector1, vector2) / sqrtf(square_modulus1 * square_modulus2); if (cosine >= 1.0f - FP32_EPSYLON) { return 0.0f; @@ -33,25 +33,25 @@ float fp32_vector3_get_angle(const fp32_vector3_t* vector1, const fp32_vector3_t return fp32_radians_to_units(acosf(cosine), unit); } -double fp64_vector3_get_angle(const fp64_vector3_t* vector1, const fp64_vector3_t* vector2, const angle_unit_t unit) +double vector3_fp64_get_angle(const vector3_fp64_t* vector1, const vector3_fp64_t* vector2, const angle_unit_t unit) { if (vector1 == 0 || vector2 == 0) { return 0.0; } - const double square_modulus1 = fp64_vector3_get_square_modulus(vector1); + const double square_modulus1 = vector3_get_square_modulus_fp64(vector1); if (square_modulus1 <= FP64_SQUARE_EPSYLON) { return 0.0; } - const double square_modulus2 = fp64_vector3_get_square_modulus(vector2); + const double square_modulus2 = vector3_get_square_modulus_fp64(vector2); if (square_modulus2 <= FP64_SQUARE_EPSYLON) { return 0.0; } - const double cosine = fp64_vector3_scalar_product(vector1, vector2) / sqrt(square_modulus1 * square_modulus2); + const double cosine = vector3_fp64_scalar_product(vector1, vector2) / sqrt(square_modulus1 * square_modulus2); if (cosine >= 1.0 - FP64_EPSYLON) { return 0.0; diff --git a/basic-geometry/vector3.h b/basic-geometry/vector3.h index bc4a945..3b99a76 100644 --- a/basic-geometry/vector3.h +++ b/basic-geometry/vector3.h @@ -7,27 +7,51 @@ #include // ================== Vector3 =================== // -// + typedef struct { float x1, x2, x3; -} fp32_vector3_t; +} vector3_fp32_t; typedef struct { double x1, x2, x3; -} fp64_vector3_t; +} vector3_fp64_t; +// ================ Declarations ================ // +/* +extern inline void vector3_reset_fp32(vector3_fp32_t* vector); +extern inline void vector3_set_fp32(const float x1, const float x2, const float x3, vector3_fp32_t* to); +extern inline void vector3_copy_fp32(const vector3_fp32_t* from, vector3_fp32_t* to); +extern inline void vector3_fp32_convert(const vector3_fp64_t* from, vector3_fp32_t* to); +extern inline void vector3_swap_fp32(vector3_fp32_t* vector1, vector3_fp32_t* vector2); +extern inline void vector3_invert_fp32(vector3_fp32_t* vector); +extern inline void vector3_fp32_make_inverted(const vector3_fp32_t* vector, vector3_fp32_t* result); +extern inline void vector3_fp32_make_inverted_fp64(const vector3_fp64_t* vector, vector3_fp32_t* result); +extern inline float vector3_get_square_modulus_fp32(const vector3_fp32_t* vector); +extern inline float vector3_get_modulus_fp32(const vector3_fp32_t* vector); + +extern inline void vector3_reset_fp64(vector3_fp64_t* vector); +extern inline void vector3_set_fp64(const double x1, const double x2, const double x3, vector3_fp64_t* to); +extern inline void vector3_copy_fp64(const vector3_fp64_t* from, vector3_fp64_t* to); +extern inline void vector3_fp64_convert(const vector3_fp32_t* from, vector3_fp64_t* to); +extern inline void vector3_swap_fp64(vector3_fp64_t* vector1, vector3_fp64_t* vector2); +extern inline void vector3_invert_fp64(vector3_fp64_t* vector); +extern inline void vector3_fp64_make_inverted(const vector3_fp64_t* vector, vector3_fp64_t* result); +extern inline void vector3_fp64_make_inverted_fp32(const vector3_fp32_t* vector, vector3_fp64_t* result); +extern inline double vector3_get_square_modulus_fp64(const vector3_fp64_t* vector); +extern inline double vector3_get_modulus_fp64(const vector3_fp64_t* vector); +*/ // =================== Reset ==================== // -static inline void fp32_vector3_reset(fp32_vector3_t* vector) +inline void vector3_reset_fp32(vector3_fp32_t* vector) { vector->x1 = 0.0f; vector->x2 = 0.0f; vector->x3 = 0.0f; } -static inline void fp64_vector3_reset(fp64_vector3_t* vector) +inline void vector3_reset_fp64(vector3_fp64_t* vector) { vector->x1 = 0.0; vector->x2 = 0.0; @@ -36,14 +60,14 @@ static inline void fp64_vector3_reset(fp64_vector3_t* vector) // ==================== Set ===================== // -static inline void fp32_vector3_set_values(const float x1, const float x2, const float x3, fp32_vector3_t* to) +inline void vector3_set_fp32(const float x1, const float x2, const float x3, vector3_fp32_t* to) { to->x1 = x1; to->x2 = x2; to->x3 = x3; } -static inline void fp64_vector3_set_values(const double x1, const double x2, const double x3, fp64_vector3_t* to) +inline void vector3_set_fp64(const double x1, const double x2, const double x3, vector3_fp64_t* to) { to->x1 = x1; to->x2 = x2; @@ -52,14 +76,30 @@ static inline void fp64_vector3_set_values(const double x1, const double x2, con // ==================== Copy ==================== // -static inline void fp32_vector3_copy(const fp32_vector3_t* from, fp32_vector3_t* to) +inline void vector3_copy_fp32(const vector3_fp32_t* from, vector3_fp32_t* to) { to->x1 = from->x1; to->x2 = from->x2; to->x3 = from->x3; } -static inline void fp64_vector3_copy(const fp64_vector3_t* from, fp64_vector3_t* to) +inline void vector3_copy_fp64(const vector3_fp64_t* from, vector3_fp64_t* to) +{ + to->x1 = from->x1; + to->x2 = from->x2; + to->x3 = from->x3; +} + +// ================== Convert =================== // + +inline void vector3_fp32_convert(const vector3_fp64_t* from, vector3_fp32_t* to) +{ + to->x1 = (float) from->x1; + to->x2 = (float) from->x2; + to->x3 = (float) from->x3; +} + +inline void vector3_fp64_convert(const vector3_fp32_t* from, vector3_fp64_t* to) { to->x1 = from->x1; to->x2 = from->x2; @@ -68,7 +108,7 @@ static inline void fp64_vector3_copy(const fp64_vector3_t* from, fp64_vector3_t* // ==================== Swap ==================== // -static inline void fp32_vector3_swap(fp32_vector3_t* vector1, fp32_vector3_t* vector2) +inline void vector3_swap_fp32(vector3_fp32_t* vector1, vector3_fp32_t* vector2) { const float x1 = vector2->x1; const float x2 = vector2->x2; @@ -83,7 +123,7 @@ static inline void fp32_vector3_swap(fp32_vector3_t* vector1, fp32_vector3_t* ve vector1->x3 = x3; } -static inline void fp64_vector3_swap(fp64_vector3_t* vector1, fp64_vector3_t* vector2) +inline void vector3_swap_fp64(vector3_fp64_t* vector1, vector3_fp64_t* vector2) { const double x1 = vector2->x1; const double x2 = vector2->x2; @@ -98,112 +138,112 @@ static inline void fp64_vector3_swap(fp64_vector3_t* vector1, fp64_vector3_t* ve vector1->x3 = x3; } -// ============= Copy to twin type ============== // +// ==================== Invert ================== // -static inline void fp32_vector3_set_from_fp64(const fp64_vector3_t* from, fp32_vector3_t* to) +inline void vector3_invert_fp32(vector3_fp32_t* vector) { - to->x1 = (float) from->x1; - to->x2 = (float) from->x2; - to->x3 = (float) from->x3; + vector->x1 = -vector->x1; + vector->x2 = -vector->x2; + vector->x3 = -vector->x3; } -static inline void fp64_vector3_set_from_fp32(const fp32_vector3_t* from, fp64_vector3_t* to) +inline void vector3_invert_fp64(vector3_fp64_t* vector) { - to->x1 = from->x1; - to->x2 = from->x2; - to->x3 = from->x3; + vector->x1 = -vector->x1; + vector->x2 = -vector->x2; + vector->x3 = -vector->x3; } -// =================== Reverse ================== // +// ================ Make Inverted =============== // -static inline void fp32_vector3_set_reverse(const fp32_vector3_t* from, fp32_vector3_t* to) +inline void vector3_fp32_make_inverted(const vector3_fp32_t* vector, vector3_fp32_t* result) { - to->x1 = -from->x1; - to->x2 = -from->x2; - to->x3 = -from->x3; + result->x1 = -vector->x1; + result->x2 = -vector->x2; + result->x3 = -vector->x3; } -static inline void fp64_vector3_set_reverse(const fp64_vector3_t* from, fp64_vector3_t* to) +inline void vector3_fp64_make_inverted(const vector3_fp64_t* vector, vector3_fp64_t* result) { - to->x1 = -from->x1; - to->x2 = -from->x2; - to->x3 = -from->x3; + result->x1 = -vector->x1; + result->x2 = -vector->x2; + result->x3 = -vector->x3; } -// ============= Reverse twin type ============== // +// ============== Make Inverted Twin ============ // -static inline void fp32_vector3_set_reverse_fp64(const fp64_vector3_t* from, fp32_vector3_t* to) +inline void vector3_fp32_make_inverted_fp64(const vector3_fp32_t* vector, vector3_fp64_t* result) { - to->x1 = (float) -from->x1; - to->x2 = (float) -from->x2; - to->x3 = (float) -from->x3; + result->x1 = -vector->x1; + result->x2 = -vector->x2; + result->x3 = -vector->x3; } -static inline void fp64_vector3_set_reverse_fp32(const fp32_vector3_t* from, fp64_vector3_t* to) +inline void vector3_fp64_make_inverted_fp32(const vector3_fp64_t* vector, vector3_fp32_t* result) { - to->x1 = -from->x1; - to->x2 = -from->x2; - to->x3 = -from->x3; + result->x1 = (float) -vector->x1; + result->x2 = (float) -vector->x2; + result->x3 = (float) -vector->x3; } // =================== Module =================== // -static inline float fp32_vector3_get_square_modulus(const fp32_vector3_t* vector) +inline float vector3_get_square_modulus_fp32(const vector3_fp32_t* vector) { return vector->x1 * vector->x1 + vector->x2 * vector->x2 + vector->x3 * vector->x3; } -static inline double fp64_vector3_get_square_modulus(const fp64_vector3_t* vector) +inline double vector3_get_square_modulus_fp64(const vector3_fp64_t* vector) { return vector->x1 * vector->x1 + vector->x2 * vector->x2 + vector->x3 * vector->x3; } -static inline float fp32_vector3_get_modulus(const fp32_vector3_t* vector) +inline float vector3_get_modulus_fp32(const vector3_fp32_t* vector) { - return sqrtf(fp32_vector3_get_square_modulus(vector)); + return sqrtf(vector3_get_square_modulus_fp32(vector)); } -static inline double fp64_vector3_get_modulus(const fp64_vector3_t* vector) +inline double vector3_get_modulus_fp64(const vector3_fp64_t* vector) { - return sqrt(fp64_vector3_get_square_modulus(vector)); + return sqrt(vector3_get_square_modulus_fp64(vector)); } // ================= Comparison ================= // -static inline int fp32_vector3_is_zero(const fp32_vector3_t* vector) +inline int vector3_fp32_is_zero(const vector3_fp32_t* vector) { - return fp32_vector3_get_square_modulus(vector) <= FP32_SQUARE_EPSYLON; + return vector3_get_square_modulus_fp32(vector) <= FP32_SQUARE_EPSYLON; } -static inline int fp64_vector3_is_zero(const fp64_vector3_t* vector) +inline int vector3_fp64_is_zero(const vector3_fp64_t* vector) { - return fp64_vector3_get_square_modulus(vector) <= FP64_SQUARE_EPSYLON; + return vector3_get_square_modulus_fp64(vector) <= FP64_SQUARE_EPSYLON; } -static inline int fp32_vector3_is_unit(const fp32_vector3_t* vector) +inline int vector3_fp32_is_unit(const vector3_fp32_t* vector) { - const float square_modulus = fp32_vector3_get_square_modulus(vector); + const float square_modulus = vector3_get_square_modulus_fp32(vector); return 1.0f - FP32_TWO_EPSYLON <= square_modulus && square_modulus <= 1.0f + FP32_TWO_EPSYLON; } -static inline int fp64_vector3_is_unit(const fp64_vector3_t* vector) +inline int vector3_fp64_is_unit(const vector3_fp64_t* vector) { - const double square_modulus = fp64_vector3_get_square_modulus(vector); + const double square_modulus = vector3_get_square_modulus_fp64(vector); return 1.0f - FP64_TWO_EPSYLON <= square_modulus && square_modulus <= 1.0f + FP64_TWO_EPSYLON; } // ==================== Add ===================== // -static inline void fp32_vector3_add(const fp32_vector3_t* vector1, const fp32_vector3_t* vector2, fp32_vector3_t* sum) +inline void vector3_fp32_add(const vector3_fp32_t* vector1, const vector3_fp32_t* vector2, vector3_fp32_t* sum) { sum->x1 = vector1->x1 + vector2->x1; sum->x2 = vector1->x2 + vector2->x2; sum->x3 = vector1->x3 + vector2->x3; } -static inline void fp64_vector3_add(const fp64_vector3_t* vector1, const fp64_vector3_t* vector2, fp64_vector3_t* sum) +inline void vector3_fp64_add(const vector3_fp64_t* vector1, const vector3_fp64_t* vector2, vector3_fp64_t* sum) { sum->x1 = vector1->x1 + vector2->x1; sum->x2 = vector1->x2 + vector2->x2; @@ -212,14 +252,14 @@ static inline void fp64_vector3_add(const fp64_vector3_t* vector1, const fp64_ve // ================ Subtraction ================= // -static inline void fp32_vector3_subtract(const fp32_vector3_t* minuend, const fp32_vector3_t* subtrahend, fp32_vector3_t* difference) +inline void vector3_fp32_subtract(const vector3_fp32_t* minuend, const vector3_fp32_t* subtrahend, vector3_fp32_t* difference) { difference->x1 = minuend->x1 - subtrahend->x1; difference->x2 = minuend->x2 - subtrahend->x2; difference->x3 = minuend->x3 - subtrahend->x3; } -static inline void fp64_vector3_subtract(const fp64_vector3_t* minuend, const fp64_vector3_t* subtrahend, fp64_vector3_t* difference) +inline void vector3_fp64_subtract(const vector3_fp64_t* minuend, const vector3_fp64_t* subtrahend, vector3_fp64_t* difference) { difference->x1 = minuend->x1 - subtrahend->x1; difference->x2 = minuend->x2 - subtrahend->x2; @@ -228,14 +268,14 @@ static inline void fp64_vector3_subtract(const fp64_vector3_t* minuend, const fp // =============== Multiplication =============== // -static inline void fp32_vector3_multiply(const fp32_vector3_t* multiplicand, const float multiplier, fp32_vector3_t* product) +inline void vector3_fp32_multiply(const vector3_fp32_t* multiplicand, const float multiplier, vector3_fp32_t* product) { product->x1 = multiplicand->x1 * multiplier; product->x2 = multiplicand->x2 * multiplier; product->x3 = multiplicand->x3 * multiplier; } -static inline void fp64_vector3_multiply(const fp64_vector3_t* multiplicand, const double multiplier, fp64_vector3_t* product) +inline void vector3_fp64_multiply(const vector3_fp64_t* multiplicand, const double multiplier, vector3_fp64_t* product) { product->x1 = multiplicand->x1 * multiplier; product->x2 = multiplicand->x2 * multiplier; @@ -244,26 +284,26 @@ static inline void fp64_vector3_multiply(const fp64_vector3_t* multiplicand, con // ================== Division ================== // -static inline void fp32_vector3_divide(const fp32_vector3_t* dividend, const float divisor, fp32_vector3_t* quotient) +inline void vector3_fp32_divide(const vector3_fp32_t* dividend, const float divisor, vector3_fp32_t* quotient) { - fp32_vector3_multiply(dividend, 1.0f / divisor, quotient); + vector3_fp32_multiply(dividend, 1.0f / divisor, quotient); } -static inline void fp64_vector3_divide(const fp64_vector3_t* dividend, const double divisor, fp64_vector3_t* quotient) +inline void vector3_fp64_divide(const vector3_fp64_t* dividend, const double divisor, vector3_fp64_t* quotient) { - fp64_vector3_multiply(dividend, 1.0 / divisor, quotient); + vector3_fp64_multiply(dividend, 1.0 / divisor, quotient); } // ================ Append scaled =============== // -static inline void fp32_vector3_append_scaled(fp32_vector3_t* basic_vector, const fp32_vector3_t* scalable_vector, const float scale) +inline void vector3_fp32_append_scaled(vector3_fp32_t* basic_vector, const vector3_fp32_t* scalable_vector, const float scale) { basic_vector->x1 += scalable_vector->x1 * scale; basic_vector->x2 += scalable_vector->x2 * scale; basic_vector->x3 += scalable_vector->x3 * scale; } -static inline void fp64_vector3_append_scaled(fp64_vector3_t* basic_vector, const fp64_vector3_t* scalable_vector, const double scale) +inline void vector3_fp64_append_scaled(vector3_fp64_t* basic_vector, const vector3_fp64_t* scalable_vector, const double scale) { basic_vector->x1 += scalable_vector->x1 * scale; basic_vector->x2 += scalable_vector->x2 * scale; @@ -272,14 +312,14 @@ static inline void fp64_vector3_append_scaled(fp64_vector3_t* basic_vector, cons // ================== Average2 ================== // -static inline void fp32_vector3_get_mean2(const fp32_vector3_t* vector1, const fp32_vector3_t* vector2, fp32_vector3_t* result) +inline void vector3_fp32_get_mean2(const vector3_fp32_t* vector1, const vector3_fp32_t* vector2, vector3_fp32_t* result) { result->x1 = (vector1->x1 + vector2->x1) * 0.5f; result->x2 = (vector1->x2 + vector2->x2) * 0.5f; result->x3 = (vector1->x3 + vector2->x3) * 0.5f; } -static inline void fp64_vector3_get_mean2(const fp64_vector3_t* vector1, const fp64_vector3_t* vector2, fp64_vector3_t* result) +inline void vector3_fp64_get_mean2(const vector3_fp64_t* vector1, const vector3_fp64_t* vector2, vector3_fp64_t* result) { result->x1 = (vector1->x1 + vector2->x1) * 0.5; result->x2 = (vector1->x2 + vector2->x2) * 0.5; @@ -288,14 +328,14 @@ static inline void fp64_vector3_get_mean2(const fp64_vector3_t* vector1, const f // ================== Average3 ================== // -static inline void fp32_vector3_get_mean3(const fp32_vector3_t* vector1, const fp32_vector3_t* vector2, const fp32_vector3_t* vector3, fp32_vector3_t* result) +inline void vector3_fp32_get_mean3(const vector3_fp32_t* vector1, const vector3_fp32_t* vector2, const vector3_fp32_t* vector3, vector3_fp32_t* result) { result->x1 = (vector1->x1 + vector2->x1 + vector3->x1) * FP32_ONE_THIRD; result->x2 = (vector1->x2 + vector2->x2 + vector3->x2) * FP32_ONE_THIRD; result->x3 = (vector1->x3 + vector2->x3 + vector3->x3) * FP32_ONE_THIRD; } -static inline void fp64_vector3_get_mean3(const fp64_vector3_t* vector1, const fp64_vector3_t* vector2, const fp64_vector3_t* vector3, fp64_vector3_t* result) +inline void vector3_fp64_get_mean3(const vector3_fp64_t* vector1, const vector3_fp64_t* vector2, const vector3_fp64_t* vector3, vector3_fp64_t* result) { result->x1 = (vector1->x1 + vector2->x1 + vector3->x1) * FP64_ONE_THIRD; result->x2 = (vector1->x2 + vector2->x2 + vector3->x2) * FP64_ONE_THIRD; @@ -304,26 +344,26 @@ static inline void fp64_vector3_get_mean3(const fp64_vector3_t* vector1, const f // =============== Scalar Product =============== // -static inline float fp32_vector3_scalar_product(const fp32_vector3_t* vector1, const fp32_vector3_t* vector2) +inline float vector3_fp32_scalar_product(const vector3_fp32_t* vector1, const vector3_fp32_t* vector2) { return vector1->x1 * vector2->x1 + vector1->x2 * vector2->x2 + vector1->x3 * vector2->x3; } -static inline double fp64_vector3_scalar_product(const fp64_vector3_t* vector1, const fp64_vector3_t* vector2) +inline double vector3_fp64_scalar_product(const vector3_fp64_t* vector1, const vector3_fp64_t* vector2) { return vector1->x1 * vector2->x1 + vector1->x2 * vector2->x2 + vector1->x3 * vector2->x3; } // =============== Triple Product =============== // -static inline float fp32_vector3_triple_product(const fp32_vector3_t* vector1, const fp32_vector3_t* vector2, const fp32_vector3_t* vector3) +inline float vector3_fp32_triple_product(const vector3_fp32_t* vector1, const vector3_fp32_t* vector2, const vector3_fp32_t* vector3) { return vector1->x1 * (vector2->x2 * vector3->x3 - vector2->x3 * vector3->x2) + vector1->x2 * (vector2->x3 * vector3->x1 - vector2->x1 * vector3->x3) + vector1->x3 * (vector2->x1 * vector3->x2 - vector2->x2 * vector3->x1); } -static inline double fp64_vector3_triple_product(const fp64_vector3_t* vector1, const fp64_vector3_t* vector2, const fp64_vector3_t* vector3) +inline double vector3_fp64_triple_product(const vector3_fp64_t* vector1, const vector3_fp64_t* vector2, const vector3_fp64_t* vector3) { return vector1->x1 * (vector2->x2 * vector3->x3 - vector2->x3 * vector3->x2) + vector1->x2 * (vector2->x3 * vector3->x1 - vector2->x1 * vector3->x3) @@ -332,7 +372,7 @@ static inline double fp64_vector3_triple_product(const fp64_vector3_t* vector1, // =============== Cross Product ================ // -static inline void fp32_vector3_cross_product(const fp32_vector3_t* vector1, const fp32_vector3_t* vector2, fp32_vector3_t* result) +inline void vector3_fp32_cross_product(const vector3_fp32_t* vector1, const vector3_fp32_t* vector2, vector3_fp32_t* result) { const float x1 = vector1->x2 * vector2->x3 - vector1->x3 * vector2->x2; const float x2 = vector1->x3 * vector2->x1 - vector1->x1 * vector2->x3; @@ -343,7 +383,7 @@ static inline void fp32_vector3_cross_product(const fp32_vector3_t* vector1, con result->x3 = x3; } -static inline void fp64_vector3_cross_product(const fp64_vector3_t* vector1, const fp64_vector3_t* vector2, fp64_vector3_t* result) +inline void vector3_fp64_cross_product(const vector3_fp64_t* vector1, const vector3_fp64_t* vector2, vector3_fp64_t* result) { const double x1 = vector1->x2 * vector2->x3 - vector1->x3 * vector2->x2; const double x2 = vector1->x3 * vector2->x1 - vector1->x1 * vector2->x3; @@ -356,20 +396,20 @@ static inline void fp64_vector3_cross_product(const fp64_vector3_t* vector1, con // ============ Double Cross Product ============ // -static inline void fp32_vector3_double_cross_product(const fp32_vector3_t* vector1, const fp32_vector3_t* vector2, const fp32_vector3_t* vector3, fp32_vector3_t* result) +inline void vector3_fp32_double_cross_product(const vector3_fp32_t* vector1, const vector3_fp32_t* vector2, const vector3_fp32_t* vector3, vector3_fp32_t* result) { - const float ac = fp32_vector3_scalar_product(vector1, vector3); - const float ab = fp32_vector3_scalar_product(vector1, vector2); + const float ac = vector3_fp32_scalar_product(vector1, vector3); + const float ab = vector3_fp32_scalar_product(vector1, vector2); result->x1 = vector2->x1 * ac - vector3->x1 * ab; result->x2 = vector2->x2 * ac - vector3->x2 * ab; result->x3 = vector2->x3 * ac - vector3->x3 * ab; } -static inline void fp64_vector3_double_cross(const fp64_vector3_t* vector1, const fp64_vector3_t* vector2, const fp64_vector3_t* vector3, fp64_vector3_t* result) +inline void vector3_fp64_double_cross(const vector3_fp64_t* vector1, const vector3_fp64_t* vector2, const vector3_fp64_t* vector3, vector3_fp64_t* result) { - const double ac = fp64_vector3_scalar_product(vector1, vector3); - const double ab = fp64_vector3_scalar_product(vector1, vector2); + const double ac = vector3_fp64_scalar_product(vector1, vector3); + const double ab = vector3_fp64_scalar_product(vector1, vector2); result->x1 = vector2->x1 * ac - vector3->x1 * ab; result->x2 = vector2->x2 * ac - vector3->x2 * ab; @@ -378,63 +418,63 @@ static inline void fp64_vector3_double_cross(const fp64_vector3_t* vector1, cons // =============== Normalization ================ // -static inline int fp32_vector3_normalize(fp32_vector3_t* vector) +inline int vector3_fp32_normalize(vector3_fp32_t* vector) { - const float square_modulus = fp32_vector3_get_square_modulus(vector); + const float square_modulus = vector3_get_square_modulus_fp32(vector); if (1.0f - FP32_TWO_EPSYLON <= square_modulus && square_modulus <= 1.0f + FP32_TWO_EPSYLON) { return 1; } if (square_modulus <= FP32_SQUARE_EPSYLON) { - fp32_vector3_reset(vector); + vector3_reset_fp32(vector); return 0; } - fp32_vector3_multiply(vector, sqrtf(1.0f / square_modulus), vector); + vector3_fp32_multiply(vector, sqrtf(1.0f / square_modulus), vector); return 1; } -static inline int fp64_vector3_normalize(fp64_vector3_t* vector) +inline int vector3_fp64_normalize(vector3_fp64_t* vector) { - const double square_modulus = fp64_vector3_get_square_modulus(vector); + const double square_modulus = vector3_get_square_modulus_fp64(vector); if (1.0 - FP64_TWO_EPSYLON <= square_modulus && square_modulus <= 1.0 + FP64_TWO_EPSYLON) { return 1; } if (square_modulus <= FP64_SQUARE_EPSYLON) { - fp64_vector3_reset(vector); + vector3_reset_fp64(vector); return 0; } - fp64_vector3_multiply(vector, sqrt(1.0 / square_modulus), vector); + vector3_fp64_multiply(vector, sqrt(1.0 / square_modulus), vector); return 1; } // =============== Get Normalized =============== // -static inline int fp32_vector3_set_normalized(const fp32_vector3_t* vector, fp32_vector3_t* result) +inline int vector3_fp32_set_normalized(const vector3_fp32_t* vector, vector3_fp32_t* result) { - fp32_vector3_copy(vector, result); - return fp32_vector3_normalize(result); + vector3_copy_fp32(vector, result); + return vector3_fp32_normalize(result); } -static inline int fp64_vector3_set_normalized(const fp64_vector3_t* vector, fp64_vector3_t* result) +inline int vector3_fp64_set_normalized(const vector3_fp64_t* vector, vector3_fp64_t* result) { - fp64_vector3_copy(vector, result); - return fp64_vector3_normalize(result); + vector3_copy_fp64(vector, result); + return vector3_fp64_normalize(result); } // =================== Angle ==================== // -float fp32_vector3_get_angle(const fp32_vector3_t* vector1, const fp32_vector3_t* vector2, const angle_unit_t unit); +float vector3_fp32_get_angle(const vector3_fp32_t* vector1, const vector3_fp32_t* vector2, const angle_unit_t unit); -double fp64_vector3_get_angle(const fp64_vector3_t* vector1, const fp64_vector3_t* vector2, const angle_unit_t unit); +double vector3_fp64_get_angle(const vector3_fp64_t* vector1, const vector3_fp64_t* vector2, const angle_unit_t unit); // =============== Square Distance ============== // -static inline float fp32_vector3_get_square_distance(const fp32_vector3_t* vector1, const fp32_vector3_t* vector2) +inline float vector3_fp32_get_square_distance(const vector3_fp32_t* vector1, const vector3_fp32_t* vector2) { const float dx1 = (vector1->x1 - vector2->x1); const float dx2 = (vector1->x2 - vector2->x2); @@ -443,7 +483,7 @@ static inline float fp32_vector3_get_square_distance(const fp32_vector3_t* vecto return dx1 * dx1 + dx2 * dx2 + dx3 * dx3; } -static inline double fp64_vector3_get_square_distance(const fp64_vector3_t* vector1, const fp64_vector3_t* vector2) +inline double vector3_fp64_get_square_distance(const vector3_fp64_t* vector1, const vector3_fp64_t* vector2) { const double dx1 = (vector1->x1 - vector2->x1); const double dx2 = (vector1->x2 - vector2->x2); @@ -454,23 +494,23 @@ static inline double fp64_vector3_get_square_distance(const fp64_vector3_t* vect // ================== Distance ================== // -static inline float fp32_vector3_get_distance(const fp32_vector3_t* vector1, const fp32_vector3_t* vector2) +inline float vector3_fp32_get_distance(const vector3_fp32_t* vector1, const vector3_fp32_t* vector2) { - return sqrtf(fp32_vector3_get_square_distance(vector1, vector2)); + return sqrtf(vector3_fp32_get_square_distance(vector1, vector2)); } -static inline double fp64_vector3_get_distance(const fp64_vector3_t* vector1, const fp64_vector3_t* vector2) +inline double vector3_fp64_get_distance(const vector3_fp64_t* vector1, const vector3_fp64_t* vector2) { - return sqrt(fp64_vector3_get_square_distance(vector1, vector2)); + return sqrt(vector3_fp64_get_square_distance(vector1, vector2)); } // ================== Are Equal ================= // -static inline int fp32_vector3_are_equal(const fp32_vector3_t* vector1, const fp32_vector3_t* vector2) +inline int vector3_fp32_are_equal(const vector3_fp32_t* vector1, const vector3_fp32_t* vector2) { - const float square_modulus1 = fp32_vector3_get_square_modulus(vector1); - const float square_modulus2 = fp32_vector3_get_square_modulus(vector2); - const float square_modulus3 = fp32_vector3_get_square_distance(vector1, vector2); + const float square_modulus1 = vector3_get_square_modulus_fp32(vector1); + const float square_modulus2 = vector3_get_square_modulus_fp32(vector2); + const float square_modulus3 = vector3_fp32_get_square_distance(vector1, vector2); // 3.0f means dimension amount if (square_modulus1 < FP32_EPSYLON_EFFECTIVENESS_LIMIT || square_modulus2 < FP32_EPSYLON_EFFECTIVENESS_LIMIT) { @@ -484,11 +524,11 @@ static inline int fp32_vector3_are_equal(const fp32_vector3_t* vector1, const fp return square_modulus3 <= (3.0f * FP32_SQUARE_EPSYLON) * square_modulus1; } -static inline int fp64_vector3_are_equal(const fp64_vector3_t* vector1, const fp64_vector3_t* vector2) +inline int vector3_fp64_are_equal(const vector3_fp64_t* vector1, const vector3_fp64_t* vector2) { - const double square_modulus1 = fp64_vector3_get_square_modulus(vector1); - const double square_modulus2 = fp64_vector3_get_square_modulus(vector2); - const double square_modulus3 = fp64_vector3_get_square_distance(vector1, vector2); + const double square_modulus1 = vector3_get_square_modulus_fp64(vector1); + const double square_modulus2 = vector3_get_square_modulus_fp64(vector2); + const double square_modulus3 = vector3_fp64_get_square_distance(vector1, vector2); // 3.0 means dimension amount if (square_modulus1 < FP64_EPSYLON_EFFECTIVENESS_LIMIT || square_modulus2 < FP64_EPSYLON_EFFECTIVENESS_LIMIT) { diff --git a/basic-geometry/versor.c b/basic-geometry/versor.c index 209cc40..3b54329 100644 --- a/basic-geometry/versor.c +++ b/basic-geometry/versor.c @@ -3,18 +3,18 @@ #include "angle.h" #include "versor.h" -const fp32_versor_t FP32_IDLE_VERSOR = { 1.0f, 0.0f, 0.0f, 0.0f }; +const versor_fp32_t FP32_IDLE_VERSOR = { 1.0f, 0.0f, 0.0f, 0.0f }; -const fp64_versor_t FP64_IDLE_VERSOR = { 1.0, 0.0, 0.0, 0.0 }; +const versor_fp64_t FP64_IDLE_VERSOR = { 1.0, 0.0, 0.0, 0.0 }; // =============== Set Crude Turn =============== // -void fp32_versor_set_crude_turn(const float x1, const float x2, const float x3, const float angle, const angle_unit_t unit, fp32_versor_t* result) +void versor_fp32_set_crude_turn(const float x1, const float x2, const float x3, const float angle, const angle_unit_t unit, versor_fp32_t* result) { const float square_vector = x1 * x1 + x2 * x2 + x3 * x3; if (square_vector <= FP32_SQUARE_EPSYLON) { - fp32_versor_reset(result); + versor_reset_fp32(result); return; } @@ -23,21 +23,21 @@ void fp32_versor_set_crude_turn(const float x1, const float x2, const float x3, const float sine = sinf(half_angle); if (-FP32_EPSYLON <= sine && sine <= FP32_EPSYLON) { - fp32_versor_reset(result); + versor_reset_fp32(result); return; } const float multiplier = sine / sqrtf(square_vector); - fp32_versor_set_values(cosf(half_angle), x1 * multiplier, x2 * multiplier, x3 * multiplier, result); + versor_fp32_set_values(cosf(half_angle), x1 * multiplier, x2 * multiplier, x3 * multiplier, result); } -void fp64_versor_set_crude_turn(const double x1, const double x2, const double x3, const double angle, const angle_unit_t unit, fp64_versor_t* result) +void versor_fp64_set_crude_turn(const double x1, const double x2, const double x3, const double angle, const angle_unit_t unit, versor_fp64_t* result) { const double square_vector = x1 * x1 + x2 * x2 + x3 * x3; if (square_vector <= FP64_SQUARE_EPSYLON) { - fp64_versor_reset(result); + versor_reset_fp64(result); return; } @@ -46,18 +46,18 @@ void fp64_versor_set_crude_turn(const double x1, const double x2, const double x const double sine = sin(half_angle); if (-FP64_EPSYLON <= sine && sine <= FP64_EPSYLON) { - fp64_versor_reset(result); + versor_reset_fp64(result); return; } const double multiplier = sine / sqrt(square_vector); - fp64_versor_set_values(cos(half_angle), x1 * multiplier, x2 * multiplier, x3 * multiplier, result); + versor_fp64_set_values(cos(half_angle), x1 * multiplier, x2 * multiplier, x3 * multiplier, result); } // ================= Rotation3 ================== // -void fp32_versor_get_rotation(const fp32_versor_t* versor, fp32_rotation3_t* result) +void versor_fp32_get_rotation(const versor_fp32_t* versor, rotation3_fp32_t* result) { if (versor == 0 || result == 0) { return; @@ -79,7 +79,7 @@ void fp32_versor_get_rotation(const fp32_versor_t* versor, fp32_rotation3_t* res result->axis.x3 = versor->x3 * multiplier; } -void fp64_versor_get_rotation(const fp64_versor_t* versor, fp64_rotation3_t* result) +void versor_fp64_get_rotation(const versor_fp64_t* versor, rotation3_fp64_t* result) { if (versor == 0 || result == 0) { return; diff --git a/basic-geometry/versor.h b/basic-geometry/versor.h index 15275f1..d5de4ee 100644 --- a/basic-geometry/versor.h +++ b/basic-geometry/versor.h @@ -13,11 +13,11 @@ typedef struct { const float s0, x1, x2, x3; -} fp32_versor_t; +} versor_fp32_t; typedef struct { const double s0, x1, x2, x3; -} fp64_versor_t; +} versor_fp64_t; // ================= Dark Twins ================= // @@ -31,12 +31,12 @@ typedef struct { // ================= Constants ================== // -extern const fp32_versor_t FP32_IDLE_VERSOR; -extern const fp64_versor_t FP64_IDLE_VERSOR; +extern const versor_fp32_t FP32_IDLE_VERSOR; +extern const versor_fp64_t FP64_IDLE_VERSOR; // =================== Reset ==================== // -static inline void fp32_versor_reset(fp32_versor_t* versor) +inline void versor_reset_fp32(versor_fp32_t* versor) { __BgFP32DarkTwinVersor* twin = (__BgFP32DarkTwinVersor*)versor; @@ -46,7 +46,7 @@ static inline void fp32_versor_reset(fp32_versor_t* versor) twin->x3 = 0.0f; } -static inline void fp64_versor_reset(fp64_versor_t* versor) +inline void versor_reset_fp64(versor_fp64_t* versor) { __BgFP64DarkTwinVersor* twin = (__BgFP64DarkTwinVersor*)versor; @@ -58,7 +58,7 @@ static inline void fp64_versor_reset(fp64_versor_t* versor) // ==================== Set ===================== // -static inline void fp32_versor_set_values(const float s0, const float x1, const float x2, const float x3, fp32_versor_t* versor) +inline void versor_fp32_set_values(const float s0, const float x1, const float x2, const float x3, versor_fp32_t* versor) { __BgFP32DarkTwinVersor* twin = (__BgFP32DarkTwinVersor*)versor; @@ -89,7 +89,7 @@ static inline void fp32_versor_set_values(const float s0, const float x1, const twin->x3 *= multiplier; } -static inline void fp64_versor_set_values(const double s0, const double x1, const double x2, const double x3, fp64_versor_t* versor) +inline void versor_fp64_set_values(const double s0, const double x1, const double x2, const double x3, versor_fp64_t* versor) { __BgFP64DarkTwinVersor* twin = (__BgFP64DarkTwinVersor*)versor; @@ -122,7 +122,7 @@ static inline void fp64_versor_set_values(const double s0, const double x1, cons // ==================== Copy ==================== // -static inline void fp32_versor_copy(const fp32_versor_t* from, fp32_versor_t* to) +inline void versor_copy_fp32(const versor_fp32_t* from, versor_fp32_t* to) { __BgFP32DarkTwinVersor* twin = (__BgFP32DarkTwinVersor*)to; @@ -132,7 +132,7 @@ static inline void fp32_versor_copy(const fp32_versor_t* from, fp32_versor_t* to twin->x3 = from->x3; } -static inline void fp64_versor_copy(const fp64_versor_t* from, fp64_versor_t* to) +inline void versor_copy_fp64(const versor_fp64_t* from, versor_fp64_t* to) { __BgFP64DarkTwinVersor* twin = (__BgFP64DarkTwinVersor*)to; @@ -144,7 +144,7 @@ static inline void fp64_versor_copy(const fp64_versor_t* from, fp64_versor_t* to // ==================== Swap ==================== // -static inline void fp32_versor_swap(fp32_versor_t* versor1, fp32_versor_t* versor2) +inline void versor_swap_fp32(versor_fp32_t* versor1, versor_fp32_t* versor2) { const float s0 = versor1->s0; const float x1 = versor1->x1; @@ -166,7 +166,7 @@ static inline void fp32_versor_swap(fp32_versor_t* versor1, fp32_versor_t* verso twin2->x3 = x3; } -static inline void fp64_versor_swap(fp64_versor_t* versor1, fp64_versor_t* versor2) +inline void versor_swap_fp64(versor_fp64_t* versor1, versor_fp64_t* versor2) { const double s0 = versor1->s0; const double x1 = versor1->x1; @@ -190,51 +190,51 @@ static inline void fp64_versor_swap(fp64_versor_t* versor1, fp64_versor_t* verso // =============== Set Crude Turn =============== // -void fp32_versor_set_crude_turn(const float x1, const float x2, const float x3, const float angle, const angle_unit_t unit, fp32_versor_t* result); +void versor_fp32_set_crude_turn(const float x1, const float x2, const float x3, const float angle, const angle_unit_t unit, versor_fp32_t* result); -void fp64_versor_set_crude_turn(const double x1, const double x2, const double x3, const double angle, const angle_unit_t unit, fp64_versor_t* result); +void versor_fp64_set_crude_turn(const double x1, const double x2, const double x3, const double angle, const angle_unit_t unit, versor_fp64_t* result); // ================== Set Turn ================== // -static inline void fp32_versor_set_turn(const fp32_vector3_t* axis, const float angle, const angle_unit_t unit, fp32_versor_t* result) +inline void versor_fp32_set_turn(const vector3_fp32_t* axis, const float angle, const angle_unit_t unit, versor_fp32_t* result) { - fp32_versor_set_crude_turn(axis->x1, axis->x2, axis->x3, angle, unit, result); + versor_fp32_set_crude_turn(axis->x1, axis->x2, axis->x3, angle, unit, result); } -static inline void fp64_versor_set_turn(const fp32_vector3_t* axis, const double angle, const angle_unit_t unit, fp64_versor_t* result) +inline void versor_fp64_set_turn(const vector3_fp32_t* axis, const double angle, const angle_unit_t unit, versor_fp64_t* result) { - fp64_versor_set_crude_turn(axis->x1, axis->x2, axis->x3, angle, unit, result); + versor_fp64_set_crude_turn(axis->x1, axis->x2, axis->x3, angle, unit, result); } // ================ Set Rotation ================ // -static inline void fp32_versor_set_rotation(const fp32_rotation3_t* rotation, fp32_versor_t* result) +inline void versor_fp32_set_rotation(const rotation3_fp32_t* rotation, versor_fp32_t* result) { - fp32_versor_set_crude_turn(rotation->axis.x1, rotation->axis.x2, rotation->axis.x3, rotation->radians, BG_ANGLE_UNIT_RADIANS, result); + versor_fp32_set_crude_turn(rotation->axis.x1, rotation->axis.x2, rotation->axis.x3, rotation->radians, BG_ANGLE_UNIT_RADIANS, result); } -static inline void fp64_versor_set_rotation(const fp64_rotation3_t* rotation, fp64_versor_t* result) +inline void versor_fp64_set_rotation(const rotation3_fp64_t* rotation, versor_fp64_t* result) { - fp64_versor_set_crude_turn(rotation->axis.x1, rotation->axis.x2, rotation->axis.x3, rotation->radians, BG_ANGLE_UNIT_RADIANS, result); + versor_fp64_set_crude_turn(rotation->axis.x1, rotation->axis.x2, rotation->axis.x3, rotation->radians, BG_ANGLE_UNIT_RADIANS, result); } // ================= Comparison ================= // -static inline int fp32_versor_is_idle(const fp32_versor_t* versor) +inline int versor_fp32_is_idle(const versor_fp32_t* versor) { return 1.0f - FP32_EPSYLON <= versor->s0 || versor->s0 <= -(1.0 - FP32_EPSYLON); } -static inline int fp64_versor_is_idle(const fp64_versor_t* versor) +inline int versor_fp64_is_idle(const versor_fp64_t* versor) { return 1.0 - FP64_EPSYLON <= versor->s0 || versor->s0 <= -(1.0 - FP64_EPSYLON); } // ============= Copy to twin type ============== // -static inline void fp32_versor_set_from_fp64(const fp64_versor_t* versor, fp32_versor_t* result) +inline void versor_fp32_set_from_fp64(const versor_fp64_t* versor, versor_fp32_t* result) { - fp32_versor_set_values( + versor_fp32_set_values( (float) versor->s0, (float) versor->x1, (float) versor->x2, @@ -243,9 +243,9 @@ static inline void fp32_versor_set_from_fp64(const fp64_versor_t* versor, fp32_v ); } -static inline void fp64_versor_set_from_fp32(const fp32_versor_t* versor, fp64_versor_t* result) +inline void versor_fp64_set_from_fp32(const versor_fp32_t* versor, versor_fp64_t* result) { - fp64_versor_set_values( + versor_fp64_set_values( versor->s0, versor->x1, versor->x2, @@ -256,7 +256,7 @@ static inline void fp64_versor_set_from_fp32(const fp32_versor_t* versor, fp64_v // ================== Shorten =================== // -static inline void fp32_versor_shorten(fp32_versor_t* versor) +inline void versor_fp32_shorten(versor_fp32_t* versor) { if (versor->s0 >= 0.0f) { return; @@ -269,7 +269,7 @@ static inline void fp32_versor_shorten(fp32_versor_t* versor) twin->x3 = -versor->x3; } -static inline void fp64_versor_shorten(fp64_versor_t* versor) +inline void versor_fp64_shorten(versor_fp64_t* versor) { if (versor->s0 >= 0.0f) { return; @@ -284,7 +284,7 @@ static inline void fp64_versor_shorten(fp64_versor_t* versor) // ================== Shorten =================== // -static inline void fp32_versor_set_shortened(const fp32_versor_t* versor, fp32_versor_t* shortened) +inline void versor_fp32_set_shortened(const versor_fp32_t* versor, versor_fp32_t* shortened) { __BgFP32DarkTwinVersor* twin = (__BgFP32DarkTwinVersor*)shortened; @@ -302,7 +302,7 @@ static inline void fp32_versor_set_shortened(const fp32_versor_t* versor, fp32_v twin->x3 = -versor->x3; } -static inline void fp64_versor_set_shortened(const fp64_versor_t* versor, fp64_versor_t* shortened) +inline void versor_fp64_set_shortened(const versor_fp64_t* versor, versor_fp64_t* shortened) { __BgFP64DarkTwinVersor* twin = (__BgFP64DarkTwinVersor*)shortened; @@ -322,7 +322,7 @@ static inline void fp64_versor_set_shortened(const fp64_versor_t* versor, fp64_v // ================= Inversion ================== // -static inline void fp32_versor_invert(fp32_versor_t* versor) +inline void versor_invert_fp32(versor_fp32_t* versor) { __BgFP32DarkTwinVersor* twin = (__BgFP32DarkTwinVersor*)versor; twin->x1 = -versor->x1; @@ -330,7 +330,7 @@ static inline void fp32_versor_invert(fp32_versor_t* versor) twin->x3 = -versor->x3; } -static inline void fp64_versor_invert(fp64_versor_t* versor) +inline void versor_invert_fp64(versor_fp64_t* versor) { __BgFP64DarkTwinVersor* twin = (__BgFP64DarkTwinVersor*)versor; twin->x1 = -versor->x1; @@ -340,7 +340,7 @@ static inline void fp64_versor_invert(fp64_versor_t* versor) // ================ Set Inverted ================ // -static inline void fp32_versor_set_inverted(const fp32_versor_t* versor, fp32_versor_t* to) +inline void versor_fp32_set_inverted(const versor_fp32_t* versor, versor_fp32_t* to) { __BgFP32DarkTwinVersor* twin = (__BgFP32DarkTwinVersor*)to; twin->s0 = versor->s0; @@ -349,7 +349,7 @@ static inline void fp32_versor_set_inverted(const fp32_versor_t* versor, fp32_ve twin->x3 = -versor->x3; } -static inline void fp64_versor_set_inverted(const fp64_versor_t* versor, fp64_versor_t* to) +inline void versor_fp64_set_inverted(const versor_fp64_t* versor, versor_fp64_t* to) { __BgFP64DarkTwinVersor* twin = (__BgFP64DarkTwinVersor*)to; twin->s0 = versor->s0; @@ -360,9 +360,9 @@ static inline void fp64_versor_set_inverted(const fp64_versor_t* versor, fp64_ve // ================ Set Inverted ================ // -static inline void fp32_versor_set_inverted_fp64(const fp64_versor_t* versor, fp32_versor_t* to) +inline void versor_fp32_set_inverted_fp64(const versor_fp64_t* versor, versor_fp32_t* to) { - fp32_versor_set_values( + versor_fp32_set_values( (float) versor->s0, (float) -versor->x1, (float) -versor->x2, @@ -371,9 +371,9 @@ static inline void fp32_versor_set_inverted_fp64(const fp64_versor_t* versor, fp ); } -static inline void fp64_versor_set_inverted_fp32(const fp32_versor_t* versor, fp64_versor_t* to) +inline void versor_fp64_set_inverted_fp32(const versor_fp32_t* versor, versor_fp64_t* to) { - fp64_versor_set_values( + versor_fp64_set_values( versor->s0, -versor->x1, -versor->x2, @@ -384,7 +384,7 @@ static inline void fp64_versor_set_inverted_fp32(const fp32_versor_t* versor, fp // ================ Combination ================= // -static inline void fp32_versor_combine(const fp32_versor_t* second, const fp32_versor_t* first, fp32_versor_t* result) +inline void versor_fp32_combine(const versor_fp32_t* second, const versor_fp32_t* first, versor_fp32_t* result) { const float s0 = (second->s0 * first->s0 - second->x1 * first->x1) - (second->x2 * first->x2 + second->x3 * first->x3); const float x1 = (second->x1 * first->s0 + second->s0 * first->x1) - (second->x3 * first->x2 - second->x2 * first->x3); @@ -412,7 +412,7 @@ static inline void fp32_versor_combine(const fp32_versor_t* second, const fp32_v twin->x3 *= multiplier; } -static inline void fp64_versor_combine(const fp64_versor_t* second, const fp64_versor_t* first, fp64_versor_t* result) +inline void versor_fp64_combine(const versor_fp64_t* second, const versor_fp64_t* first, versor_fp64_t* result) { const double s0 = (second->s0 * first->s0 - second->x1 * first->x1) - (second->x2 * first->x2 + second->x3 * first->x3); const double x1 = (second->x1 * first->s0 + second->s0 * first->x1) - (second->x3 * first->x2 - second->x2 * first->x3); @@ -442,7 +442,7 @@ static inline void fp64_versor_combine(const fp64_versor_t* second, const fp64_v // ============ Combination of three ============ // -static inline void fp32_versor_combine3(const fp32_versor_t* third, const fp32_versor_t* second, const fp32_versor_t* first, fp32_versor_t* result) +inline void versor_fp32_combine3(const versor_fp32_t* third, const versor_fp32_t* second, const versor_fp32_t* first, versor_fp32_t* result) { const float s0a = (second->s0 * first->s0 - second->x1 * first->x1) - (second->x2 * first->x2 + second->x3 * first->x3); const float x1a = (second->x1 * first->s0 + second->s0 * first->x1) - (second->x3 * first->x2 - second->x2 * first->x3); @@ -475,7 +475,7 @@ static inline void fp32_versor_combine3(const fp32_versor_t* third, const fp32_v twin->x3 *= multiplier; } -static inline void fp64_versor_combine3(const fp64_versor_t* third, const fp64_versor_t* second, const fp64_versor_t* first, fp64_versor_t* result) +inline void versor_fp64_combine3(const versor_fp64_t* third, const versor_fp64_t* second, const versor_fp64_t* first, versor_fp64_t* result) { const double s0a = (second->s0 * first->s0 - second->x1 * first->x1) - (second->x2 * first->x2 + second->x3 * first->x3); const double x1a = (second->x1 * first->s0 + second->s0 * first->x1) - (second->x3 * first->x2 - second->x2 * first->x3); @@ -510,7 +510,7 @@ static inline void fp64_versor_combine3(const fp64_versor_t* third, const fp64_v // ================= Exclusion ================== // -static inline void fp32_versor_exclude(const fp32_versor_t* basic, const fp32_versor_t* exclusion, fp32_versor_t* result) +inline void versor_fp32_exclude(const versor_fp32_t* basic, const versor_fp32_t* exclusion, versor_fp32_t* result) { const float s0 = (basic->s0 * exclusion->s0 + basic->x1 * exclusion->x1) + (basic->x2 * exclusion->x2 + basic->x3 * exclusion->x3); const float x1 = (basic->x1 * exclusion->s0 - basic->s0 * exclusion->x1) + (basic->x3 * exclusion->x2 - basic->x2 * exclusion->x3); @@ -538,7 +538,7 @@ static inline void fp32_versor_exclude(const fp32_versor_t* basic, const fp32_ve twin->x3 *= multiplier; } -static inline void fp64_versor_exclude(const fp64_versor_t* basic, const fp64_versor_t* exclusion, fp64_versor_t* result) +inline void versor_fp64_exclude(const versor_fp64_t* basic, const versor_fp64_t* exclusion, versor_fp64_t* result) { const double s0 = (basic->s0 * exclusion->s0 + basic->x1 * exclusion->x1) + (basic->x2 * exclusion->x2 + basic->x3 * exclusion->x3); const double x1 = (basic->x1 * exclusion->s0 - basic->s0 * exclusion->x1) + (basic->x3 * exclusion->x2 - basic->x2 * exclusion->x3); @@ -568,13 +568,13 @@ static inline void fp64_versor_exclude(const fp64_versor_t* basic, const fp64_ve // ================= Rotation3 ================== // -void fp32_versor_get_rotation(const fp32_versor_t* versor, fp32_rotation3_t* result); +void versor_fp32_get_rotation(const versor_fp32_t* versor, rotation3_fp32_t* result); -void fp64_versor_get_rotation(const fp64_versor_t* versor, fp64_rotation3_t* result); +void versor_fp64_get_rotation(const versor_fp64_t* versor, rotation3_fp64_t* result); // =========== Make Rotation Matrix3x3 ========== // -static inline void fp32_versor_make_rotation_matrix(const fp32_versor_t* versor, fp32_matrix3x3_t* matrix) +inline void versor_fp32_make_rotation_matrix(const versor_fp32_t* versor, matrix3x3_fp32_t* matrix) { const float s0s0 = versor->s0 * versor->s0; const float x1x1 = versor->x1 * versor->x1; @@ -602,7 +602,7 @@ static inline void fp32_versor_make_rotation_matrix(const fp32_versor_t* versor, matrix->r1c3 = x1x3 + s0x2; } -static inline void fp64_versor_make_rotation_matrix(const fp64_versor_t* versor, fp64_matrix3x3_t* matrix) +inline void versor_fp64_make_rotation_matrix(const versor_fp64_t* versor, matrix3x3_fp64_t* matrix) { const double s0s0 = versor->s0 * versor->s0; const double x1x1 = versor->x1 * versor->x1; @@ -632,7 +632,7 @@ static inline void fp64_versor_make_rotation_matrix(const fp64_versor_t* versor, // =========== Make Reverse Matrix3x3 =========== // -static inline void fp32_versor_make_reverse_matrix(const fp32_versor_t* versor, fp32_matrix3x3_t* matrix) +inline void versor_fp32_make_reverse_matrix(const versor_fp32_t* versor, matrix3x3_fp32_t* matrix) { const float s0s0 = versor->s0 * versor->s0; const float x1x1 = versor->x1 * versor->x1; @@ -660,7 +660,7 @@ static inline void fp32_versor_make_reverse_matrix(const fp32_versor_t* versor, matrix->r1c3 = x1x3 - s0x2; } -static inline void fp64_versor_make_reverse_matrix(const fp64_versor_t* versor, fp64_matrix3x3_t* matrix) +inline void versor_fp64_make_reverse_matrix(const versor_fp64_t* versor, matrix3x3_fp64_t* matrix) { const double s0s0 = versor->s0 * versor->s0; const double x1x1 = versor->x1 * versor->x1; @@ -690,7 +690,7 @@ static inline void fp64_versor_make_reverse_matrix(const fp64_versor_t* versor, // ================ Turn Vector ================= // -static inline void fp32_versor_turn(const fp32_versor_t* versor, const fp32_vector3_t* vector, fp32_vector3_t* result) +inline void versor_fp32_turn(const versor_fp32_t* versor, const vector3_fp32_t* vector, vector3_fp32_t* result) { const float tx1 = 2.0f * (versor->x2 * vector->x3 - versor->x3 * vector->x2); const float tx2 = 2.0f * (versor->x3 * vector->x1 - versor->x1 * vector->x3); @@ -705,7 +705,7 @@ static inline void fp32_versor_turn(const fp32_versor_t* versor, const fp32_vect result->x3 = x3; } -static inline void fp64_versor_turn(const fp64_versor_t* versor, const fp64_vector3_t* vector, fp64_vector3_t* result) +inline void versor_fp64_turn(const versor_fp64_t* versor, const vector3_fp64_t* vector, vector3_fp64_t* result) { const double tx1 = 2.0 * (versor->x2 * vector->x3 - versor->x3 * vector->x2); const double tx2 = 2.0 * (versor->x3 * vector->x1 - versor->x1 * vector->x3); @@ -722,7 +722,7 @@ static inline void fp64_versor_turn(const fp64_versor_t* versor, const fp64_vect // ============== Turn Vector Back ============== // -static inline void fp32_versor_turn_back(const fp32_versor_t* versor, const fp32_vector3_t* vector, fp32_vector3_t* result) +inline void versor_fp32_turn_back(const versor_fp32_t* versor, const vector3_fp32_t* vector, vector3_fp32_t* result) { const float tx1 = 2.0f * (versor->x2 * vector->x3 - versor->x3 * vector->x2); const float tx2 = 2.0f * (versor->x3 * vector->x1 - versor->x1 * vector->x3); @@ -737,7 +737,7 @@ static inline void fp32_versor_turn_back(const fp32_versor_t* versor, const fp32 result->x3 = x3; } -static inline void fp64_versor_turn_back(const fp64_versor_t* versor, const fp64_vector3_t* vector, fp64_vector3_t* result) +inline void versor_fp64_turn_back(const versor_fp64_t* versor, const vector3_fp64_t* vector, vector3_fp64_t* result) { const double tx1 = 2.0 * (versor->x2 * vector->x3 - versor->x3 * vector->x2); const double tx2 = 2.0 * (versor->x3 * vector->x1 - versor->x1 * vector->x3);