反向缓动函数
Reversing easing function
我有以下功能:
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
的函数,它 returns 5
。
即Math.easeOut(1.5625, 1, 10)
-> 5
我的数学能力让我失望了。
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
我有以下功能:
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
的函数,它 returns 5
。
即Math.easeOut(1.5625, 1, 10)
-> 5
我的数学能力让我失望了。
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