From 67f66e2127a9741b76ab0fc2b2870af0037ad913 Mon Sep 17 00:00:00 2001 From: Andrey Pokidov Date: Fri, 15 Nov 2024 19:22:54 +0700 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=B8=D0=B7=D0=B1=D1=8B=D1=82=D0=BE=D1=87=D0=BD=D1=8B?= =?UTF-8?q?=D1=85=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B9=20=D0=B8=20?= =?UTF-8?q?=D0=BD=D0=B5=D0=B1=D0=BE=D0=BB=D1=8C=D1=88=D0=B8=D0=B5=20=D0=B8?= =?UTF-8?q?=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?/=20Removing=20of=20extra=20methods=20and=20small=20fixes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/matrix2x2.h | 184 ++++++++------------------------ src/matrix3x3.h | 272 +++++++++++++----------------------------------- src/vector2.c | 8 -- src/vector2.h | 142 +++++-------------------- src/vector3.c | 10 -- src/vector3.h | 162 ++++++---------------------- 6 files changed, 176 insertions(+), 602 deletions(-) diff --git a/src/matrix2x2.h b/src/matrix2x2.h index eafea4e..3dc8e7c 100644 --- a/src/matrix2x2.h +++ b/src/matrix2x2.h @@ -365,102 +365,6 @@ static inline void dp_matrix2x2_add(const DPMatrix2x2* matrix1, const DPMatrix2x sum->r2c2 = matrix1->r2c2 + matrix2->r2c2; } -// ==================== Add3 ==================== // - -static inline void sp_matrix2x2_add3( - const SPMatrix2x2* matrix1, - const SPMatrix2x2* matrix2, - const SPMatrix2x2* matrix3, - SPMatrix2x2* sum -) -{ - sum->r1c1 = matrix1->r1c1 + matrix2->r1c1 + matrix3->r1c1; - sum->r1c2 = matrix1->r1c2 + matrix2->r1c2 + matrix3->r1c2; - - sum->r2c1 = matrix1->r2c1 + matrix2->r2c1 + matrix3->r2c1; - sum->r2c2 = matrix1->r2c2 + matrix2->r2c2 + matrix3->r2c2; -} - -static inline void dp_matrix2x2_add3( - const DPMatrix2x2* matrix1, - const DPMatrix2x2* matrix2, - const DPMatrix2x2* matrix3, - DPMatrix2x2* sum -) -{ - sum->r1c1 = matrix1->r1c1 + matrix2->r1c1 + matrix3->r1c1; - sum->r1c2 = matrix1->r1c2 + matrix2->r1c2 + matrix3->r1c2; - - sum->r2c1 = matrix1->r2c1 + matrix2->r2c1 + matrix3->r2c1; - sum->r2c2 = matrix1->r2c2 + matrix2->r2c2 + matrix3->r2c2; -} - -// ==================== Add4 ==================== // - -static inline void sp_matrix2x2_add4( - const SPMatrix2x2* matrix1, - const SPMatrix2x2* matrix2, - const SPMatrix2x2* matrix3, - const SPMatrix2x2* matrix4, - SPMatrix2x2* sum -) -{ - sum->r1c1 = (matrix1->r1c1 + matrix2->r1c1) + (matrix3->r1c1 + matrix4->r1c1); - sum->r1c2 = (matrix1->r1c2 + matrix2->r1c2) + (matrix3->r1c2 + matrix4->r1c2); - - sum->r2c1 = (matrix1->r2c1 + matrix2->r2c1) + (matrix3->r2c1 + matrix4->r2c1); - sum->r2c2 = (matrix1->r2c2 + matrix2->r2c2) + (matrix3->r2c2 + matrix4->r2c2); -} - -static inline void dp_matrix2x2_add4( - const DPMatrix2x2* matrix1, - const DPMatrix2x2* matrix2, - const DPMatrix2x2* matrix3, - const DPMatrix2x2* matrix4, - DPMatrix2x2* sum -) -{ - sum->r1c1 = (matrix1->r1c1 + matrix2->r1c1) + (matrix3->r1c1 + matrix4->r1c1); - sum->r1c2 = (matrix1->r1c2 + matrix2->r1c2) + (matrix3->r1c2 + matrix4->r1c2); - - sum->r2c1 = (matrix1->r2c1 + matrix2->r2c1) + (matrix3->r2c1 + matrix4->r2c1); - sum->r2c2 = (matrix1->r2c2 + matrix2->r2c2) + (matrix3->r2c2 + matrix4->r2c2); -} - -// ==================== Add5 ==================== // - -static inline void sp_matrix2x2_add5( - const SPMatrix2x2* matrix1, - const SPMatrix2x2* matrix2, - const SPMatrix2x2* matrix3, - const SPMatrix2x2* matrix4, - const SPMatrix2x2* matrix5, - SPMatrix2x2* sum -) -{ - sum->r1c1 = (matrix1->r1c1 + matrix2->r1c1) + (matrix3->r1c1 + matrix4->r1c1) + matrix5->r1c1; - sum->r1c2 = (matrix1->r1c2 + matrix2->r1c2) + (matrix3->r1c2 + matrix4->r1c2) + matrix5->r1c2; - - sum->r2c1 = (matrix1->r2c1 + matrix2->r2c1) + (matrix3->r2c1 + matrix4->r2c1) + matrix5->r2c1; - sum->r2c2 = (matrix1->r2c2 + matrix2->r2c2) + (matrix3->r2c2 + matrix4->r2c2) + matrix5->r2c2; -} - -static inline void dp_matrix2x2_add5( - const DPMatrix2x2* matrix1, - const DPMatrix2x2* matrix2, - const DPMatrix2x2* matrix3, - const DPMatrix2x2* matrix4, - const DPMatrix2x2* matrix5, - DPMatrix2x2* sum -) -{ - sum->r1c1 = (matrix1->r1c1 + matrix2->r1c1) + (matrix3->r1c1 + matrix4->r1c1) + matrix5->r1c1; - sum->r1c2 = (matrix1->r1c2 + matrix2->r1c2) + (matrix3->r1c2 + matrix4->r1c2) + matrix5->r1c2; - - sum->r2c1 = (matrix1->r2c1 + matrix2->r2c1) + (matrix3->r2c1 + matrix4->r2c1) + matrix5->r2c1; - sum->r2c2 = (matrix1->r2c2 + matrix2->r2c2) + (matrix3->r2c2 + matrix4->r2c2) + matrix5->r2c2; -} - // ================ Subtraction ================= // static inline void sp_matrix2x2_subtract(const SPMatrix2x2* minuend, const SPMatrix2x2* subtrahend, SPMatrix2x2* difference) @@ -481,6 +385,46 @@ static inline void dp_matrix2x2_subtract(const DPMatrix2x2* minuend, const DPMat difference->r2c2 = minuend->r2c2 - subtrahend->r2c2; } +// =============== Multiplication =============== // + +static inline void sp_matrix2x2_multiply(const SPMatrix2x2* multiplicand, const float multiplier, SPMatrix2x2* product) +{ + product->r1c1 = multiplicand->r1c1 * multiplier; + product->r1c2 = multiplicand->r1c2 * multiplier; + + product->r2c1 = multiplicand->r2c1 * multiplier; + product->r2c2 = multiplicand->r2c2 * multiplier; +} + +static inline void dp_matrix2x2_multiply(const DPMatrix2x2* multiplicand, const double multiplier, DPMatrix2x2* product) +{ + product->r1c1 = multiplicand->r1c1 * multiplier; + product->r1c2 = multiplicand->r1c2 * multiplier; + + product->r2c1 = multiplicand->r2c1 * multiplier; + product->r2c2 = multiplicand->r2c2 * multiplier; +} + +// ================== Division ================== // + +static inline void sp_matrix2x2_divide(const SPMatrix2x2* dividend, const float divisor, SPMatrix2x2* quotient) +{ + quotient->r1c1 = dividend->r1c1 / divisor; + quotient->r1c2 = dividend->r1c2 / divisor; + + quotient->r2c1 = dividend->r2c1 / divisor; + quotient->r2c2 = dividend->r2c2 / divisor; +} + +static inline void dp_matrix2x2_divide(const DPMatrix2x2* dividend, const double divisor, DPMatrix2x2* quotient) +{ + quotient->r1c1 = dividend->r1c1 / divisor; + quotient->r1c2 = dividend->r1c2 / divisor; + + quotient->r2c1 = dividend->r2c1 / divisor; + quotient->r2c2 = dividend->r2c2 / divisor; +} + // ============= Weighed Sum of two ============= // static inline void sp_matrix2x2_get_weighted_sum2( @@ -605,51 +549,11 @@ static inline void dp_matrix2x2_get_weighted_sum5( sum->r2c2 = (matrix1->r2c2 * weight1 + matrix2->r2c2 * weight2) + (matrix3->r2c2 * weight3 + matrix4->r2c2 * weight4) + matrix5->r2c2 * weight5; } -// =============== Multiplication =============== // - -static inline void sp_matrix2x2_multiply(const SPMatrix2x2* multiplicand, const float multiplier, SPMatrix2x2* product) -{ - product->r1c1 = multiplicand->r1c1 * multiplier; - product->r1c2 = multiplicand->r1c2 * multiplier; - - product->r2c1 = multiplicand->r2c1 * multiplier; - product->r2c2 = multiplicand->r2c2 * multiplier; -} - -static inline void dp_matrix2x2_multiply(const DPMatrix2x2* multiplicand, const double multiplier, DPMatrix2x2* product) -{ - product->r1c1 = multiplicand->r1c1 * multiplier; - product->r1c2 = multiplicand->r1c2 * multiplier; - - product->r2c1 = multiplicand->r2c1 * multiplier; - product->r2c2 = multiplicand->r2c2 * multiplier; -} - -// ================== Division ================== // - -static inline void sp_matrix2x2_divide(const SPMatrix2x2* dividend, const float divisor, SPMatrix2x2* quotient) -{ - quotient->r1c1 = dividend->r1c1 / divisor; - quotient->r1c2 = dividend->r1c2 / divisor; - - quotient->r2c1 = dividend->r2c1 / divisor; - quotient->r2c2 = dividend->r2c2 / divisor; -} - -static inline void dp_matrix2x2_divide(const DPMatrix2x2* dividend, const double divisor, DPMatrix2x2* quotient) -{ - quotient->r1c1 = dividend->r1c1 / divisor; - quotient->r1c2 = dividend->r1c2 / divisor; - - quotient->r2c1 = dividend->r2c1 / divisor; - quotient->r2c2 = dividend->r2c2 / divisor; -} - // ============ Left Vector Product ============= // static inline void sp_matrix2x2_left_product(const SPVector2* vector, const SPMatrix2x2* matrix, SPVector2* result) { - sp_vector2_set( + sp_vector2_set_values( vector->x1 * matrix->r1c1 + vector->x2 * matrix->r2c1, vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2, result @@ -658,7 +562,7 @@ static inline void sp_matrix2x2_left_product(const SPVector2* vector, const SPMa static inline void dp_matrix2x2_left_product(const DPVector2* vector, const DPMatrix2x2* matrix, DPVector2* result) { - dp_vector2_set( + dp_vector2_set_values( vector->x1 * matrix->r1c1 + vector->x2 * matrix->r2c1, vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2, result @@ -669,7 +573,7 @@ static inline void dp_matrix2x2_left_product(const DPVector2* vector, const DPMa static inline void sp_matrix2x2_right_product(const SPMatrix2x2* matrix, const SPVector2* vector, SPVector2* result) { - sp_vector2_set( + sp_vector2_set_values( matrix->r1c1 * vector->x1 + matrix->r1c2 * vector->x2, matrix->r2c1 * vector->x1 + matrix->r2c2 * vector->x2, result @@ -678,7 +582,7 @@ static inline void sp_matrix2x2_right_product(const SPMatrix2x2* matrix, const S static inline void dp_matrix2x2_right_product(const DPMatrix2x2* matrix, const DPVector2* vector, DPVector2* result) { - dp_vector2_set( + dp_vector2_set_values( matrix->r1c1 * vector->x1 + matrix->r1c2 * vector->x2, matrix->r2c1 * vector->x1 + matrix->r2c2 * vector->x2, result diff --git a/src/matrix3x3.h b/src/matrix3x3.h index 2e1ea9d..5830757 100644 --- a/src/matrix3x3.h +++ b/src/matrix3x3.h @@ -236,9 +236,9 @@ static inline void dp_matrix3x3_transpose(DPMatrix3x3* matrix) // ================ Make Inverted =============== // -int sp_matrix3x3_make_inverted(const SPMatrix3x3* matrix, SPMatrix3x3* result); +int sp_matrix3x3_set_inverted(const SPMatrix3x3* matrix, SPMatrix3x3* result); -int dp_matrix3x3_make_inverted(const DPMatrix3x3* matrix, DPMatrix3x3* result); +int dp_matrix3x3_set_inverted(const DPMatrix3x3* matrix, DPMatrix3x3* result); // =============== Make Transposed ============== // @@ -426,138 +426,6 @@ static inline void dp_matrix3x3_add(const DPMatrix3x3* matrix1, const DPMatrix3x sum->r3c3 = matrix1->r3c3 + matrix2->r3c3; } -// ==================== Add3 ==================== // - -static inline void sp_matrix3x3_add3( - const SPMatrix3x3* matrix1, - const SPMatrix3x3* matrix2, - const SPMatrix3x3* matrix3, - SPMatrix3x3* sum -) -{ - sum->r1c1 = matrix1->r1c1 + matrix2->r1c1 + matrix3->r1c1; - sum->r1c2 = matrix1->r1c2 + matrix2->r1c2 + matrix3->r1c2; - sum->r1c3 = matrix1->r1c3 + matrix2->r1c3 + matrix3->r1c3; - - sum->r2c1 = matrix1->r2c1 + matrix2->r2c1 + matrix3->r2c1; - sum->r2c2 = matrix1->r2c2 + matrix2->r2c2 + matrix3->r2c2; - sum->r2c3 = matrix1->r2c3 + matrix2->r2c3 + matrix3->r2c3; - - sum->r3c1 = matrix1->r3c1 + matrix2->r3c1 + matrix3->r3c1; - sum->r3c2 = matrix1->r3c2 + matrix2->r3c2 + matrix3->r3c2; - sum->r3c3 = matrix1->r3c3 + matrix2->r3c3 + matrix3->r3c3; -} - -static inline void dp_matrix3x3_add3( - const DPMatrix3x3* matrix1, - const DPMatrix3x3* matrix2, - const DPMatrix3x3* matrix3, - DPMatrix3x3* sum -) -{ - sum->r1c1 = matrix1->r1c1 + matrix2->r1c1 + matrix3->r1c1; - sum->r1c2 = matrix1->r1c2 + matrix2->r1c2 + matrix3->r1c2; - sum->r1c3 = matrix1->r1c3 + matrix2->r1c3 + matrix3->r1c3; - - sum->r2c1 = matrix1->r2c1 + matrix2->r2c1 + matrix3->r2c1; - sum->r2c2 = matrix1->r2c2 + matrix2->r2c2 + matrix3->r2c2; - sum->r2c3 = matrix1->r2c3 + matrix2->r2c3 + matrix3->r2c3; - - sum->r3c1 = matrix1->r3c1 + matrix2->r3c1 + matrix3->r3c1; - sum->r3c2 = matrix1->r3c2 + matrix2->r3c2 + matrix3->r3c2; - sum->r3c3 = matrix1->r3c3 + matrix2->r3c3 + matrix3->r3c3; -} - -// ==================== Add4 ==================== // - -static inline void sp_matrix3x3_add4( - const SPMatrix3x3* matrix1, - const SPMatrix3x3* matrix2, - const SPMatrix3x3* matrix3, - const SPMatrix3x3* matrix4, - SPMatrix3x3* sum -) -{ - sum->r1c1 = (matrix1->r1c1 + matrix2->r1c1) + (matrix3->r1c1 + matrix4->r1c1); - sum->r1c2 = (matrix1->r1c2 + matrix2->r1c2) + (matrix3->r1c2 + matrix4->r1c2); - sum->r1c2 = (matrix1->r1c3 + matrix2->r1c3) + (matrix3->r1c3 + matrix4->r1c3); - - sum->r2c1 = (matrix1->r2c1 + matrix2->r2c1) + (matrix3->r2c1 + matrix4->r2c1); - sum->r2c2 = (matrix1->r2c2 + matrix2->r2c2) + (matrix3->r2c2 + matrix4->r2c2); - sum->r2c3 = (matrix1->r2c3 + matrix2->r2c3) + (matrix3->r2c3 + matrix4->r2c3); - - sum->r3c1 = (matrix1->r3c1 + matrix2->r3c1) + (matrix3->r3c1 + matrix4->r3c1); - sum->r3c2 = (matrix1->r3c2 + matrix2->r3c2) + (matrix3->r3c2 + matrix4->r3c2); - sum->r3c3 = (matrix1->r3c3 + matrix2->r3c3) + (matrix3->r3c3 + matrix4->r3c3); -} - -static inline void dp_matrix3x3_add4( - const DPMatrix3x3* matrix1, - const DPMatrix3x3* matrix2, - const DPMatrix3x3* matrix3, - const DPMatrix3x3* matrix4, - DPMatrix3x3* sum -) -{ - sum->r1c1 = (matrix1->r1c1 + matrix2->r1c1) + (matrix3->r1c1 + matrix4->r1c1); - sum->r1c2 = (matrix1->r1c2 + matrix2->r1c2) + (matrix3->r1c2 + matrix4->r1c2); - sum->r1c2 = (matrix1->r1c3 + matrix2->r1c3) + (matrix3->r1c3 + matrix4->r1c3); - - sum->r2c1 = (matrix1->r2c1 + matrix2->r2c1) + (matrix3->r2c1 + matrix4->r2c1); - sum->r2c2 = (matrix1->r2c2 + matrix2->r2c2) + (matrix3->r2c2 + matrix4->r2c2); - sum->r2c3 = (matrix1->r2c3 + matrix2->r2c3) + (matrix3->r2c3 + matrix4->r2c3); - - sum->r3c1 = (matrix1->r3c1 + matrix2->r3c1) + (matrix3->r3c1 + matrix4->r3c1); - sum->r3c2 = (matrix1->r3c2 + matrix2->r3c2) + (matrix3->r3c2 + matrix4->r3c2); - sum->r3c3 = (matrix1->r3c3 + matrix2->r3c3) + (matrix3->r3c3 + matrix4->r3c3); -} - -// ==================== Add5 ==================== // - -static inline void sp_matrix3x3_add5( - const SPMatrix3x3* matrix1, - const SPMatrix3x3* matrix2, - const SPMatrix3x3* matrix3, - const SPMatrix3x3* matrix4, - const SPMatrix3x3* matrix5, - SPMatrix3x3* sum -) -{ - sum->r1c1 = (matrix1->r1c1 + matrix2->r1c1) + (matrix3->r1c1 + matrix4->r1c1) + matrix5->r1c1; - sum->r1c2 = (matrix1->r1c2 + matrix2->r1c2) + (matrix3->r1c2 + matrix4->r1c2) + matrix5->r1c2; - sum->r1c3 = (matrix1->r1c3 + matrix2->r1c3) + (matrix3->r1c3 + matrix4->r1c3) + matrix5->r1c3; - - sum->r2c1 = (matrix1->r2c1 + matrix2->r2c1) + (matrix3->r2c1 + matrix4->r2c1) + matrix5->r2c1; - sum->r2c2 = (matrix1->r2c2 + matrix2->r2c2) + (matrix3->r2c2 + matrix4->r2c2) + matrix5->r2c2; - sum->r2c3 = (matrix1->r2c3 + matrix2->r2c3) + (matrix3->r2c3 + matrix4->r2c3) + matrix5->r2c3; - - sum->r3c1 = (matrix1->r3c1 + matrix2->r3c1) + (matrix3->r3c1 + matrix4->r3c1) + matrix5->r3c1; - sum->r3c2 = (matrix1->r3c2 + matrix2->r3c2) + (matrix3->r3c2 + matrix4->r3c2) + matrix5->r3c2; - sum->r3c3 = (matrix1->r3c3 + matrix2->r3c3) + (matrix3->r3c3 + matrix4->r3c3) + matrix5->r3c3; -} - -static inline void dp_matrix3x3_add5( - const DPMatrix3x3* matrix1, - const DPMatrix3x3* matrix2, - const DPMatrix3x3* matrix3, - const DPMatrix3x3* matrix4, - const DPMatrix3x3* matrix5, - DPMatrix3x3* sum -) -{ - sum->r1c1 = (matrix1->r1c1 + matrix2->r1c1) + (matrix3->r1c1 + matrix4->r1c1) + matrix5->r1c1; - sum->r1c2 = (matrix1->r1c2 + matrix2->r1c2) + (matrix3->r1c2 + matrix4->r1c2) + matrix5->r1c2; - sum->r1c3 = (matrix1->r1c3 + matrix2->r1c3) + (matrix3->r1c3 + matrix4->r1c3) + matrix5->r1c3; - - sum->r2c1 = (matrix1->r2c1 + matrix2->r2c1) + (matrix3->r2c1 + matrix4->r2c1) + matrix5->r2c1; - sum->r2c2 = (matrix1->r2c2 + matrix2->r2c2) + (matrix3->r2c2 + matrix4->r2c2) + matrix5->r2c2; - sum->r2c3 = (matrix1->r2c3 + matrix2->r2c3) + (matrix3->r2c3 + matrix4->r2c3) + matrix5->r2c3; - - sum->r3c1 = (matrix1->r3c1 + matrix2->r3c1) + (matrix3->r3c1 + matrix4->r3c1) + matrix5->r3c1; - sum->r3c2 = (matrix1->r3c2 + matrix2->r3c2) + (matrix3->r3c2 + matrix4->r3c2) + matrix5->r3c2; - sum->r3c3 = (matrix1->r3c3 + matrix2->r3c3) + (matrix3->r3c3 + matrix4->r3c3) + matrix5->r3c3; -} - // ================ Subtraction ================= // static inline void sp_matrix3x3_subtract(const SPMatrix3x3* minuend, const SPMatrix3x3* subtrahend, SPMatrix3x3* difference) @@ -590,6 +458,70 @@ static inline void dp_matrix3x3_subtract(const DPMatrix3x3* minuend, const DPMat difference->r3c3 = minuend->r3c3 - subtrahend->r3c3; } +// =============== Multiplication =============== // + +static inline void sp_matrix3x3_multiply(const SPMatrix3x3* multiplicand, const float multiplier, SPMatrix3x3* product) +{ + product->r1c1 = multiplicand->r1c1 * multiplier; + product->r1c2 = multiplicand->r1c2 * multiplier; + product->r1c3 = multiplicand->r1c3 * multiplier; + + product->r2c1 = multiplicand->r2c1 * multiplier; + product->r2c2 = multiplicand->r2c2 * multiplier; + product->r2c3 = multiplicand->r2c3 * multiplier; + + product->r3c1 = multiplicand->r3c1 * multiplier; + product->r3c2 = multiplicand->r3c2 * multiplier; + product->r3c3 = multiplicand->r3c3 * multiplier; +} + +static inline void dp_matrix3x3_multiply(const DPMatrix3x3* multiplicand, const double multiplier, DPMatrix3x3* product) +{ + product->r1c1 = multiplicand->r1c1 * multiplier; + product->r1c2 = multiplicand->r1c2 * multiplier; + product->r1c3 = multiplicand->r1c3 * multiplier; + + product->r2c1 = multiplicand->r2c1 * multiplier; + product->r2c2 = multiplicand->r2c2 * multiplier; + product->r2c3 = multiplicand->r2c3 * multiplier; + + product->r3c1 = multiplicand->r3c1 * multiplier; + product->r3c2 = multiplicand->r3c2 * multiplier; + product->r3c3 = multiplicand->r3c3 * multiplier; +} + +// ================== Division ================== // + +static inline void sp_matrix3x3_divide(const SPMatrix3x3* dividend, const float divisor, SPMatrix3x3* quotient) +{ + quotient->r1c1 = dividend->r1c1 / divisor; + quotient->r1c2 = dividend->r1c2 / divisor; + quotient->r1c3 = dividend->r1c3 / divisor; + + quotient->r2c1 = dividend->r2c1 / divisor; + quotient->r2c2 = dividend->r2c2 / divisor; + quotient->r2c3 = dividend->r2c3 / divisor; + + quotient->r3c1 = dividend->r3c1 / divisor; + quotient->r3c2 = dividend->r3c2 / divisor; + quotient->r3c3 = dividend->r3c3 / divisor; +} + +static inline void dp_matrix3x3_divide(const DPMatrix3x3* dividend, const double divisor, DPMatrix3x3* quotient) +{ + quotient->r1c1 = dividend->r1c1 / divisor; + quotient->r1c2 = dividend->r1c2 / divisor; + quotient->r1c3 = dividend->r1c3 / divisor; + + quotient->r2c1 = dividend->r2c1 / divisor; + quotient->r2c2 = dividend->r2c2 / divisor; + quotient->r2c3 = dividend->r2c3 / divisor; + + quotient->r3c1 = dividend->r3c1 / divisor; + quotient->r3c2 = dividend->r3c2 / divisor; + quotient->r3c3 = dividend->r3c3 / divisor; +} + // ============= Weighed Sum of two ============= // void sp_matrix3x3_get_weighted_sum2( @@ -658,75 +590,11 @@ void dp_matrix3x3_get_weighted_sum5( DPMatrix3x3* sum ); -// =============== Multiplication =============== // - -static inline void sp_matrix3x3_multiply(const SPMatrix3x3* multiplicand, const float multiplier, SPMatrix3x3* product) -{ - product->r1c1 = multiplicand->r1c1 * multiplier; - product->r1c2 = multiplicand->r1c2 * multiplier; - product->r1c3 = multiplicand->r1c3 * multiplier; - - product->r2c1 = multiplicand->r2c1 * multiplier; - product->r2c2 = multiplicand->r2c2 * multiplier; - product->r2c3 = multiplicand->r2c3 * multiplier; - - product->r3c1 = multiplicand->r3c1 * multiplier; - product->r3c2 = multiplicand->r3c2 * multiplier; - product->r3c3 = multiplicand->r3c3 * multiplier; -} - -static inline void dp_matrix3x3_multiply(const DPMatrix3x3* multiplicand, const double multiplier, DPMatrix3x3* product) -{ - product->r1c1 = multiplicand->r1c1 * multiplier; - product->r1c2 = multiplicand->r1c2 * multiplier; - product->r1c3 = multiplicand->r1c3 * multiplier; - - product->r2c1 = multiplicand->r2c1 * multiplier; - product->r2c2 = multiplicand->r2c2 * multiplier; - product->r2c3 = multiplicand->r2c3 * multiplier; - - product->r3c1 = multiplicand->r3c1 * multiplier; - product->r3c2 = multiplicand->r3c2 * multiplier; - product->r3c3 = multiplicand->r3c3 * multiplier; -} - -// ================== Division ================== // - -static inline void sp_matrix3x3_divide(const SPMatrix3x3* dividend, const float divisor, SPMatrix3x3* quotient) -{ - quotient->r1c1 = dividend->r1c1 / divisor; - quotient->r1c2 = dividend->r1c2 / divisor; - quotient->r1c3 = dividend->r1c3 / divisor; - - quotient->r2c1 = dividend->r2c1 / divisor; - quotient->r2c2 = dividend->r2c2 / divisor; - quotient->r2c3 = dividend->r2c3 / divisor; - - quotient->r3c1 = dividend->r3c1 / divisor; - quotient->r3c2 = dividend->r3c2 / divisor; - quotient->r3c3 = dividend->r3c3 / divisor; -} - -static inline void dp_matrix3x3_divide(const DPMatrix3x3* dividend, const double divisor, DPMatrix3x3* quotient) -{ - quotient->r1c1 = dividend->r1c1 / divisor; - quotient->r1c2 = dividend->r1c2 / divisor; - quotient->r1c3 = dividend->r1c3 / divisor; - - quotient->r2c1 = dividend->r2c1 / divisor; - quotient->r2c2 = dividend->r2c2 / divisor; - quotient->r2c3 = dividend->r2c3 / divisor; - - quotient->r3c1 = dividend->r3c1 / divisor; - quotient->r3c2 = dividend->r3c2 / divisor; - quotient->r3c3 = dividend->r3c3 / divisor; -} - // ============ Left Vector Product ============= // static inline void sp_matrix3x3_left_product(const SPVector3* vector, const SPMatrix3x3* matrix, SPVector3* result) { - sp_vector3_set( + sp_vector3_set_values( vector->x1 * matrix->r1c1 + vector->x2 * matrix->r2c1 + vector->x3 * matrix->r3c1, vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2 + vector->x3 * matrix->r3c2, vector->x1 * matrix->r1c3 + vector->x2 * matrix->r2c3 + vector->x3 * matrix->r3c3, @@ -736,7 +604,7 @@ static inline void sp_matrix3x3_left_product(const SPVector3* vector, const SPMa static inline void dp_matrix3x3_left_product(const DPVector3* vector, const DPMatrix3x3* matrix, DPVector3* result) { - dp_vector3_set( + dp_vector3_set_values( vector->x1 * matrix->r1c1 + vector->x2 * matrix->r2c1 + vector->x3 * matrix->r3c1, vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2 + vector->x3 * matrix->r3c2, vector->x1 * matrix->r1c3 + vector->x2 * matrix->r2c3 + vector->x3 * matrix->r3c3, @@ -748,7 +616,7 @@ static inline void dp_matrix3x3_left_product(const DPVector3* vector, const DPMa static inline void sp_matrix3x3_right_product(const SPMatrix3x3* matrix, const SPVector3* vector, SPVector3* result) { - sp_vector3_set( + sp_vector3_set_values( matrix->r1c1 * vector->x1 + matrix->r1c2 * vector->x2 + matrix->r1c3 * vector->x3, matrix->r2c1 * vector->x1 + matrix->r2c2 * vector->x2 + matrix->r2c3 * vector->x3, matrix->r3c1 * vector->x1 + matrix->r3c2 * vector->x2 + matrix->r3c3 * vector->x3, @@ -758,7 +626,7 @@ static inline void sp_matrix3x3_right_product(const SPMatrix3x3* matrix, const S static inline void dp_matrix3x3_right_product(const DPMatrix3x3* matrix, const DPVector3* vector, DPVector3* result) { - dp_vector3_set( + dp_vector3_set_values( matrix->r1c1 * vector->x1 + matrix->r1c2 * vector->x2 + matrix->r1c3 * vector->x3, matrix->r2c1 * vector->x1 + matrix->r2c2 * vector->x2 + matrix->r2c3 * vector->x3, matrix->r3c1 * vector->x1 + matrix->r3c2 * vector->x2 + matrix->r3c3 * vector->x3, diff --git a/src/vector2.c b/src/vector2.c index 85654d5..592dd2d 100644 --- a/src/vector2.c +++ b/src/vector2.c @@ -1,13 +1,5 @@ #include "vector2.h" -const SPVector2 SP_ZERO_VECTOR2 = { 0.0f, 0.0f }; -const SPVector2 SP_X1_UNIT_VECTOR2 = { 1.0f, 0.0f }; -const SPVector2 SP_X2_UNIT_VECTOR2 = { 0.0f, 1.0f }; - -const DPVector2 DP_ZERO_VECTOR2 = { 0.0, 0.0 }; -const DPVector2 DP_X1_UNIT_VECTOR2 = { 1.0, 0.0 }; -const DPVector2 DP_X2_UNIT_VECTOR2 = { 0.0, 1.0 }; - // =================== Angle ==================== // float sp_vector2_angle(const SPVector2* vector1, const SPVector2* vector2, const angle_unit_t unit) diff --git a/src/vector2.h b/src/vector2.h index c2a4aec..ee59b9e 100644 --- a/src/vector2.h +++ b/src/vector2.h @@ -16,14 +16,6 @@ typedef struct double x1, x2; } DPVector2; -extern const SPVector2 SP_ZERO_VECTOR2; -extern const SPVector2 SP_X1_UNIT_VECTOR2; -extern const SPVector2 SP_X2_UNIT_VECTOR2; - -extern const DPVector2 DP_ZERO_VECTOR2; -extern const DPVector2 DP_X1_UNIT_VECTOR2; -extern const DPVector2 DP_X2_UNIT_VECTOR2; - // =================== Reset ==================== // static inline void sp_vector2_reset(SPVector2* vector) @@ -170,84 +162,6 @@ static inline void dp_vector2_add(const DPVector2* vector1, const DPVector2* vec result->x2 = vector1->x2 + vector2->x2; } -// ==================== Add3 ==================== // - -static inline void sp_vector2_add3( - const SPVector2* vector1, - const SPVector2* vector2, - const SPVector2* vector3, - SPVector2* result -) -{ - result->x1 = vector1->x1 + vector2->x1 + vector3->x1; - result->x2 = vector1->x2 + vector2->x2 + vector3->x2; -} - -static inline void dp_vector2_add3( - const DPVector2* vector1, - const DPVector2* vector2, - const DPVector2* vector3, - DPVector2* result -) -{ - result->x1 = vector1->x1 + vector2->x1 + vector3->x1; - result->x2 = vector1->x2 + vector2->x2 + vector3->x2; -} - -// ==================== Add4 ==================== // - -static inline void sp_vector2_add4( - const SPVector2* vector1, - const SPVector2* vector2, - const SPVector2* vector3, - const SPVector2* vector4, - SPVector2* result -) -{ - result->x1 = (vector1->x1 + vector2->x1) + (vector3->x1 + vector4->x1); - result->x2 = (vector1->x2 + vector2->x2) + (vector3->x2 + vector4->x2); -} - -static inline void dp_vector2_add4( - const DPVector2* vector1, - const DPVector2* vector2, - const DPVector2* vector3, - const DPVector2* vector4, - DPVector2* result -) -{ - result->x1 = (vector1->x1 + vector2->x1) + (vector3->x1 + vector4->x1); - result->x2 = (vector1->x2 + vector2->x2) + (vector3->x2 + vector4->x2); -} - -// ==================== Add5 ==================== // - -static inline void sp_vector2_add5( - const SPVector2* vector1, - const SPVector2* vector2, - const SPVector2* vector3, - const SPVector2* vector4, - const SPVector2* vector5, - SPVector2* result -) -{ - result->x1 = (vector1->x1 + vector2->x1) + (vector3->x1 + vector4->x1) + vector5->x1; - result->x2 = (vector1->x2 + vector2->x2) + (vector3->x2 + vector4->x2) + vector5->x2; -} - -static inline void dp_vector2_add5( - const DPVector2* vector1, - const DPVector2* vector2, - const DPVector2* vector3, - const DPVector2* vector4, - const DPVector2* vector5, - DPVector2* result -) -{ - result->x1 = (vector1->x1 + vector2->x1) + (vector3->x1 + vector4->x1) + vector5->x1; - result->x2 = (vector1->x2 + vector2->x2) + (vector3->x2 + vector4->x2) + vector5->x2; -} - // ================ Subtraction ================= // static inline void sp_vector2_subtract(const SPVector2* minuend, const SPVector2* subtrahend, SPVector2* result) @@ -262,6 +176,34 @@ static inline void dp_vector2_subtract(const DPVector2* minuend, const DPVector2 result->x2 = minuend->x2 - subtrahend->x2; } +// =============== Multiplication =============== // + +static inline void sp_vector2_multiply(const SPVector2* multiplicand, const float multiplier, SPVector2* result) +{ + result->x1 = multiplicand->x1 * multiplier; + result->x2 = multiplicand->x2 * multiplier; +} + +static inline void dp_vector2_multiply(const DPVector2* multiplicand, const double multiplier, DPVector2* result) +{ + result->x1 = multiplicand->x1 * multiplier; + result->x2 = multiplicand->x2 * multiplier; +} + +// ================== Division ================== // + +static inline void sp_vector2_divide(const SPVector2* dividend, const float divisor, SPVector2* result) +{ + result->x1 = dividend->x1 / divisor; + result->x2 = dividend->x2 / divisor; +} + +static inline void dp_vector2_divide(const DPVector2* dividend, const double divisor, DPVector2* result) +{ + result->x1 = dividend->x1 / divisor; + result->x2 = dividend->x2 / divisor; +} + // ============= Weighed Sum of two ============= // static inline void sp_vector2_get_weighted_sum2( @@ -362,34 +304,6 @@ static inline void dp_vector2_get_weighted_sum5( result->x2 = (vector1->x2 * weight1 + vector2->x2 * weight2) + (vector3->x2 * weight3 + vector4->x2 * weight4) + vector5->x2 * weight5; } -// =============== Multiplication =============== // - -static inline void sp_vector2_multiply(const SPVector2* multiplicand, const float multiplier, SPVector2* result) -{ - result->x1 = multiplicand->x1 * multiplier; - result->x2 = multiplicand->x2 * multiplier; -} - -static inline void dp_vector2_multiply(const DPVector2* multiplicand, const double multiplier, DPVector2* result) -{ - result->x1 = multiplicand->x1 * multiplier; - result->x2 = multiplicand->x2 * multiplier; -} - -// ================== Division ================== // - -static inline void sp_vector2_divide(const SPVector2* dividend, const float divisor, SPVector2* result) -{ - result->x1 = dividend->x1 / divisor; - result->x2 = dividend->x2 / divisor; -} - -static inline void dp_vector2_divide(const DPVector2* dividend, const double divisor, DPVector2* result) -{ - result->x1 = dividend->x1 / divisor; - result->x2 = dividend->x2 / divisor; -} - // ================== Average2 ================== // static inline void sp_vector2_get_mean2(const SPVector2* vector1, const SPVector2* vector2, SPVector2* result) diff --git a/src/vector3.c b/src/vector3.c index 7ec09a7..9315c98 100644 --- a/src/vector3.c +++ b/src/vector3.c @@ -1,15 +1,5 @@ #include "vector3.h" -const SPVector3 SP_ZERO_VECTOR3 = { 0.0f, 0.0f, 0.0f }; -const SPVector3 SP_X1_UNIT_VECTOR3 = { 1.0f, 0.0f, 0.0f }; -const SPVector3 SP_X2_UNIT_VECTOR3 = { 0.0f, 1.0f, 0.0f }; -const SPVector3 SP_X3_UNIT_VECTOR3 = { 0.0f, 0.0f, 1.0f }; - -const DPVector3 DP_ZERO_VECTOR3 = { 0.0, 0.0, 0.0 }; -const DPVector3 DP_X1_UNIT_VECTOR3 = { 1.0, 0.0, 0.0 }; -const DPVector3 DP_X2_UNIT_VECTOR3 = { 0.0, 1.0, 0.0 }; -const DPVector3 DP_X3_UNIT_VECTOR3 = { 0.0, 0.0, 1.0 }; - // =================== Angle ==================== // float sp_vector3_angle(const SPVector3* vector1, const SPVector3* vector2, const angle_unit_t unit) diff --git a/src/vector3.h b/src/vector3.h index aa8d162..dff9a4f 100644 --- a/src/vector3.h +++ b/src/vector3.h @@ -18,16 +18,6 @@ typedef struct double x1, x2, x3; } DPVector3; -extern const SPVector3 SP_ZERO_VECTOR3; -extern const SPVector3 SP_X1_UNIT_VECTOR3; -extern const SPVector3 SP_X2_UNIT_VECTOR3; -extern const SPVector3 SP_X3_UNIT_VECTOR3; - -extern const DPVector3 DP_ZERO_VECTOR3; -extern const DPVector3 DP_X1_UNIT_VECTOR3; -extern const DPVector3 DP_X2_UNIT_VECTOR3; -extern const DPVector3 DP_X3_UNIT_VECTOR3; - // =================== Reset ==================== // static inline void sp_vector3_reset(SPVector3* vector) @@ -188,90 +178,6 @@ static inline void dp_vector3_add(const DPVector3* vector1, const DPVector3* vec result->x3 = vector1->x3 + vector2->x3; } -// ==================== Add3 ==================== // - -static inline void sp_vector3_add3( - const SPVector3* vector1, - const SPVector3* vector2, - const SPVector3* vector3, - SPVector3* result -) -{ - result->x1 = vector1->x1 + vector2->x1 + vector3->x1; - result->x2 = vector1->x2 + vector2->x2 + vector3->x2; - result->x3 = vector1->x3 + vector2->x3 + vector3->x3; -} - -static inline void dp_vector3_add3( - const DPVector3* vector1, - const DPVector3* vector2, - const DPVector3* vector3, - DPVector3* result -) -{ - result->x1 = vector1->x1 + vector2->x1 + vector3->x1; - result->x2 = vector1->x2 + vector2->x2 + vector3->x2; - result->x3 = vector1->x3 + vector2->x3 + vector3->x3; -} - -// ==================== Add4 ==================== // - -static inline void sp_vector3_add4( - const SPVector3* vector1, - const SPVector3* vector2, - const SPVector3* vector3, - const SPVector3* vector4, - SPVector3* result -) -{ - result->x1 = (vector1->x1 + vector2->x1) + (vector3->x1 + vector4->x1); - result->x2 = (vector1->x2 + vector2->x2) + (vector3->x2 + vector4->x2); - result->x3 = (vector1->x3 + vector2->x3) + (vector3->x3 + vector4->x3); -} - -static inline void dp_vector3_add4( - const DPVector3* vector1, - const DPVector3* vector2, - const DPVector3* vector3, - const DPVector3* vector4, - DPVector3* result -) -{ - result->x1 = (vector1->x1 + vector2->x1) + (vector3->x1 + vector4->x1); - result->x2 = (vector1->x2 + vector2->x2) + (vector3->x2 + vector4->x2); - result->x3 = (vector1->x3 + vector2->x3) + (vector3->x3 + vector4->x3); -} - -// ==================== Add5 ==================== // - -static inline void sp_vector3_add5( - const SPVector3* vector1, - const SPVector3* vector2, - const SPVector3* vector3, - const SPVector3* vector4, - const SPVector3* vector5, - SPVector3* result -) -{ - result->x1 = (vector1->x1 + vector2->x1) + (vector3->x1 + vector4->x1) + vector5->x1; - result->x2 = (vector1->x2 + vector2->x2) + (vector3->x2 + vector4->x2) + vector5->x2; - result->x3 = (vector1->x3 + vector2->x3) + (vector3->x3 + vector4->x3) + vector5->x3; -} - -static inline void dp_vector3_add5( - const DPVector3* vector1, - const DPVector3* vector2, - const DPVector3* vector3, - const DPVector3* vector4, - const DPVector3* vector5, - DPVector3* result -) -{ - result->x1 = (vector1->x1 + vector2->x1) + (vector3->x1 + vector4->x1) + vector5->x1; - result->x2 = (vector1->x2 + vector2->x2) + (vector3->x2 + vector4->x2) + vector5->x2; - result->x3 = (vector1->x3 + vector2->x3) + (vector3->x3 + vector4->x3) + vector5->x3; -} - // ================ Subtraction ================= // static inline void sp_vector3_subtract(const SPVector3* minuend, const SPVector3* subtrahend, SPVector3* result) @@ -288,6 +194,38 @@ static inline void dp_vector3_subtract(const DPVector3* minuend, const DPVector3 result->x3 = minuend->x3 - subtrahend->x3; } +// =============== Multiplication =============== // + +static inline void sp_vector3_multiply(const SPVector3* multiplicand, const float multiplier, SPVector3* result) +{ + result->x1 = multiplicand->x1 * multiplier; + result->x2 = multiplicand->x2 * multiplier; + result->x3 = multiplicand->x3 * multiplier; +} + +static inline void dp_vector3_multiply(const DPVector3* multiplicand, const double multiplier, DPVector3* result) +{ + result->x1 = multiplicand->x1 * multiplier; + result->x2 = multiplicand->x2 * multiplier; + result->x3 = multiplicand->x3 * multiplier; +} + +// ================== Division ================== // + +static inline void sp_vector3_divide(const SPVector3* dividend, const float divisor, SPVector3* result) +{ + result->x1 = dividend->x1 / divisor; + result->x2 = dividend->x2 / divisor; + result->x3 = dividend->x3 / divisor; +} + +static inline void dp_vector3_divide(const DPVector3* dividend, const double divisor, DPVector3* result) +{ + result->x1 = dividend->x1 / divisor; + result->x2 = dividend->x2 / divisor; + result->x3 = dividend->x3 / divisor; +} + // ============= Weighed Sum of two ============= // static inline void sp_vector3_get_weighted_sum2( @@ -396,38 +334,6 @@ static inline void dp_vector3_get_weighted_sum5( result->x3 = (vector1->x3 * weight1 + vector2->x3 * weight2) + (vector3->x3 * weight3 + vector4->x3 * weight4) + vector5->x3 * weight5; } -// =============== Multiplication =============== // - -static inline void sp_vector3_multiply(const SPVector3* multiplicand, const float multiplier, SPVector3* result) -{ - result->x1 = multiplicand->x1 * multiplier; - result->x2 = multiplicand->x2 * multiplier; - result->x3 = multiplicand->x3 * multiplier; -} - -static inline void dp_vector3_multiply(const DPVector3* multiplicand, const double multiplier, DPVector3* result) -{ - result->x1 = multiplicand->x1 * multiplier; - result->x2 = multiplicand->x2 * multiplier; - result->x3 = multiplicand->x3 * multiplier; -} - -// ================== Division ================== // - -static inline void sp_vector3_divide(const SPVector3* dividend, const float divisor, SPVector3* result) -{ - result->x1 = dividend->x1 / divisor; - result->x2 = dividend->x2 / divisor; - result->x3 = dividend->x3 / divisor; -} - -static inline void dp_vector3_divide(const DPVector3* dividend, const double divisor, DPVector3* result) -{ - result->x1 = dividend->x1 / divisor; - result->x2 = dividend->x2 / divisor; - result->x3 = dividend->x3 / divisor; -} - // ================== Average2 ================== // static inline void sp_vector3_get_mean2(const SPVector3* vector1, const SPVector3* vector2, SPVector3* result) @@ -560,7 +466,7 @@ static inline double dp_vector3_triple(const DPVector3* vector1, const DPVector3 static inline void sp_vector3_cross(const SPVector3* vector1, const SPVector3* vector2, SPVector3* result) { - sp_vector3_set( + sp_vector3_set_values( vector1->x2 * vector2->x3 - vector1->x3 * vector2->x2, vector1->x3 * vector2->x1 - vector1->x1 * vector2->x3, vector1->x1 * vector2->x2 - vector1->x2 * vector2->x1, @@ -570,7 +476,7 @@ static inline void sp_vector3_cross(const SPVector3* vector1, const SPVector3* v static inline void dp_vector3_cross(const DPVector3* vector1, const DPVector3* vector2, DPVector3* result) { - dp_vector3_set( + dp_vector3_set_values( vector1->x2 * vector2->x3 - vector1->x3 * vector2->x2, vector1->x3 * vector2->x1 - vector1->x1 * vector2->x3, vector1->x1 * vector2->x2 - vector1->x2 * vector2->x1,