Improved NomalizeAngle function

Former-commit-id: 79793b0c57a333e6d2d4a41a14f2b7fdc1d1f093
This commit is contained in:
Lynix 2015-01-20 15:05:37 +01:00
parent b7307c462a
commit 7e9c5e9a06
1 changed files with 6 additions and 15 deletions

View File

@ -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<int>(angle / (F(2.0)*limit)) * (F(2.0)*limit);
angle -= limit;
}
else
{
angle -= limit;
angle -= static_cast<int>(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<typename T>
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;