2015-08-24 82 views
1

我有以下功能:倒車緩和功能

Math.easeIn = function (val, min, max) { 
    strength = 4; 
    val /= max; 
    return (max-1)*Math.pow(val, strength) + min; 
}; 

鑑於Math.easeIn(5, 1, 10),我得到1.5625。我想要一個給定值爲1.5625的函數,它返回5

I.e. Math.easeOut(1.5625, 1, 10) - >5

我的數學技能讓我失望。

+0

有很多功能可能產生的結果。你想做什麼? – raduation

回答

2

Math.easeIn = function (val, min, max) { 
 
    strength = 4; 
 
    val /= max; 
 
    return (max-1)*Math.pow(val, strength) + min; 
 
}; 
 

 
Math.easeOut = function (val, min, max) { 
 
    var strength = 4, res; 
 
    res = (val-min)/(max-1); 
 
    res = Math.pow(res, 1/strength); 
 
    return max*res; 
 
}; 
 

 
document.body.innerHTML = '<p>easeIn : ' + Math.easeIn(5, 1, 10) + '</p>'; 
 

 
document.body.innerHTML += '<p>easeOut : ' + Math.easeOut(1.5625, 1, 10) + '</p>';

我通過你扭轉easeIn功能得到這樣的:

res = (max - 1) * Math.pow(val/max, strength) + min  // Your easeIn function 
res - min = (max - 1) * Math.pow(val/max, strength) 
(res - min)/(max - 1) = Math.pow(val/max, strength) 
Math.pow((res - min)/(max - 1), 1/strength) = val/max 
Math.pow((res - min)/(max - 1), 1/strength) * max = val // Your easeOut function 
+0

謝謝你和你如何實現它的解釋。這一定會幫助我的數學技能。 – Dan

+1

@Azriel不客氣。抱歉格式化,它在紙上看起來更好! [這是一個更好的觀點](http://i.imgur.com/3EsqKNq.jpg)。 – blex

+1

實際上我發現它很容易遵循,我只是需要在正確的方向上微調:)它突然帶回了花在平衡方程上的類的記憶。但是,感謝您付出了額外的努力並上傳了一張圖片 - 現在更清晰了。 – Dan