2015-08-24 38 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