Javascript 为什么这会导致开始时变化幅度较大,而结束时变化幅度较小?
我想我用错了这个缓和函数。Ease out函数应该在开始时返回更大的更改,但在接近结束时我得到了更大的跳跃: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
//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
我做错了什么
我想要的是:
函数(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 )