26 static float warp(
float phase,
float curve) {
27 if (curve > -0.001f && curve < 0.001f)
return phase;
29 bool flip = curve > 0.0f;
30 float t = flip ? (1.0f - phase) : phase;
31 float dc = flip ? curve : -curve;
33 float a =
K * dc * dc;
34 float num = (1.0f + a) * t;
35 float den = 1.0f + a * t;
36 float result = num / den;
38 if (result > 1.0f) result = 1.0f;
39 return flip ? (1.0f - result) : result;