Уравнение эластичного смягчения jQuery

Как я могу изменить эту функцию ослабления jQuery, чтобы добиться менее преувеличенного отскока?

$.easing.easeOutElasticSingleBounce = function (x, t, b, c, d) {
    var s=1.70158;var p=0;var a=c;
    if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
    if (a < Math.abs(c)) { a=c; var s=p/4; }
    else var s = p/(2*Math.PI) * Math.asin (c/a);
    return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
};

Я хочу создать функцию ослабления, которая имитирует это:

http://sandbox.scriptiny.com/tinyslider2/

tinyslider2 использует аналогичную функцию, которая выглядит примерно так:

new Function(this.n+'.slide('+(i==1?t+(12*d):t+(4*d))+','+(i==1?(-1*d):(-1*d))+','+(i==1?2:3)+','+a+')')

Но сегодня я не могу разобраться в математике, чтобы уместить уравнение tinyslider2 в формат упрощения jQuery. Если кто-то может показать мне пример, я был бы очень признателен.

ОБНОВЛЕНИЕ

Это уравнение очень близко:

$.easing.custom = function (x, t, b, c, d) {
    var s = 1.70158; 
    if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
    return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
}

Мне просто нужен только конечный отскок без начального отскока.

16
задан Devon 30 March 2011 в 21:39
поделиться