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 #else
const T limit = F(180.0); const T limit = F(180.0);
#endif #endif
const T twoLimit = limit*F(2.0);
///TODO: Trouver une solution sans duplication angle = std::fmod(angle + limit, twoLimit);
if (angle > F(0.0)) if (angle < F(0.0))
{ angle += twoLimit;
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;
}
return angle; return angle - limit;
} }
template<typename T> template<typename T>
bool NzNumberEquals(T a, T b, T maxDifference) bool NzNumberEquals(T a, T b, T maxDifference)
{ {
T diff = a - b; T diff = a - b;
if (diff < 0) if (diff < F(0.0))
diff = -diff; diff = -diff;
return diff <= maxDifference; return diff <= maxDifference;