Created
April 20, 2018 19:11
-
-
Save hamaluik/f61e287bb762eef6d08ea4abc708fa65 to your computer and use it in GitHub Desktop.
This file contains 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
/** | |
@see https://github.com/armory3d/iron/blob/3e2b6f8d89e5136801bd5dc43172127926847a83/Sources/iron/system/Tween.hx#L134-L158 | |
*/ | |
class Ease { | |
static inline var DEFAULT_OVERSHOOT:Float = 1.70158; | |
public static function linear(k:Float):Float { return k; } | |
public static function sineIn(k:Float):Float { if(k == 0){ return 0; } else if(k == 1){ return 1; } else { return 1 - Math.cos(k * Math.PI / 2); } } | |
public static function sineOut(k:Float):Float { if(k == 0){ return 0; } else if(k == 1){ return 1; } else { return Math.sin(k * (Math.PI * 0.5)); } } | |
public static function sineInOut(k:Float):Float { if(k == 0){ return 0; } else if(k == 1){ return 1; } else { return -0.5 * (Math.cos(Math.PI * k) - 1); } } | |
public static function quadIn(k:Float):Float { return k * k; } | |
public static function quadOut(k:Float):Float { return -k * (k - 2); } | |
public static function quadInOut(k:Float):Float { return (k < 0.5) ? 2 * k * k : -2 * ((k -= 1) * k) + 1; } | |
public static function cubicIn(k:Float):Float { return k * k * k; } | |
public static function cubicOut(k:Float):Float { return (k = k - 1) * k * k + 1; } | |
public static function cubicInOut(k:Float):Float { return ((k *= 2) < 1) ? 0.5 * k * k * k : 0.5 * ((k -= 2) * k * k + 2); } | |
public static function quartIn(k:Float):Float { return (k *= k) * k; } | |
public static function quartOut(k:Float):Float { return 1 - (k = (k = k - 1) * k) * k; } | |
public static function quartInOut(k:Float):Float { return ((k *= 2) < 1) ? 0.5 * (k *= k) * k : -0.5 * ((k = (k -= 2) * k) * k - 2); } | |
public static function quintIn(k:Float):Float { return k * (k *= k) * k; } | |
public static function quintOut(k:Float):Float { return (k = k - 1) * (k *= k) * k + 1; } | |
public static function quintInOut(k:Float):Float { return ((k *= 2) < 1) ? 0.5 * k * (k *= k) * k : 0.5 * (k -= 2) * (k *= k) * k + 1; } | |
public static function expoIn(k:Float):Float { return k == 0 ? 0 : Math.pow(2, 10 * (k - 1)); } | |
public static function expoOut(k:Float):Float { return k == 1 ? 1 : (1 - Math.pow(2, -10 * k)); } | |
public static function expoInOut(k:Float):Float { if (k == 0) { return 0; } if (k == 1) { return 1; } if ((k /= 1 / 2.0) < 1.0) { return 0.5 * Math.pow(2, 10 * (k - 1)); } return 0.5 * (2 - Math.pow(2, -10 * --k)); } | |
public static function circIn(k:Float):Float { return -(Math.sqrt(1 - k * k) - 1); } | |
public static function circOut(k:Float):Float { return Math.sqrt(1 - (k - 1) * (k - 1)); } | |
public static function circInOut(k:Float):Float { return k <= .5 ? (Math.sqrt(1 - k * k * 4) - 1) / -2 : (Math.sqrt(1 - (k * 2 - 2) * (k * 2 - 2)) + 1) / 2; } | |
public static function backIn(k:Float):Float { if (k == 0) { return 0; } else if (k == 1) { return 1; } else { return k * k * ((DEFAULT_OVERSHOOT + 1) * k - DEFAULT_OVERSHOOT); } } | |
public static function backOut(k:Float):Float { if (k == 0) { return 0; } else if (k == 1) { return 1; } else { return ((k = k - 1) * k * ((DEFAULT_OVERSHOOT + 1) * k + DEFAULT_OVERSHOOT) + 1); } } | |
public static function backInOut(k:Float):Float { if (k == 0) { return 0; } else if (k == 1) { return 1; } else if ((k *= 2) < 1) { return (0.5 * (k * k * (((DEFAULT_OVERSHOOT * 1.525) + 1) * k - DEFAULT_OVERSHOOT * 1.525))); } else { return (0.5 * ((k -= 2) * k * (((DEFAULT_OVERSHOOT * 1.525) + 1) * k + DEFAULT_OVERSHOOT * 1.525) + 2)); } } | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment