Browse Source

Merge pull request #106337 from TokageItLab/arc-tolerance

Fix Quaternion arc constructor tolerance
Thaddeus Crews 3 months ago
parent
commit
6c2d288ef1
1 changed files with 6 additions and 1 deletions
  1. 6 1
      core/math/quaternion.h

+ 6 - 1
core/math/quaternion.h

@@ -139,7 +139,11 @@ struct [[nodiscard]] Quaternion {
 #ifdef MATH_CHECKS
 #ifdef MATH_CHECKS
 		ERR_FAIL_COND_MSG(p_v0.is_zero_approx() || p_v1.is_zero_approx(), "The vectors must not be zero.");
 		ERR_FAIL_COND_MSG(p_v0.is_zero_approx() || p_v1.is_zero_approx(), "The vectors must not be zero.");
 #endif
 #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 n0 = p_v0.normalized();
 		Vector3 n1 = p_v1.normalized();
 		Vector3 n1 = p_v1.normalized();
 		real_t d = n0.dot(n1);
 		real_t d = n0.dot(n1);
@@ -162,6 +166,7 @@ struct [[nodiscard]] Quaternion {
 			z = c.z * rs;
 			z = c.z * rs;
 			w = s * 0.5f;
 			w = s * 0.5f;
 		}
 		}
+		normalize();
 	}
 	}
 };
 };