Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Animation 为什么缓和/缓和函数实现通常有多个参数?_Animation_Math_Tween_Easing - Fatal编程技术网

Animation 为什么缓和/缓和函数实现通常有多个参数?

Animation 为什么缓和/缓和函数实现通常有多个参数?,animation,math,tween,easing,Animation,Math,Tween,Easing,我在生活中发现的大多数easing函数集合都有复杂的函数签名,比如jQuery:函数easing(x,t,b,c,d){…}。示例: 为什么需要所有这些参数?如果按照标准化的比例,使用 一个介于0和1之间的输入值 一个介于0和1之间的输出值(通常,但不是在特殊情况下,如“弹性”) 并使用以下函数将其包装以使用任意开始/结束时间和值: function wrapEasing(fn, startTime, endTime, now, startValue, endValue) {

我在生活中发现的大多数easing函数集合都有复杂的函数签名,比如jQuery:
函数easing(x,t,b,c,d){…}
。示例:

为什么需要所有这些参数?如果按照标准化的比例,使用

  • 一个介于0和1之间的输入值
  • 一个介于0和1之间的输出值(通常,但不是在特殊情况下,如“弹性”)
并使用以下函数将其包装以使用任意开始/结束时间和值:

function wrapEasing(fn, startTime, endTime, now, startValue, endValue) {
    var progress = (now - startTime) / (endTime - startTime);
    var easedProgress = fn(progress);
    return startValue + easedProgress * (endValue - startValue);
}
(这更像是一个数学问题,我使用javascript语法作为示例——它适用于所有编程语言。)


是的,我也找到了其他例子:


问题是——为什么很多人用这种复杂的方式做这件事?可能是因为这需要函数编程?

因为需要对函数进行参数化。不同的速度、不同的坡度/坡度等。包裹缓和函数采用第二个函数,该函数需要与其他函数相同的参数。是的,但根据上所示的图表,编写缓和函数本身要容易得多。您只能使用一组可能的输入,介于0和1之间。当然,要应用缓和,需要所有值。只是不计算实际的“缓和进度”