package it.sephiroth.android.library.easing;
public class Back implements Easing {
@Override
public double easeOut(double time, double start, double end, double duration) {
return easeOut(time, start, end, duration, 0);
}
@Override
public double easeIn(double time, double start, double end, double duration) {
return easeIn(time, start, end, duration, 0);
}
@Override
public double easeInOut(double time, double start, double end, double duration) {
return easeInOut(time, start, end, duration, 0.9);
}
public double easeIn(double t, double b, double c, double d, double s) {
if (s == 0) s = 1.70158;
return c * (t /= d) * t * ((s + 1) * t - s) + b;
}
public double easeOut(double t, double b, double c, double d, double s) {
if (s == 0) s = 1.70158;
return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;
}
public double easeInOut(double t, double b, double c, double d, double s) {
if (s == 0) s = 1.70158;
if ((t /= d / 2) < 1) return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b;
return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b;
}
}