1 package aurelienribon.tweenengine.equations; 2 3 import aurelienribon.tweenengine.TweenEquation; 4 5 /** 6 * Easing equation based on Robert Penner's work: 7 * http://robertpenner.com/easing/ 8 * @author Aurelien Ribon | http://www.aurelienribon.com/ 9 */ 10 public abstract class Bounce extends TweenEquation { 11 public static final Bounce IN = new Bounce() { 12 @Override 13 public final float compute(float t) { 14 return 1 - OUT.compute(1-t); 15 } 16 17 @Override 18 public String toString() { 19 return "Bounce.IN"; 20 } 21 }; 22 23 public static final Bounce OUT = new Bounce() { 24 @Override 25 public final float compute(float t) { 26 if (t < (1/2.75)) { 27 return 7.5625f*t*t; 28 } else if (t < (2/2.75)) { 29 return 7.5625f*(t-=(1.5f/2.75f))*t + .75f; 30 } else if (t < (2.5/2.75)) { 31 return 7.5625f*(t-=(2.25f/2.75f))*t + .9375f; 32 } else { 33 return 7.5625f*(t-=(2.625f/2.75f))*t + .984375f; 34 } 35 } 36 37 @Override 38 public String toString() { 39 return "Bounce.OUT"; 40 } 41 }; 42 43 public static final Bounce INOUT = new Bounce() { 44 @Override 45 public final float compute(float t) { 46 if (t < 0.5f) return IN.compute(t*2) * .5f; 47 else return OUT.compute(t*2-1) * .5f + 0.5f; 48 } 49 50 @Override 51 public String toString() { 52 return "Bounce.INOUT"; 53 } 54 }; 55 }