// Template minimum
template <class T>
T min(T a, T b)
{
return (a<b)?a:b;
}
// Maximum
template <class T>
T max(T a, T b)
{
return (a>b)?a:b;
}
// Linear interpolation 线性插值
template <class T>
T lerp(T a, T b, float bal)
{
bal = clamp<float>(bal, 0, 1);
return a + (b - a) * bal;
}
// Floating-point absolute using some binary tricks
float absf(float x)
{
*(long *)&x &= 0x7fffffff;
return x;
}
// Makes an int "wrap" to fit in the range 0..255
int wrap(int x)
{
return (x%256);
}
template <class T>
T min(T a, T b)
{
return (a<b)?a:b;
}
// Maximum
template <class T>
T max(T a, T b)
{
return (a>b)?a:b;
}
// Linear interpolation 线性插值
template <class T>
T lerp(T a, T b, float bal)
{
bal = clamp<float>(bal, 0, 1);
return a + (b - a) * bal;
}
// Floating-point absolute using some binary tricks
float absf(float x)
{
*(long *)&x &= 0x7fffffff;
return x;
}
// Makes an int "wrap" to fit in the range 0..255
int wrap(int x)
{
return (x%256);
}