diff --git a/src/quaternion.h b/src/quaternion.h index b818083..2dc9006 100644 --- a/src/quaternion.h +++ b/src/quaternion.h @@ -204,7 +204,7 @@ static inline void dp_quaternion_subtract(const DPQuaternion * minuend, const DP result->x3 = minuend->x3 - subtrahend->x3; } -// ================ Combination ================= // +// =============== Multiplication =============== // static inline void sp_quaternion_multiply(const SPQuaternion* left, const SPQuaternion* right, SPQuaternion* result) { diff --git a/src/vector2.h b/src/vector2.h index ee59b9e..ae380e4 100644 --- a/src/vector2.h +++ b/src/vector2.h @@ -204,104 +204,18 @@ static inline void dp_vector2_divide(const DPVector2* dividend, const double div result->x2 = dividend->x2 / divisor; } -// ============= Weighed Sum of two ============= // +// ================ Append scaled =============== // -static inline void sp_vector2_get_weighted_sum2( - const float weight1, const SPVector2* vector1, - const float weight2, const SPVector2* vector2, - SPVector2* result -) +static inline void sp_vector2_append_scaled(SPVector2* basic_vector, const SPVector2* scalable_summand, const float scale) { - result->x1 = vector1->x1 * weight1 + vector2->x1 * weight2; - result->x2 = vector1->x2 * weight1 + vector2->x2 * weight2; + basic_vector->x1 += scalable_summand->x1 * scale; + basic_vector->x2 += scalable_summand->x2 * scale; } -static inline void dp_vector2_get_weighted_sum2( - const double weight1, const DPVector2* vector1, - const double weight2, const DPVector2* vector2, - DPVector2* result -) +static inline void dp_vector2_append_scaled(DPVector2* basic_vector, const DPVector2* scalable_summand, const double scale) { - result->x1 = vector1->x1 * weight1 + vector2->x1 * weight2; - result->x2 = vector1->x2 * weight1 + vector2->x2 * weight2; -} - -// ============ Weighed Sum of three ============ // - -static inline void sp_vector2_get_weighted_sum3( - const float weight1, const SPVector2* vector1, - const float weight2, const SPVector2* vector2, - const float weight3, const SPVector2* vector3, - SPVector2* result -) -{ - result->x1 = vector1->x1 * weight1 + vector2->x1 * weight2 + vector3->x1 * weight3; - result->x2 = vector1->x2 * weight1 + vector2->x2 * weight2 + vector3->x2 * weight3; -} - -static inline void dp_vector2_get_weighted_sum3( - const double weight1, const DPVector2* vector1, - const double weight2, const DPVector2* vector2, - const double weight3, const DPVector2* vector3, - DPVector2* result -) -{ - result->x1 = vector1->x1 * weight1 + vector2->x1 * weight2 + vector3->x1 * weight3; - result->x2 = vector1->x2 * weight1 + vector2->x2 * weight2 + vector3->x2 * weight3; -} - -// ============ Weighed Sum of four ============= // - -static inline void sp_vector2_get_weighted_sum4( - const float weight1, const SPVector2* vector1, - const float weight2, const SPVector2* vector2, - const float weight3, const SPVector2* vector3, - const float weight4, const SPVector2* vector4, - SPVector2* result -) -{ - result->x1 = (vector1->x1 * weight1 + vector2->x1 * weight2) + (vector3->x1 * weight3 + vector4->x1 * weight4); - result->x2 = (vector1->x2 * weight1 + vector2->x2 * weight2) + (vector3->x2 * weight3 + vector4->x2 * weight4); -} - -static inline void dp_vector2_get_weighted_sum4( - const double weight1, const DPVector2* vector1, - const double weight2, const DPVector2* vector2, - const double weight3, const DPVector2* vector3, - const double weight4, const DPVector2* vector4, - DPVector2* result -) -{ - result->x1 = (vector1->x1 * weight1 + vector2->x1 * weight2) + (vector3->x1 * weight3 + vector4->x1 * weight4); - result->x2 = (vector1->x2 * weight1 + vector2->x2 * weight2) + (vector3->x2 * weight3 + vector4->x2 * weight4); -} - -// ============ Weighed Sum of five ============= // - -static inline void sp_vector2_get_weighted_sum5( - const float weight1, const SPVector2* vector1, - const float weight2, const SPVector2* vector2, - const float weight3, const SPVector2* vector3, - const float weight4, const SPVector2* vector4, - const float weight5, const SPVector2* vector5, - SPVector2* result -) -{ - result->x1 = (vector1->x1 * weight1 + vector2->x1 * weight2) + (vector3->x1 * weight3 + vector4->x1 * weight4) + vector5->x1 * weight5; - result->x2 = (vector1->x2 * weight1 + vector2->x2 * weight2) + (vector3->x2 * weight3 + vector4->x2 * weight4) + vector5->x2 * weight5; -} - -static inline void dp_vector2_get_weighted_sum5( - const double weight1, const DPVector2* vector1, - const double weight2, const DPVector2* vector2, - const double weight3, const DPVector2* vector3, - const double weight4, const DPVector2* vector4, - const double weight5, const DPVector2* vector5, - DPVector2* result -) -{ - result->x1 = (vector1->x1 * weight1 + vector2->x1 * weight2) + (vector3->x1 * weight3 + vector4->x1 * weight4) + vector5->x1 * weight5; - result->x2 = (vector1->x2 * weight1 + vector2->x2 * weight2) + (vector3->x2 * weight3 + vector4->x2 * weight4) + vector5->x2 * weight5; + basic_vector->x1 += scalable_summand->x1 * scale; + basic_vector->x2 += scalable_summand->x2 * scale; } // ================== Average2 ================== // @@ -320,82 +234,18 @@ static inline void dp_vector2_get_mean2(const DPVector2* vector1, const DPVector // ================== Average3 ================== // -static inline void sp_vector2_get_mean3( - const SPVector2* vector1, - const SPVector2* vector2, - const SPVector2* vector3, - SPVector2* result -) +static inline void sp_vector2_get_mean3(const SPVector2* vector1, const SPVector2* vector2, const SPVector2* vector3, SPVector2* result) { result->x1 = (vector1->x1 + vector2->x1 + vector3->x1) * SP_ONE_THIRD; result->x2 = (vector1->x2 + vector2->x2 + vector3->x2) * SP_ONE_THIRD; } -static inline void dp_vector2_get_mean3( - const DPVector2* vector1, - const DPVector2* vector2, - const DPVector2* vector3, - DPVector2* result -) +static inline void dp_vector2_get_mean3(const DPVector2* vector1, const DPVector2* vector2, const DPVector2* vector3, DPVector2* result) { result->x1 = (vector1->x1 + vector2->x1 + vector3->x1) * DP_ONE_THIRD; result->x2 = (vector1->x2 + vector2->x2 + vector3->x2) * DP_ONE_THIRD; } -// ================== Average4 ================== // - -static inline void sp_vector2_get_mean4( - const SPVector2* vector1, - const SPVector2* vector2, - const SPVector2* vector3, - const SPVector2* vector4, - SPVector2* result -) -{ - result->x1 = ((vector1->x1 + vector2->x1) + (vector3->x1 + vector4->x1)) * 0.25f; - result->x2 = ((vector1->x2 + vector2->x2) + (vector3->x2 + vector4->x2)) * 0.25f; -} - -static inline void dp_vector2_get_mean4( - const DPVector2* vector1, - const DPVector2* vector2, - const DPVector2* vector3, - const DPVector2* vector4, - DPVector2* result -) -{ - result->x1 = ((vector1->x1 + vector2->x1) + (vector3->x1 + vector4->x1)) * 0.25; - result->x2 = ((vector1->x2 + vector2->x2) + (vector3->x2 + vector4->x2)) * 0.25; -} - -// ================== Average5 ================== // - -static inline void sp_vector2_get_mean5( - 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) * 0.2f; - result->x2 = ((vector1->x2 + vector2->x2) + (vector3->x2 + vector4->x2) + vector5->x2) * 0.2f; -} - -static inline void dp_vector2_get_mean5( - 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) * 0.2; - result->x2 = ((vector1->x2 + vector2->x2) + (vector3->x2 + vector4->x2) + vector5->x2) * 0.2; -} - // =============== Scalar Product =============== // static inline float sp_vector2_scalar(const SPVector2* vector1, const SPVector2* vector2) diff --git a/src/vector3.h b/src/vector3.h index dff9a4f..49c02e6 100644 --- a/src/vector3.h +++ b/src/vector3.h @@ -226,112 +226,20 @@ static inline void dp_vector3_divide(const DPVector3* dividend, const double div result->x3 = dividend->x3 / divisor; } -// ============= Weighed Sum of two ============= // +// ================ Append scaled =============== // -static inline void sp_vector3_get_weighted_sum2( - const float weight1, const SPVector3* vector1, - const float weight2, const SPVector3* vector2, - SPVector3* result -) +static inline void sp_vector3_append_scaled(SPVector3* basic_vector, const SPVector3* scalable_summand, const float scale) { - result->x1 = vector1->x1 * weight1 + vector2->x1 * weight2; - result->x2 = vector1->x2 * weight1 + vector2->x2 * weight2; - result->x3 = vector1->x3 * weight1 + vector2->x3 * weight2; + basic_vector->x1 += scalable_summand->x1 * scale; + basic_vector->x2 += scalable_summand->x2 * scale; + basic_vector->x3 += scalable_summand->x3 * scale; } -static inline void dp_vector3_get_weighted_sum2( - const double weight1, const DPVector3* vector1, - const double weight2, const DPVector3* vector2, - DPVector3* result -) +static inline void dp_vector3_append_scaled(DPVector3* basic_vector, const DPVector3* scalable_summand, const double scale) { - result->x1 = vector1->x1 * weight1 + vector2->x1 * weight2; - result->x2 = vector1->x2 * weight1 + vector2->x2 * weight2; - result->x3 = vector1->x3 * weight1 + vector2->x3 * weight2; -} - -// ============ Weighed Sum of three ============ // - -static inline void sp_vector3_get_weighted_sum3( - const float weight1, const SPVector3* vector1, - const float weight2, const SPVector3* vector2, - const float weight3, const SPVector3* vector3, - SPVector3* result -) -{ - result->x1 = vector1->x1 * weight1 + vector2->x1 * weight2 + vector3->x1 * weight3; - result->x2 = vector1->x2 * weight1 + vector2->x2 * weight2 + vector3->x2 * weight3; - result->x3 = vector1->x3 * weight1 + vector2->x3 * weight2 + vector3->x3 * weight3; -} - -static inline void dp_vector3_get_weighted_sum3( - const double weight1, const DPVector3* vector1, - const double weight2, const DPVector3* vector2, - const double weight3, const DPVector3* vector3, - DPVector3* result -) -{ - result->x1 = vector1->x1 * weight1 + vector2->x1 * weight2 + vector3->x1 * weight3; - result->x2 = vector1->x2 * weight1 + vector2->x2 * weight2 + vector3->x2 * weight3; - result->x3 = vector1->x3 * weight1 + vector2->x3 * weight2 + vector3->x3 * weight3; -} - -// ============ Weighed Sum of four ============= // - -static inline void sp_vector3_get_weighted_sum4( - const float weight1, const SPVector3* vector1, - const float weight2, const SPVector3* vector2, - const float weight3, const SPVector3* vector3, - const float weight4, const SPVector3* vector4, - SPVector3* result -) -{ - result->x1 = (vector1->x1 * weight1 + vector2->x1 * weight2) + (vector3->x1 * weight3 + vector4->x1 * weight4); - result->x2 = (vector1->x2 * weight1 + vector2->x2 * weight2) + (vector3->x2 * weight3 + vector4->x2 * weight4); - result->x3 = (vector1->x3 * weight1 + vector2->x3 * weight2) + (vector3->x3 * weight3 + vector4->x3 * weight4); -} - -static inline void dp_vector3_get_weighted_sum4( - const double weight1, const DPVector3* vector1, - const double weight2, const DPVector3* vector2, - const double weight3, const DPVector3* vector3, - const double weight4, const DPVector3* vector4, - DPVector3* result -) -{ - result->x1 = (vector1->x1 * weight1 + vector2->x1 * weight2) + (vector3->x1 * weight3 + vector4->x1 * weight4); - result->x2 = (vector1->x2 * weight1 + vector2->x2 * weight2) + (vector3->x2 * weight3 + vector4->x2 * weight4); - result->x3 = (vector1->x3 * weight1 + vector2->x3 * weight2) + (vector3->x3 * weight3 + vector4->x3 * weight4); -} - -// ============ Weighed Sum of five ============= // - -static inline void sp_vector3_get_weighted_sum5( - const float weight1, const SPVector3* vector1, - const float weight2, const SPVector3* vector2, - const float weight3, const SPVector3* vector3, - const float weight4, const SPVector3* vector4, - const float weight5, const SPVector3* vector5, - SPVector3* result -) -{ - result->x1 = (vector1->x1 * weight1 + vector2->x1 * weight2) + (vector3->x1 * weight3 + vector4->x1 * weight4) + vector5->x1 * weight5; - result->x2 = (vector1->x2 * weight1 + vector2->x2 * weight2) + (vector3->x2 * weight3 + vector4->x2 * weight4) + vector5->x2 * weight5; - result->x3 = (vector1->x3 * weight1 + vector2->x3 * weight2) + (vector3->x3 * weight3 + vector4->x3 * weight4) + vector5->x3 * weight5; -} - -static inline void dp_vector3_get_weighted_sum5( - const double weight1, const DPVector3* vector1, - const double weight2, const DPVector3* vector2, - const double weight3, const DPVector3* vector3, - const double weight4, const DPVector3* vector4, - const double weight5, const DPVector3* vector5, - DPVector3* result -) -{ - result->x1 = (vector1->x1 * weight1 + vector2->x1 * weight2) + (vector3->x1 * weight3 + vector4->x1 * weight4) + vector5->x1 * weight5; - result->x2 = (vector1->x2 * weight1 + vector2->x2 * weight2) + (vector3->x2 * weight3 + vector4->x2 * weight4) + vector5->x2 * weight5; - result->x3 = (vector1->x3 * weight1 + vector2->x3 * weight2) + (vector3->x3 * weight3 + vector4->x3 * weight4) + vector5->x3 * weight5; + basic_vector->x1 += scalable_summand->x1 * scale; + basic_vector->x2 += scalable_summand->x2 * scale; + basic_vector->x3 += scalable_summand->x3 * scale; } // ================== Average2 ================== // @@ -352,88 +260,20 @@ static inline void dp_vector3_get_mean2(const DPVector3* vector1, const DPVector // ================== Average3 ================== // -static inline void sp_vector3_get_mean3( - const SPVector3* vector1, - const SPVector3* vector2, - const SPVector3* vector3, - SPVector3* result -) +static inline void sp_vector3_get_mean3(const SPVector3* vector1, const SPVector3* vector2, const SPVector3* vector3, SPVector3* result) { result->x1 = (vector1->x1 + vector2->x1 + vector3->x1) * SP_ONE_THIRD; result->x2 = (vector1->x2 + vector2->x2 + vector3->x2) * SP_ONE_THIRD; result->x3 = (vector1->x3 + vector2->x3 + vector3->x3) * SP_ONE_THIRD; } -static inline void dp_vector3_get_mean3( - const DPVector3* vector1, - const DPVector3* vector2, - const DPVector3* vector3, - DPVector3* result -) +static inline void dp_vector3_get_mean3(const DPVector3* vector1, const DPVector3* vector2, const DPVector3* vector3, DPVector3* result) { result->x1 = (vector1->x1 + vector2->x1 + vector3->x1) * DP_ONE_THIRD; result->x2 = (vector1->x2 + vector2->x2 + vector3->x2) * DP_ONE_THIRD; result->x3 = (vector1->x3 + vector2->x3 + vector3->x3) * DP_ONE_THIRD; } -// ================== Average4 ================== // - -static inline void sp_vector3_get_mean4( - const SPVector3* vector1, - const SPVector3* vector2, - const SPVector3* vector3, - const SPVector3* vector4, - SPVector3* result -) -{ - result->x1 = ((vector1->x1 + vector2->x1) + (vector3->x1 + vector4->x1)) * 0.25f; - result->x2 = ((vector1->x2 + vector2->x2) + (vector3->x2 + vector4->x2)) * 0.25f; - result->x3 = ((vector1->x3 + vector2->x3) + (vector3->x3 + vector4->x3)) * 0.25f; -} - -static inline void dp_vector3_get_mean4( - const DPVector3* vector1, - const DPVector3* vector2, - const DPVector3* vector3, - const DPVector3* vector4, - DPVector3* result -) -{ - result->x1 = ((vector1->x1 + vector2->x1) + (vector3->x1 + vector4->x1)) * 0.25; - result->x2 = ((vector1->x2 + vector2->x2) + (vector3->x2 + vector4->x2)) * 0.25; - result->x3 = ((vector1->x3 + vector2->x3) + (vector3->x3 + vector4->x3)) * 0.25; -} - -// ================== Average5 ================== // - -static inline void sp_vector3_get_mean5( - 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) * 0.2f; - result->x2 = ((vector1->x2 + vector2->x2) + (vector3->x2 + vector4->x2) + vector5->x2) * 0.2f; - result->x3 = ((vector1->x3 + vector2->x3) + (vector3->x3 + vector4->x3) + vector5->x3) * 0.2f; -} - -static inline void dp_vector3_get_mean5( - 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) * 0.2; - result->x2 = ((vector1->x2 + vector2->x2) + (vector3->x2 + vector4->x2) + vector5->x2) * 0.2; - result->x3 = ((vector1->x3 + vector2->x3) + (vector3->x3 + vector4->x3) + vector5->x3) * 0.2; -} - // =============== Scalar Product =============== // static inline float sp_vector3_scalar(const SPVector3* vector1, const SPVector3* vector2) diff --git a/src/versor.h b/src/versor.h index 1130c14..d052f5a 100644 --- a/src/versor.h +++ b/src/versor.h @@ -147,7 +147,7 @@ static inline void dp_versor_set(const double s0, const double x1, const double return; } - __sp_versor_normalize(square_module, result); + __dp_versor_normalize(square_module, result); } // ==================== Copy ==================== //