反转缓和功能

时间:2015-08-24 21:33:45

标签: javascript algorithm function math easing

我有以下功能:

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的val的函数,它返回5

即。 Math.easeOut(1.5625, 1, 10) - > 5

我的数学技能让我失望。

1 个答案:

答案 0 :(得分: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>';
&#13;
&#13;
&#13;

我通过撤消您的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