Skip to content

Instantly share code, notes, and snippets.

@grisevg
Created April 21, 2015 20:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save grisevg/b192cbf46a9c5c40773d to your computer and use it in GitHub Desktop.
Save grisevg/b192cbf46a9c5c40773d to your computer and use it in GitHub Desktop.
Easings.hx
package;
class Easings
{
//Standard easing functions
public static inline function easeInQuad(t:Float):Float { return t*t }
public static inline function easeOutQuad(t:Float):Float { return t*(2-t) }
public static inline function easeInOutQuad(t:Float):Float { return t<.5 ? 2*t*t : -1+(4-2*t)*t }
public static inline function easeInCubic(t:Float):Float { return t*t*t }
public static inline function easeOutCubic(t:Float):Float { return (--t)*t*t+1 }
public static inline function easeInOutCubic(t:Float):Float { return t<.5 ? 4*t*t*t : (t-1)*(2*t-2)*(2*t-2)+1 }
public static inline function easeInQuart(t:Float):Float { return t*t*t*t }
public static inline function easeOutQuart(t:Float):Float { return 1-(--t)*t*t*t }
public static inline function easeInOutQuart(t:Float):Float { return t<.5 ? 8*t*t*t*t : 1-8*(--t)*t*t*t }
public static inline function easeInQuint(t:Float):Float { return t*t*t*t*t }
public static inline function easeOutQuint(t:Float):Float { return 1+(--t)*t*t*t*t }
public static inline function easeInOutQuint(t:Float):Float { return t<.5 ? 16*t*t*t*t*t : 1+16*(--t)*t*t*t*t }
//1D bezier function.
public static function bezier(c1:Float, c2:Float, c3:Float, c4:Float, t:Float):Float {
t = 1 - t;
function B1(t) { return t*t*t }
function B2(t) { return 3*t*t*(1-t) }
function B3(t) { return 3*t*(1-t)*(1-t) }
function B4(t) { return (1-t)*(1-t)*(1-t) }
return c1 * B1(t) + c2 * B2(t) + c3 * B3(t) + c4 * B4(t);
}
//Makes a function described with 2D bezier curve. See CSS3 `cubic-bezier` and cubic-bezier.com for more details.
public static inline function makeBezierFunction(c2x, c2y, c3x, c3y):Float->Float
{
return BezierEasing.makeBezierEasing(c2x, c2y, c3x, c3y);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment