diff --git a/core/math/quaternion.h b/core/math/quaternion.h index e6c76227b9..590139c8fe 100644 --- a/core/math/quaternion.h +++ b/core/math/quaternion.h @@ -146,7 +146,11 @@ struct [[nodiscard]] Quaternion { #ifdef MATH_CHECKS ERR_FAIL_COND_MSG(p_v0.is_zero_approx() || p_v1.is_zero_approx(), "The vectors must not be zero."); #endif - constexpr real_t ALMOST_ONE = 1.0f - (real_t)CMP_EPSILON; +#ifdef REAL_T_IS_DOUBLE + constexpr real_t ALMOST_ONE = 0.999999999999999; +#else + constexpr real_t ALMOST_ONE = 0.99999975f; +#endif Vector3 n0 = p_v0.normalized(); Vector3 n1 = p_v1.normalized(); real_t d = n0.dot(n1); @@ -169,6 +173,7 @@ struct [[nodiscard]] Quaternion { z = c.z * rs; w = s * 0.5f; } + normalize(); } };