16namespace aui::animation_curves {
19 float operator()(
float input);
23 constexpr static float VISCOUS_FLUID_SCALE = 8.0f;
25 constexpr static float viscousFluid(
float x) {
26 x *= VISCOUS_FLUID_SCALE;
28 x -= (1.0f - (float)glm::exp(-x));
30 float start = 0.36787944117f;
31 x = 1.0f - (float)glm::exp(1.0f - x);
32 x = start + x * (1.0f - start);
38 inline float ViscousFluid::operator()(
float input) {
41 const float VISCOUS_FLUID_NORMALIZE = 1.0f / viscousFluid(1.0f);
44 const float VISCOUS_FLUID_OFFSET = 1.0f - VISCOUS_FLUID_NORMALIZE * viscousFluid(1.0f);
46 float interpolated = VISCOUS_FLUID_NORMALIZE * viscousFluid(input);
47 if (interpolated > 0) {
48 return interpolated + VISCOUS_FLUID_OFFSET;
Definition viscous_fluid.h:17