Javascript 为什么这会导致开始时变化幅度较大,而结束时变化幅度较小?

Javascript 为什么这会导致开始时变化幅度较大,而结束时变化幅度较小?,javascript,easing,Javascript,Easing,我想我用错了这个缓和函数。Ease out函数应该在开始时返回更大的更改,但在接近结束时我得到了更大的跳跃: //Current value = Change 25 = 0 27.227575000000005 = 2.227575000000005 31.63817500000001 = 4.410600000000006 38.187700000000014 = 6.549525000000003 46.83250000000002 = 8.644800000000004 57.529375

我想我用错了这个缓和函数。Ease out函数应该在开始时返回更大的更改,但在接近结束时我得到了更大的跳跃:

//Current value = Change
25 = 0
27.227575000000005 = 2.227575000000005
31.63817500000001 = 4.410600000000006
38.187700000000014 = 6.549525000000003
46.83250000000002 = 8.644800000000004
57.52937500000003 = 10.696875000000013
70.23557500000004 = 12.70620000000001
84.90880000000004 = 14.673225000000002
101.50720000000004 = 16.598399999999998
我做错了什么

我想要的是:

  • 它应该从25开始(25%,但我使用整数25)
  • 它应该在100结束(这是可以的,因为我会限制它到100最大)
  • 它应该开始快结束慢
  • 函数(t,b,c,d){
    t/=d;
    t--;
    返回c*(t*t*t+1)+b;
    }
    var x=25;
    var i=0;
    而(x<100&&i<500)
    {
    设last=x;
    //计算我们的新百分比
    x=立方(i,x,75100)
    //新值和值的变化
    log(x+“=”+(x-last));
    //进入下一步
    i++;
    }
    //还有,为什么不采取全部步骤呢?
    控制台日志(i);
    
    您可能想要使用
    Math.sqrt()的东西

    //给定一个scale函数,该函数接受任何值并返回一个介于0和1之间的数字
    //返回一个函数,该函数接受相同的值,并返回一个介于min和max之间的数字
    函数映射比例(比例、最小值、最大值){
    返回(…参数)=>{
    常量原始=比例(…参数);
    返回最小值+(原始值*(最大值-最小值));
    };
    }
    //接受介于0和1之间的数字
    //返回介于0和1之间的映射数字
    功能sqrtScale(n){
    n=Math.min(1,Math.max(n,0));//保持在0和1的边界内
    返回Math.sqrt(n);
    }
    const sqrtscalebeween25和100=地图比例(sqrtScale,25100);
    for(设i=0;i<1;i=i+.1){
    console.log(sqrtscalebetween25和100(i));
    
    }
    问题是我将返回的值作为“原始”值传递回下一个调用:

    相反,它应该是:

    x = easeOutCubic( i, 25, 75, 100 )
    

    这一领域需要保持不变。每次调用时只应更改第一个参数。

    如果缩放接受0..1并返回0..1,则更容易对缩放进行推理,然后可以使用修改器函数(如
    mapScale()
    )随意更改域(输入)和范围(输出)。
    x = easeOutCubic( i, x, 75, 100 );
    
    x = easeOutCubic( i, 25, 75, 100 )