VulcanoLE/src/VUtils/Math.cpp

32 lines
964 B
C++

#include <VUtils/Math.h>
namespace VUtils {
double Math::clamp(double value, double min, double max) {
return value > max ? max : value < min ? min : value;
}
double Math::lerp(double a, double b, double f) {
return (a + (b - a) * f);
}
double Math::bezierBlend(double t) {
return t * t * (3.0 - 2.0 * t);
}
double Math::easeIn(double ratio) {
return ratio * ratio * ratio;
}
double Math::map(double x, double in_min, double in_max, double out_min, double out_max) {
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
double Math::cubicInterpolate (double y0, double y1, double y2, double y3, double factor)
{
double a0, a1, a2, a3, mu2;
mu2 = factor * factor;
a0 = y3 - y2 - y0 + y1;
a1 = y0 - y1 - a0;
a2 = y2 - y0;
a3 = y1;
return (a0 * factor * mu2 + a1 * mu2 + a2 * factor + a3);
}
}