Удаление избыточных функций и небольшие исправления / Removing of extra methods and small fixes
This commit is contained in:
parent
049f09f3d4
commit
67f66e2127
6 changed files with 176 additions and 602 deletions
184
src/matrix2x2.h
184
src/matrix2x2.h
|
@ -365,102 +365,6 @@ static inline void dp_matrix2x2_add(const DPMatrix2x2* matrix1, const DPMatrix2x
|
||||||
sum->r2c2 = matrix1->r2c2 + matrix2->r2c2;
|
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 ================= //
|
// ================ Subtraction ================= //
|
||||||
|
|
||||||
static inline void sp_matrix2x2_subtract(const SPMatrix2x2* minuend, const SPMatrix2x2* subtrahend, SPMatrix2x2* difference)
|
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;
|
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 ============= //
|
// ============= Weighed Sum of two ============= //
|
||||||
|
|
||||||
static inline void sp_matrix2x2_get_weighted_sum2(
|
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;
|
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 ============= //
|
// ============ Left Vector Product ============= //
|
||||||
|
|
||||||
static inline void sp_matrix2x2_left_product(const SPVector2* vector, const SPMatrix2x2* matrix, SPVector2* result)
|
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->r1c1 + vector->x2 * matrix->r2c1,
|
||||||
vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2,
|
vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2,
|
||||||
result
|
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)
|
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->r1c1 + vector->x2 * matrix->r2c1,
|
||||||
vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2,
|
vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2,
|
||||||
result
|
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)
|
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->r1c1 * vector->x1 + matrix->r1c2 * vector->x2,
|
||||||
matrix->r2c1 * vector->x1 + matrix->r2c2 * vector->x2,
|
matrix->r2c1 * vector->x1 + matrix->r2c2 * vector->x2,
|
||||||
result
|
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)
|
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->r1c1 * vector->x1 + matrix->r1c2 * vector->x2,
|
||||||
matrix->r2c1 * vector->x1 + matrix->r2c2 * vector->x2,
|
matrix->r2c1 * vector->x1 + matrix->r2c2 * vector->x2,
|
||||||
result
|
result
|
||||||
|
|
272
src/matrix3x3.h
272
src/matrix3x3.h
|
@ -236,9 +236,9 @@ static inline void dp_matrix3x3_transpose(DPMatrix3x3* matrix)
|
||||||
|
|
||||||
// ================ Make Inverted =============== //
|
// ================ 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 ============== //
|
// =============== Make Transposed ============== //
|
||||||
|
|
||||||
|
@ -426,138 +426,6 @@ static inline void dp_matrix3x3_add(const DPMatrix3x3* matrix1, const DPMatrix3x
|
||||||
sum->r3c3 = matrix1->r3c3 + matrix2->r3c3;
|
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 ================= //
|
// ================ Subtraction ================= //
|
||||||
|
|
||||||
static inline void sp_matrix3x3_subtract(const SPMatrix3x3* minuend, const SPMatrix3x3* subtrahend, SPMatrix3x3* difference)
|
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;
|
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 ============= //
|
// ============= Weighed Sum of two ============= //
|
||||||
|
|
||||||
void sp_matrix3x3_get_weighted_sum2(
|
void sp_matrix3x3_get_weighted_sum2(
|
||||||
|
@ -658,75 +590,11 @@ void dp_matrix3x3_get_weighted_sum5(
|
||||||
DPMatrix3x3* sum
|
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 ============= //
|
// ============ Left Vector Product ============= //
|
||||||
|
|
||||||
static inline void sp_matrix3x3_left_product(const SPVector3* vector, const SPMatrix3x3* matrix, SPVector3* result)
|
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->r1c1 + vector->x2 * matrix->r2c1 + vector->x3 * matrix->r3c1,
|
||||||
vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2 + vector->x3 * matrix->r3c2,
|
vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2 + vector->x3 * matrix->r3c2,
|
||||||
vector->x1 * matrix->r1c3 + vector->x2 * matrix->r2c3 + vector->x3 * matrix->r3c3,
|
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)
|
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->r1c1 + vector->x2 * matrix->r2c1 + vector->x3 * matrix->r3c1,
|
||||||
vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2 + vector->x3 * matrix->r3c2,
|
vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2 + vector->x3 * matrix->r3c2,
|
||||||
vector->x1 * matrix->r1c3 + vector->x2 * matrix->r2c3 + vector->x3 * matrix->r3c3,
|
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)
|
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->r1c1 * vector->x1 + matrix->r1c2 * vector->x2 + matrix->r1c3 * vector->x3,
|
||||||
matrix->r2c1 * vector->x1 + matrix->r2c2 * vector->x2 + matrix->r2c3 * 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,
|
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)
|
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->r1c1 * vector->x1 + matrix->r1c2 * vector->x2 + matrix->r1c3 * vector->x3,
|
||||||
matrix->r2c1 * vector->x1 + matrix->r2c2 * vector->x2 + matrix->r2c3 * 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,
|
matrix->r3c1 * vector->x1 + matrix->r3c2 * vector->x2 + matrix->r3c3 * vector->x3,
|
||||||
|
|
|
@ -1,13 +1,5 @@
|
||||||
#include "vector2.h"
|
#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 ==================== //
|
// =================== Angle ==================== //
|
||||||
|
|
||||||
float sp_vector2_angle(const SPVector2* vector1, const SPVector2* vector2, const angle_unit_t unit)
|
float sp_vector2_angle(const SPVector2* vector1, const SPVector2* vector2, const angle_unit_t unit)
|
||||||
|
|
142
src/vector2.h
142
src/vector2.h
|
@ -16,14 +16,6 @@ typedef struct
|
||||||
double x1, x2;
|
double x1, x2;
|
||||||
} DPVector2;
|
} 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 ==================== //
|
// =================== Reset ==================== //
|
||||||
|
|
||||||
static inline void sp_vector2_reset(SPVector2* vector)
|
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;
|
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 ================= //
|
// ================ Subtraction ================= //
|
||||||
|
|
||||||
static inline void sp_vector2_subtract(const SPVector2* minuend, const SPVector2* subtrahend, SPVector2* result)
|
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;
|
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 ============= //
|
// ============= Weighed Sum of two ============= //
|
||||||
|
|
||||||
static inline void sp_vector2_get_weighted_sum2(
|
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;
|
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 ================== //
|
// ================== Average2 ================== //
|
||||||
|
|
||||||
static inline void sp_vector2_get_mean2(const SPVector2* vector1, const SPVector2* vector2, SPVector2* result)
|
static inline void sp_vector2_get_mean2(const SPVector2* vector1, const SPVector2* vector2, SPVector2* result)
|
||||||
|
|
|
@ -1,15 +1,5 @@
|
||||||
#include "vector3.h"
|
#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 ==================== //
|
// =================== Angle ==================== //
|
||||||
|
|
||||||
float sp_vector3_angle(const SPVector3* vector1, const SPVector3* vector2, const angle_unit_t unit)
|
float sp_vector3_angle(const SPVector3* vector1, const SPVector3* vector2, const angle_unit_t unit)
|
||||||
|
|
162
src/vector3.h
162
src/vector3.h
|
@ -18,16 +18,6 @@ typedef struct
|
||||||
double x1, x2, x3;
|
double x1, x2, x3;
|
||||||
} DPVector3;
|
} 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 ==================== //
|
// =================== Reset ==================== //
|
||||||
|
|
||||||
static inline void sp_vector3_reset(SPVector3* vector)
|
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;
|
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 ================= //
|
// ================ Subtraction ================= //
|
||||||
|
|
||||||
static inline void sp_vector3_subtract(const SPVector3* minuend, const SPVector3* subtrahend, SPVector3* result)
|
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;
|
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 ============= //
|
// ============= Weighed Sum of two ============= //
|
||||||
|
|
||||||
static inline void sp_vector3_get_weighted_sum2(
|
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;
|
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 ================== //
|
// ================== Average2 ================== //
|
||||||
|
|
||||||
static inline void sp_vector3_get_mean2(const SPVector3* vector1, const SPVector3* vector2, SPVector3* result)
|
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)
|
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->x2 * vector2->x3 - vector1->x3 * vector2->x2,
|
||||||
vector1->x3 * vector2->x1 - vector1->x1 * vector2->x3,
|
vector1->x3 * vector2->x1 - vector1->x1 * vector2->x3,
|
||||||
vector1->x1 * vector2->x2 - vector1->x2 * vector2->x1,
|
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)
|
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->x2 * vector2->x3 - vector1->x3 * vector2->x2,
|
||||||
vector1->x3 * vector2->x1 - vector1->x1 * vector2->x3,
|
vector1->x3 * vector2->x1 - vector1->x1 * vector2->x3,
|
||||||
vector1->x1 * vector2->x2 - vector1->x2 * vector2->x1,
|
vector1->x1 * vector2->x2 - vector1->x2 * vector2->x1,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue