Created
April 21, 2023 01:30
-
-
Save berkaytumal/c2ad29b7c68ed38e65fc12683cc4e120 to your computer and use it in GitHub Desktop.
Easing Functions
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const easing = { | |
easeInSine(t) { | |
return -1 * Math.cos(t * (Math.PI / 2)) + 1; | |
}, | |
easeOutSine(t) { | |
return Math.sin(t * (Math.PI / 2)); | |
}, | |
easeInOutSine(t) { | |
return -0.5 * (Math.cos(Math.PI * t) - 1); | |
}, | |
easeInQuad(t) { | |
return t * t; | |
}, | |
easeOutQuad(t) { | |
return t * (2 - t); | |
}, | |
easeInOutQuad(t) { | |
return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t; | |
}, | |
easeInCubic(t) { | |
return t * t * t; | |
}, | |
easeOutCubic(t) { | |
var t1 = t - 1; | |
return t1 * t1 * t1 + 1; | |
}, | |
easeInOutCubic(t) { | |
return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1; | |
}, | |
easeInQuart(t) { | |
return t * t * t * t; | |
}, | |
easeOutQuart(t) { | |
var t1 = t - 1; | |
return 1 - t1 * t1 * t1 * t1; | |
}, | |
easeInOutQuart(t) { | |
var t1 = t - 1; | |
return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * t1 * t1 * t1 * t1; | |
}, | |
easeInQuint(t) { | |
return t * t * t * t * t; | |
}, | |
easeOutQuint(t) { | |
var t1 = t - 1; | |
return 1 + t1 * t1 * t1 * t1 * t1; | |
}, | |
easeInOutQuint(t) { | |
var t1 = t - 1; | |
return t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * t1 * t1 * t1 * t1 * t1; | |
}, | |
easeInExpo(t) { | |
if (t === 0) { | |
return 0; | |
} | |
return Math.pow(2, 10 * (t - 1)); | |
}, | |
easeOutExpo(t) { | |
if (t === 1) { | |
return 1; | |
} | |
return -Math.pow(2, -10 * t) + 1; | |
}, | |
easeInOutExpo(t) { | |
if (t === 0 || t === 1) { | |
return t; | |
} | |
var scaledTime = t * 2; | |
var scaledTime1 = scaledTime - 1; | |
if (scaledTime < 1) { | |
return 0.5 * Math.pow(2, 10 * scaledTime1); | |
} | |
return 0.5 * (-Math.pow(2, -10 * scaledTime1) + 2); | |
}, | |
easeInCirc(t) { | |
var scaledTime = t / 1; | |
return -1 * (Math.sqrt(1 - scaledTime * t) - 1); | |
}, | |
easeOutCirc(t) { | |
var t1 = t - 1; | |
return Math.sqrt(1 - t1 * t1); | |
}, | |
easeInOutCirc(t) { | |
var scaledTime = t * 2; | |
var scaledTime1 = scaledTime - 2; | |
if (scaledTime < 1) { | |
return -0.5 * (Math.sqrt(1 - scaledTime * scaledTime) - 1); | |
} | |
return 0.5 * (Math.sqrt(1 - scaledTime1 * scaledTime1) + 1); | |
}, | |
easeInBack(t) { | |
var magnitude = arguments.length <= 1 || arguments[1] === undefined ? 1.70158 : arguments[1]; | |
var scaledTime = t / 1; | |
return scaledTime * scaledTime * ((magnitude + 1) * scaledTime - magnitude); | |
}, | |
easeOutBack(t) { | |
var magnitude = arguments.length <= 1 || arguments[1] === undefined ? 1.70158 : arguments[1]; | |
var scaledTime = t / 1 - 1; | |
return scaledTime * scaledTime * ((magnitude + 1) * scaledTime + magnitude) + 1; | |
}, easeInOutBack(t) { | |
var magnitude = arguments.length <= 1 || arguments[1] === undefined ? 1.70158 : arguments[1]; | |
var scaledTime = t * 2; | |
var scaledTime2 = scaledTime - 2; | |
var s = magnitude * 1.525; | |
if (scaledTime < 1) { | |
return 0.5 * scaledTime * scaledTime * ((s + 1) * scaledTime - s); | |
} | |
return 0.5 * (scaledTime2 * scaledTime2 * ((s + 1) * scaledTime2 + s) + 2); | |
}, easeInElastic(t) { | |
var magnitude = arguments.length <= 1 || arguments[1] === undefined ? 0.7 : arguments[1]; | |
if (t === 0 || t === 1) { | |
return t; | |
} | |
var scaledTime = t / 1; | |
var scaledTime1 = scaledTime - 1; | |
var p = 1 - magnitude; | |
var s = p / (2 * Math.PI) * Math.asin(1); | |
return -(Math.pow(2, 10 * scaledTime1) * Math.sin((scaledTime1 - s) * (2 * Math.PI) / p)); | |
}, | |
easeOutElastic(t) { | |
var magnitude = arguments.length <= 1 || arguments[1] === undefined ? 0.7 : arguments[1]; | |
var p = 1 - magnitude; | |
var scaledTime = t * 2; | |
if (t === 0 || t === 1) { | |
return t; | |
} | |
var s = p / (2 * Math.PI) * Math.asin(1); | |
return Math.pow(2, -10 * scaledTime) * Math.sin((scaledTime - s) * (2 * Math.PI) / p) + 1; | |
}, easeInOutElastic(t) { | |
var magnitude = arguments.length <= 1 || arguments[1] === undefined ? 0.65 : arguments[1]; | |
var p = 1 - magnitude; | |
if (t === 0 || t === 1) { | |
return t; | |
} | |
var scaledTime = t * 2; | |
var scaledTime1 = scaledTime - 1; | |
var s = p / (2 * Math.PI) * Math.asin(1); | |
if (scaledTime < 1) { | |
return -0.5 * (Math.pow(2, 10 * scaledTime1) * Math.sin((scaledTime1 - s) * (2 * Math.PI) / p)); | |
} | |
return Math.pow(2, -10 * scaledTime1) * Math.sin((scaledTime1 - s) * (2 * Math.PI) / p) * 0.5 + 1; | |
}, easeOutBounce(t) { | |
var scaledTime = t / 1; | |
if (scaledTime < 1 / 2.75) { | |
return 7.5625 * scaledTime * scaledTime; | |
} else if (scaledTime < 2 / 2.75) { | |
var scaledTime2 = scaledTime - 1.5 / 2.75; | |
return 7.5625 * scaledTime2 * scaledTime2 + 0.75; | |
} else if (scaledTime < 2.5 / 2.75) { | |
var _scaledTime = scaledTime - 2.25 / 2.75; | |
return 7.5625 * _scaledTime * _scaledTime + 0.9375; | |
} else { | |
var _scaledTime2 = scaledTime - 2.625 / 2.75; | |
return 7.5625 * _scaledTime2 * _scaledTime2 + 0.984375; | |
} | |
}, | |
easeInBounce(t) { | |
return 1 - easeOutBounce(1 - t); | |
}, | |
easeInOutBounce(t) { | |
if (t < 0.5) { | |
return easeInBounce(t * 2) * 0.5; | |
} | |
return easeOutBounce(t * 2 - 1) * 0.5 + 0.5; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment