是否有一个公式可以将 pow 函数中的 ease 变成 ease out?

Is there a formula to turn ease in pow function into ease out?

我有一个在 pow 函数中用作指数的控件。这以一种时尚的方式改变了价值观。有没有办法在数学上把它变成一个缓和?

我知道例如,立方体的缓动是:

pow(t, 3)

但 ease out cubic 是:

(pow((t - 1), 3)) + 1

并放出夸脱:

   float t = t2 - 1
   -(pow(t, 4) - 1)

所以公式变化很大,我需要一个通用的方法,这样我就可以使用 4.2、9.7 等值作为指数等

对于整数指数,这称为 Hermite 插值。


也可以将此任务解释为中国余数定理在多项式环中的应用

f(x) == 0 mod x^p
f(x) == 1 mod (x-1)^p

解的形式为

f(x) = a(x)*x^p+b(x)*(x-1)^p  with  deg a(x) < p, deg b(x) < p.

代入第二个方程得到

a(x)*x^p == 1 mod (x-1)^p  <=>  a(y+1)*(y+1)^p == 1 mod y^p

可以通过二项式级数求解,即直接幂级数运算,无需求解线性方程组,

a(y+1) = 1 - p*y + p*(p+1)/2*y^2 - p*(p+1)*(p+2)/2*y^3 +-... ...*y^(p-1)

对于非整数指数,你为什么要这样做?


另见"sigmoid functions".


更新

如果导数的连续性不是那么重要,那么对于任何正数 a,您可以使用 c*x^a 表示 0<=x<=0.5,使用 1-c*(1-x)^a 表示 0.5<=x<=1 .要缩小 x=0.5 处的差距,必须选择常数,使得

1 = 2*c*0.5^a  <=>  c = 2^(a-1)

可以为 0<=x<=1 实现为

y = (0.5>x) ? 0.5*pow(2*x,a) : 1-0.5*pow(2*(1-x), a);