mirror of
https://github.com/godotengine/godot.git
synced 2024-12-03 09:32:11 +00:00
Merge pull request #31871 from aaronfranke/equal-approx-inf
Check for exact equality before approximate equality
This commit is contained in:
commit
40a9cc66a9
@ -300,6 +300,11 @@ public:
|
||||
}
|
||||
|
||||
static _ALWAYS_INLINE_ bool is_equal_approx(real_t a, real_t b) {
|
||||
// Check for exact equality first, required to handle "infinity" values.
|
||||
if (a == b) {
|
||||
return true;
|
||||
}
|
||||
// Then check for approximate equality.
|
||||
real_t tolerance = CMP_EPSILON * abs(a);
|
||||
if (tolerance < CMP_EPSILON) {
|
||||
tolerance = CMP_EPSILON;
|
||||
@ -308,6 +313,11 @@ public:
|
||||
}
|
||||
|
||||
static _ALWAYS_INLINE_ bool is_equal_approx(real_t a, real_t b, real_t tolerance) {
|
||||
// Check for exact equality first, required to handle "infinity" values.
|
||||
if (a == b) {
|
||||
return true;
|
||||
}
|
||||
// Then check for approximate equality.
|
||||
return abs(a - b) < tolerance;
|
||||
}
|
||||
|
||||
|
@ -158,6 +158,11 @@ namespace Godot
|
||||
|
||||
public static bool IsEqualApprox(real_t a, real_t b)
|
||||
{
|
||||
// Check for exact equality first, required to handle "infinity" values.
|
||||
if (a == b) {
|
||||
return true;
|
||||
}
|
||||
// Then check for approximate equality.
|
||||
real_t tolerance = Epsilon * Abs(a);
|
||||
if (tolerance < Epsilon) {
|
||||
tolerance = Epsilon;
|
||||
|
@ -48,7 +48,12 @@ namespace Godot
|
||||
|
||||
public static bool IsEqualApprox(real_t a, real_t b, real_t tolerance)
|
||||
{
|
||||
// Check for exact equality first, required to handle "infinity" values.
|
||||
if (a == b) {
|
||||
return true;
|
||||
}
|
||||
// Then check for approximate equality.
|
||||
return Abs(a - b) < tolerance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user