diff --git a/include/Nazara/Math/Algorithm.inl b/include/Nazara/Math/Algorithm.inl index 49b54be32..c85a6ae4f 100644 --- a/include/Nazara/Math/Algorithm.inl +++ b/include/Nazara/Math/Algorithm.inl @@ -210,29 +210,20 @@ T NzNormalizeAngle(T angle) #else const T limit = F(180.0); #endif + const T twoLimit = limit*F(2.0); - ///TODO: Trouver une solution sans duplication - if (angle > F(0.0)) - { - angle += limit; - angle -= static_cast(angle / (F(2.0)*limit)) * (F(2.0)*limit); - angle -= limit; - } - else - { - angle -= limit; - angle -= static_cast(angle / (F(2.0)*limit)) * (F(2.0)*limit); - angle += limit; - } + angle = std::fmod(angle + limit, twoLimit); + if (angle < F(0.0)) + angle += twoLimit; - return angle; + return angle - limit; } template bool NzNumberEquals(T a, T b, T maxDifference) { T diff = a - b; - if (diff < 0) + if (diff < F(0.0)) diff = -diff; return diff <= maxDifference;