【问题标题】:How to rearrange these easing functions to accept v0, v1 and t?如何重新排列这些缓动函数以接受 v0、v1 和 t?
【发布时间】:2015-12-07 23:27:32
【问题描述】:

例如,这个要点中介绍的缓动函数:https://gist.github.com/gre/1650294 将是完美的,但我不知道如何修改它们以便它们采用 v0、v1 和 t 参数,就像我目前拥有的这个 lerp 函数:

_lerp2: function(v0, v1, t) 
{
    return (1 - t) * v0 + t * v1;
}

这里显示的缓动看起来也不错:http://gizma.com/easing/ 但在这种情况下,我不理解“值变化”参数。即使我这样做了,我可能仍然希望这些函数只接受三个参数,v0、v1 和 t。

参数如下:v0 = 起始值,v1 = 结束值,t = 0 和 1 之间的值。例如,如果 t = 0.5,则 lerp 例如返回 v0 和 v1 的平均值。对于这些其他缓动功能,我需要同样的行为。

或者如果修改这些缓动太难了,我是否可以修改现有的、有效的 lerp 函数,比如二次缓动?

【问题讨论】:

    标签: javascript function canvas transition easing


    【解决方案1】:

    从您提供的第一页修改缓动功能。

    将以下参数添加到所有函数定义中。

    例如

    var linear = function (t) { 
        return t 
    };
    

    变成

    var linear = function (t, start, end) { 
        return t 
    };
    

    其中startt= 0 时的值,endt = 1; 时的值

    然后在每个函数中取出返回值并赋值给t;

    var linear = function (t, start, end) { 
        return t 
    };
    

    变成

    var linear = function (t, start, end) { 
        t = t;
        // temp remove return
    };
    

    然后我们使用新的 t 值在 Startend 之间切换。这是通过将startend 之间的差乘以缩放范围的t(仍在0-1 范围内),然后将start 添加到它以移动新值来完成的相对于开始。

    var linear = function (t, start, end) { 
        t = t;
        t = (end - start) * t;
        t += start;
        return t;
    };
    
    // can be done in one line
    
    var linear = function (t, start, end) { 
        return (end - start) * t + start;
    };
    
    // or
    var easeOutQuart = function (t) {
        return 1-(--t)*t*t*t 
    }
    
    // becomes
    var easeOutQuart = function (t, start, end) {
        return (end - start) * (1-(--t)*t*t*t) + start ;
    }
    

    例子

    easeOutQuart(0.5, 10, 20); //  t@0 returns 10 and t@1 returns 20 
    easeOutQuart(0.5, 40, -10); //  t@0 returns 40 and t@1 returns -10 
    easeOutQuart(0.5, -10, 30); //  t@0 returns -10 and t@1 returns 30 
    

    【讨论】:

      猜你喜欢
      • 2021-12-13
      • 2011-04-28
      • 1970-01-01
      • 2011-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多