#include 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); } }