Math/Algorithm: Clean code
Former-commit-id: 5133320f4cf04e78d3cf7d66dbbe6f87f44b4bdc
This commit is contained in:
parent
b1081c63e5
commit
009d860d6c
|
|
@ -10,9 +10,6 @@
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
#include <Nazara/Core/Debug.hpp>
|
#include <Nazara/Core/Debug.hpp>
|
||||||
|
|
||||||
#define F(a) static_cast<T>(a)
|
|
||||||
#define F2(a) static_cast<T2>(a)
|
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
// https://graphics.stanford.edu/~seander/bithacks.html#IntegerLogDeBruijn
|
// https://graphics.stanford.edu/~seander/bithacks.html#IntegerLogDeBruijn
|
||||||
|
|
@ -131,7 +128,7 @@ T NzCountBits(T value)
|
||||||
template<typename T>
|
template<typename T>
|
||||||
constexpr T NzDegreeToRadian(T degrees)
|
constexpr T NzDegreeToRadian(T degrees)
|
||||||
{
|
{
|
||||||
return degrees * F(M_PI/180.0);
|
return degrees * T(M_PI/180.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
|
|
@ -204,7 +201,7 @@ inline unsigned int NzGetNumberLength(int number)
|
||||||
if (number == 0)
|
if (number == 0)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
return static_cast<unsigned int>(std::log10(std::abs(number)))+(number < 0 ? 2 : 1);
|
return static_cast<unsigned int>(std::log10(std::abs(number))) + (number < 0 ? 2 : 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline unsigned int NzGetNumberLength(unsigned int number)
|
inline unsigned int NzGetNumberLength(unsigned int number)
|
||||||
|
|
@ -220,7 +217,7 @@ inline unsigned int NzGetNumberLength(long long number)
|
||||||
if (number == 0)
|
if (number == 0)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
return static_cast<unsigned int>(std::log10(std::abs(number)))+(number < 0 ? 2 : 1);
|
return static_cast<unsigned int>(std::log10(std::abs(number))) + (number < 0 ? 2 : 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline unsigned int NzGetNumberLength(unsigned long long number)
|
inline unsigned int NzGetNumberLength(unsigned long long number)
|
||||||
|
|
@ -228,7 +225,7 @@ inline unsigned int NzGetNumberLength(unsigned long long number)
|
||||||
if (number == 0)
|
if (number == 0)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
return static_cast<unsigned int>(std::log10(number))+1;
|
return static_cast<unsigned int>(std::log10(number)) + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline unsigned int NzGetNumberLength(float number, nzUInt8 precision)
|
inline unsigned int NzGetNumberLength(float number, nzUInt8 precision)
|
||||||
|
|
@ -276,11 +273,11 @@ template<typename T, typename T2>
|
||||||
T NzLerp(T from, T to, T2 interpolation)
|
T NzLerp(T from, T to, T2 interpolation)
|
||||||
{
|
{
|
||||||
#ifdef NAZARA_DEBUG
|
#ifdef NAZARA_DEBUG
|
||||||
if (interpolation < F2(0.0) || interpolation > F2(1.0))
|
if (interpolation < T2(0.0) || interpolation > T2(1.0))
|
||||||
NazaraWarning("Interpolation should be in range [0..1] (Got " + NzString::Number(interpolation) + ')');
|
NazaraWarning("Interpolation should be in range [0..1] (Got " + NzString::Number(interpolation) + ')');
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return from + interpolation*(to - from);
|
return from + interpolation * (to - from);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
|
|
@ -317,14 +314,14 @@ template<typename T>
|
||||||
T NzNormalizeAngle(T angle)
|
T NzNormalizeAngle(T angle)
|
||||||
{
|
{
|
||||||
#if NAZARA_MATH_ANGLE_RADIAN
|
#if NAZARA_MATH_ANGLE_RADIAN
|
||||||
const T limit = F(M_PI);
|
const T limit = T(M_PI);
|
||||||
#else
|
#else
|
||||||
const T limit = F(180.0);
|
const T limit = T(180.0);
|
||||||
#endif
|
#endif
|
||||||
const T twoLimit = limit*F(2.0);
|
const T twoLimit = limit * T(2);
|
||||||
|
|
||||||
angle = std::fmod(angle + limit, twoLimit);
|
angle = std::fmod(angle + limit, twoLimit);
|
||||||
if (angle < F(0.0))
|
if (angle < T(0))
|
||||||
angle += twoLimit;
|
angle += twoLimit;
|
||||||
|
|
||||||
return angle - limit;
|
return angle - limit;
|
||||||
|
|
@ -339,9 +336,8 @@ bool NzNumberEquals(T a, T b)
|
||||||
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;
|
std::pair<const T&, const T&> minmax = std::minmax(a, b);
|
||||||
if (diff < F(0.0))
|
T diff = minmax.second - minmax.first;
|
||||||
diff = -diff;
|
|
||||||
|
|
||||||
return diff <= maxDifference;
|
return diff <= maxDifference;
|
||||||
}
|
}
|
||||||
|
|
@ -389,7 +385,7 @@ inline NzString NzNumberToString(long long number, nzUInt8 radix)
|
||||||
template<typename T>
|
template<typename T>
|
||||||
T NzRadianToDegree(T radians)
|
T NzRadianToDegree(T radians)
|
||||||
{
|
{
|
||||||
return radians * F(180.0/M_PI);
|
return radians * T(180.0/M_PI);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline long long NzStringToNumber(NzString str, nzUInt8 radix, bool* ok)
|
inline long long NzStringToNumber(NzString str, nzUInt8 radix, bool* ok)
|
||||||
|
|
@ -461,7 +457,4 @@ constexpr T NzToRadians(T angle)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef F2
|
|
||||||
#undef F
|
|
||||||
|
|
||||||
#include <Nazara/Core/DebugOff.hpp>
|
#include <Nazara/Core/DebugOff.hpp>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue