diff options
Diffstat (limited to 'java/api/src/aurelienribon/tweenengine/equations')
11 files changed, 554 insertions, 0 deletions
diff --git a/java/api/src/aurelienribon/tweenengine/equations/Back.java b/java/api/src/aurelienribon/tweenengine/equations/Back.java new file mode 100755 index 0000000..46385ed --- /dev/null +++ b/java/api/src/aurelienribon/tweenengine/equations/Back.java @@ -0,0 +1,59 @@ +package aurelienribon.tweenengine.equations; + +import aurelienribon.tweenengine.TweenEquation; + +/** + * Easing equation based on Robert Penner's work: + * http://robertpenner.com/easing/ + * @author Aurelien Ribon | http://www.aurelienribon.com/ + */ +public abstract class Back extends TweenEquation { + public static final Back IN = new Back() { + @Override + public final float compute(float t) { + float s = param_s; + return t*t*((s+1)*t - s); + } + + @Override + public String toString() { + return "Back.IN"; + } + }; + + public static final Back OUT = new Back() { + @Override + public final float compute(float t) { + float s = param_s; + return (t-=1)*t*((s+1)*t + s) + 1; + } + + @Override + public String toString() { + return "Back.OUT"; + } + }; + + public static final Back INOUT = new Back() { + @Override + public final float compute(float t) { + float s = param_s; + if ((t*=2) < 1) return 0.5f*(t*t*(((s*=(1.525f))+1)*t - s)); + return 0.5f*((t-=2)*t*(((s*=(1.525f))+1)*t + s) + 2); + } + + @Override + public String toString() { + return "Back.INOUT"; + } + }; + + // ------------------------------------------------------------------------- + + protected float param_s = 1.70158f; + + public Back s(float s) { + param_s = s; + return this; + } +}
\ No newline at end of file diff --git a/java/api/src/aurelienribon/tweenengine/equations/Bounce.java b/java/api/src/aurelienribon/tweenengine/equations/Bounce.java new file mode 100755 index 0000000..3cfc4e3 --- /dev/null +++ b/java/api/src/aurelienribon/tweenengine/equations/Bounce.java @@ -0,0 +1,55 @@ +package aurelienribon.tweenengine.equations; + +import aurelienribon.tweenengine.TweenEquation; + +/** + * Easing equation based on Robert Penner's work: + * http://robertpenner.com/easing/ + * @author Aurelien Ribon | http://www.aurelienribon.com/ + */ +public abstract class Bounce extends TweenEquation { + public static final Bounce IN = new Bounce() { + @Override + public final float compute(float t) { + return 1 - OUT.compute(1-t); + } + + @Override + public String toString() { + return "Bounce.IN"; + } + }; + + public static final Bounce OUT = new Bounce() { + @Override + public final float compute(float t) { + if (t < (1/2.75)) { + return 7.5625f*t*t; + } else if (t < (2/2.75)) { + return 7.5625f*(t-=(1.5f/2.75f))*t + .75f; + } else if (t < (2.5/2.75)) { + return 7.5625f*(t-=(2.25f/2.75f))*t + .9375f; + } else { + return 7.5625f*(t-=(2.625f/2.75f))*t + .984375f; + } + } + + @Override + public String toString() { + return "Bounce.OUT"; + } + }; + + public static final Bounce INOUT = new Bounce() { + @Override + public final float compute(float t) { + if (t < 0.5f) return IN.compute(t*2) * .5f; + else return OUT.compute(t*2-1) * .5f + 0.5f; + } + + @Override + public String toString() { + return "Bounce.INOUT"; + } + }; +}
\ No newline at end of file diff --git a/java/api/src/aurelienribon/tweenengine/equations/Circ.java b/java/api/src/aurelienribon/tweenengine/equations/Circ.java new file mode 100755 index 0000000..63a0145 --- /dev/null +++ b/java/api/src/aurelienribon/tweenengine/equations/Circ.java @@ -0,0 +1,47 @@ +package aurelienribon.tweenengine.equations; + +import aurelienribon.tweenengine.TweenEquation; + +/** + * Easing equation based on Robert Penner's work: + * http://robertpenner.com/easing/ + * @author Aurelien Ribon | http://www.aurelienribon.com/ + */ +public abstract class Circ extends TweenEquation { + public static final Circ IN = new Circ() { + @Override + public final float compute(float t) { + return (float) -Math.sqrt(1 - t*t) - 1; + } + + @Override + public String toString() { + return "Circ.IN"; + } + }; + + public static final Circ OUT = new Circ() { + @Override + public final float compute(float t) { + return (float) Math.sqrt(1 - (t-=1)*t); + } + + @Override + public String toString() { + return "Circ.OUT"; + } + }; + + public static final Circ INOUT = new Circ() { + @Override + public final float compute(float t) { + if ((t*=2) < 1) return -0.5f * ((float)Math.sqrt(1 - t*t) - 1); + return 0.5f * ((float)Math.sqrt(1 - (t-=2)*t) + 1); + } + + @Override + public String toString() { + return "Circ.INOUT"; + } + }; +}
\ No newline at end of file diff --git a/java/api/src/aurelienribon/tweenengine/equations/Cubic.java b/java/api/src/aurelienribon/tweenengine/equations/Cubic.java new file mode 100755 index 0000000..9d86988 --- /dev/null +++ b/java/api/src/aurelienribon/tweenengine/equations/Cubic.java @@ -0,0 +1,47 @@ +package aurelienribon.tweenengine.equations; + +import aurelienribon.tweenengine.TweenEquation; + +/** + * Easing equation based on Robert Penner's work: + * http://robertpenner.com/easing/ + * @author Aurelien Ribon | http://www.aurelienribon.com/ + */ +public abstract class Cubic extends TweenEquation { + public static final Cubic IN = new Cubic() { + @Override + public final float compute(float t) { + return t*t*t; + } + + @Override + public String toString() { + return "Cubic.IN"; + } + }; + + public static final Cubic OUT = new Cubic() { + @Override + public final float compute(float t) { + return (t-=1)*t*t + 1; + } + + @Override + public String toString() { + return "Cubic.OUT"; + } + }; + + public static final Cubic INOUT = new Cubic() { + @Override + public final float compute(float t) { + if ((t*=2) < 1) return 0.5f*t*t*t; + return 0.5f * ((t-=2)*t*t + 2); + } + + @Override + public String toString() { + return "Cubic.INOUT"; + } + }; +}
\ No newline at end of file diff --git a/java/api/src/aurelienribon/tweenengine/equations/Elastic.java b/java/api/src/aurelienribon/tweenengine/equations/Elastic.java new file mode 100755 index 0000000..925993d --- /dev/null +++ b/java/api/src/aurelienribon/tweenengine/equations/Elastic.java @@ -0,0 +1,86 @@ +package aurelienribon.tweenengine.equations; + +import aurelienribon.tweenengine.TweenEquation; + +/** + * Easing equation based on Robert Penner's work: + * http://robertpenner.com/easing/ + * @author Aurelien Ribon | http://www.aurelienribon.com/ + */ +public abstract class Elastic extends TweenEquation { + private static final float PI = 3.14159265f; + + public static final Elastic IN = new Elastic() { + @Override + public final float compute(float t) { + float a = param_a; + float p = param_p; + if (t==0) return 0; if (t==1) return 1; if (!setP) p=.3f; + float s; + if (!setA || a < 1) { a=1; s=p/4; } + else s = p/(2*PI) * (float)Math.asin(1/a); + return -(a*(float)Math.pow(2,10*(t-=1)) * (float)Math.sin( (t-s)*(2*PI)/p )); + } + + @Override + public String toString() { + return "Elastic.IN"; + } + }; + + public static final Elastic OUT = new Elastic() { + @Override + public final float compute(float t) { + float a = param_a; + float p = param_p; + if (t==0) return 0; if (t==1) return 1; if (!setP) p=.3f; + float s; + if (!setA || a < 1) { a=1; s=p/4; } + else s = p/(2*PI) * (float)Math.asin(1/a); + return a*(float)Math.pow(2,-10*t) * (float)Math.sin( (t-s)*(2*PI)/p ) + 1; + } + + @Override + public String toString() { + return "Elastic.OUT"; + } + }; + + public static final Elastic INOUT = new Elastic() { + @Override + public final float compute(float t) { + float a = param_a; + float p = param_p; + if (t==0) return 0; if ((t*=2)==2) return 1; if (!setP) p=.3f*1.5f; + float s; + if (!setA || a < 1) { a=1; s=p/4; } + else s = p/(2*PI) * (float)Math.asin(1/a); + if (t < 1) return -.5f*(a*(float)Math.pow(2,10*(t-=1)) * (float)Math.sin( (t-s)*(2*PI)/p )); + return a*(float)Math.pow(2,-10*(t-=1)) * (float)Math.sin( (t-s)*(2*PI)/p )*.5f + 1; + } + + @Override + public String toString() { + return "Elastic.INOUT"; + } + }; + + // ------------------------------------------------------------------------- + + protected float param_a; + protected float param_p; + protected boolean setA = false; + protected boolean setP = false; + + public Elastic a(float a) { + param_a = a; + this.setA = true; + return this; + } + + public Elastic p(float p) { + param_p = p; + this.setP = true; + return this; + } +}
\ No newline at end of file diff --git a/java/api/src/aurelienribon/tweenengine/equations/Expo.java b/java/api/src/aurelienribon/tweenengine/equations/Expo.java new file mode 100755 index 0000000..38a6a00 --- /dev/null +++ b/java/api/src/aurelienribon/tweenengine/equations/Expo.java @@ -0,0 +1,49 @@ +package aurelienribon.tweenengine.equations; + +import aurelienribon.tweenengine.TweenEquation; + +/** + * Easing equation based on Robert Penner's work: + * http://robertpenner.com/easing/ + * @author Aurelien Ribon | http://www.aurelienribon.com/ + */ +public abstract class Expo extends TweenEquation { + public static final Expo IN = new Expo() { + @Override + public final float compute(float t) { + return (t==0) ? 0 : (float) Math.pow(2, 10 * (t - 1)); + } + + @Override + public String toString() { + return "Expo.IN"; + } + }; + + public static final Expo OUT = new Expo() { + @Override + public final float compute(float t) { + return (t==1) ? 1 : -(float) Math.pow(2, -10 * t) + 1; + } + + @Override + public String toString() { + return "Expo.OUT"; + } + }; + + public static final Expo INOUT = new Expo() { + @Override + public final float compute(float t) { + if (t==0) return 0; + if (t==1) return 1; + if ((t*=2) < 1) return 0.5f * (float) Math.pow(2, 10 * (t - 1)); + return 0.5f * (-(float)Math.pow(2, -10 * --t) + 2); + } + + @Override + public String toString() { + return "Expo.INOUT"; + } + }; +}
\ No newline at end of file diff --git a/java/api/src/aurelienribon/tweenengine/equations/Linear.java b/java/api/src/aurelienribon/tweenengine/equations/Linear.java new file mode 100755 index 0000000..1f95103 --- /dev/null +++ b/java/api/src/aurelienribon/tweenengine/equations/Linear.java @@ -0,0 +1,22 @@ +package aurelienribon.tweenengine.equations; + +import aurelienribon.tweenengine.TweenEquation; + +/** + * Easing equation based on Robert Penner's work: + * http://robertpenner.com/easing/ + * @author Aurelien Ribon | http://www.aurelienribon.com/ + */ +public abstract class Linear extends TweenEquation { + public static final Linear INOUT = new Linear() { + @Override + public float compute(float t) { + return t; + } + + @Override + public String toString() { + return "Linear.INOUT"; + } + }; +} diff --git a/java/api/src/aurelienribon/tweenengine/equations/Quad.java b/java/api/src/aurelienribon/tweenengine/equations/Quad.java new file mode 100755 index 0000000..d015112 --- /dev/null +++ b/java/api/src/aurelienribon/tweenengine/equations/Quad.java @@ -0,0 +1,47 @@ +package aurelienribon.tweenengine.equations; + +import aurelienribon.tweenengine.TweenEquation; + +/** + * Easing equation based on Robert Penner's work: + * http://robertpenner.com/easing/ + * @author Aurelien Ribon | http://www.aurelienribon.com/ + */ +public abstract class Quad extends TweenEquation { + public static final Quad IN = new Quad() { + @Override + public final float compute(float t) { + return t*t; + } + + @Override + public String toString() { + return "Quad.IN"; + } + }; + + public static final Quad OUT = new Quad() { + @Override + public final float compute(float t) { + return -t*(t-2); + } + + @Override + public String toString() { + return "Quad.OUT"; + } + }; + + public static final Quad INOUT = new Quad() { + @Override + public final float compute(float t) { + if ((t*=2) < 1) return 0.5f*t*t; + return -0.5f * ((--t)*(t-2) - 1); + } + + @Override + public String toString() { + return "Quad.INOUT"; + } + }; +}
\ No newline at end of file diff --git a/java/api/src/aurelienribon/tweenengine/equations/Quart.java b/java/api/src/aurelienribon/tweenengine/equations/Quart.java new file mode 100755 index 0000000..826eebb --- /dev/null +++ b/java/api/src/aurelienribon/tweenengine/equations/Quart.java @@ -0,0 +1,47 @@ +package aurelienribon.tweenengine.equations; + +import aurelienribon.tweenengine.TweenEquation; + +/** + * Easing equation based on Robert Penner's work: + * http://robertpenner.com/easing/ + * @author Aurelien Ribon | http://www.aurelienribon.com/ + */ +public abstract class Quart extends TweenEquation { + public static final Quart IN = new Quart() { + @Override + public final float compute(float t) { + return t*t*t*t; + } + + @Override + public String toString() { + return "Quart.IN"; + } + }; + + public static final Quart OUT = new Quart() { + @Override + public final float compute(float t) { + return -((t-=1)*t*t*t - 1); + } + + @Override + public String toString() { + return "Quart.OUT"; + } + }; + + public static final Quart INOUT = new Quart() { + @Override + public final float compute(float t) { + if ((t*=2) < 1) return 0.5f*t*t*t*t; + return -0.5f * ((t-=2)*t*t*t - 2); + } + + @Override + public String toString() { + return "Quart.INOUT"; + } + }; +}
\ No newline at end of file diff --git a/java/api/src/aurelienribon/tweenengine/equations/Quint.java b/java/api/src/aurelienribon/tweenengine/equations/Quint.java new file mode 100755 index 0000000..80e2412 --- /dev/null +++ b/java/api/src/aurelienribon/tweenengine/equations/Quint.java @@ -0,0 +1,47 @@ +package aurelienribon.tweenengine.equations; + +import aurelienribon.tweenengine.TweenEquation; + +/** + * Easing equation based on Robert Penner's work: + * http://robertpenner.com/easing/ + * @author Aurelien Ribon | http://www.aurelienribon.com/ + */ +public abstract class Quint extends TweenEquation { + public static final Quint IN = new Quint() { + @Override + public final float compute(float t) { + return t*t*t*t*t; + } + + @Override + public String toString() { + return "Quint.IN"; + } + }; + + public static final Quint OUT = new Quint() { + @Override + public final float compute(float t) { + return (t-=1)*t*t*t*t + 1; + } + + @Override + public String toString() { + return "Quint.OUT"; + } + }; + + public static final Quint INOUT = new Quint() { + @Override + public final float compute(float t) { + if ((t*=2) < 1) return 0.5f*t*t*t*t*t; + return 0.5f*((t-=2)*t*t*t*t + 2); + } + + @Override + public String toString() { + return "Quint.INOUT"; + } + }; +}
\ No newline at end of file diff --git a/java/api/src/aurelienribon/tweenengine/equations/Sine.java b/java/api/src/aurelienribon/tweenengine/equations/Sine.java new file mode 100755 index 0000000..a4aec5c --- /dev/null +++ b/java/api/src/aurelienribon/tweenengine/equations/Sine.java @@ -0,0 +1,48 @@ +package aurelienribon.tweenengine.equations; + +import aurelienribon.tweenengine.TweenEquation; + +/** + * Easing equation based on Robert Penner's work: + * http://robertpenner.com/easing/ + * @author Aurelien Ribon | http://www.aurelienribon.com/ + */ +public abstract class Sine extends TweenEquation { + private static final float PI = 3.14159265f; + + public static final Sine IN = new Sine() { + @Override + public final float compute(float t) { + return (float) -Math.cos(t * (PI/2)) + 1; + } + + @Override + public String toString() { + return "Sine.IN"; + } + }; + + public static final Sine OUT = new Sine() { + @Override + public final float compute(float t) { + return (float) Math.sin(t * (PI/2)); + } + + @Override + public String toString() { + return "Sine.OUT"; + } + }; + + public static final Sine INOUT = new Sine() { + @Override + public final float compute(float t) { + return -0.5f * ((float) Math.cos(PI*t) - 1); + } + + @Override + public String toString() { + return "Sine.INOUT"; + } + }; +}
\ No newline at end of file |