aboutsummaryrefslogtreecommitdiff
path: root/java/api/src/aurelienribon/tweenengine/equations
diff options
context:
space:
mode:
Diffstat (limited to 'java/api/src/aurelienribon/tweenengine/equations')
-rwxr-xr-xjava/api/src/aurelienribon/tweenengine/equations/Back.java59
-rwxr-xr-xjava/api/src/aurelienribon/tweenengine/equations/Bounce.java55
-rwxr-xr-xjava/api/src/aurelienribon/tweenengine/equations/Circ.java47
-rwxr-xr-xjava/api/src/aurelienribon/tweenengine/equations/Cubic.java47
-rwxr-xr-xjava/api/src/aurelienribon/tweenengine/equations/Elastic.java86
-rwxr-xr-xjava/api/src/aurelienribon/tweenengine/equations/Expo.java49
-rwxr-xr-xjava/api/src/aurelienribon/tweenengine/equations/Linear.java22
-rwxr-xr-xjava/api/src/aurelienribon/tweenengine/equations/Quad.java47
-rwxr-xr-xjava/api/src/aurelienribon/tweenengine/equations/Quart.java47
-rwxr-xr-xjava/api/src/aurelienribon/tweenengine/equations/Quint.java47
-rwxr-xr-xjava/api/src/aurelienribon/tweenengine/equations/Sine.java48
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