85#define EASINGS_STATIC_INLINE
87#if defined(EASINGS_STATIC_INLINE)
88 #define EASEDEF static inline
90 #define EASEDEF extern
96 #define PI 3.14159265358979323846f
115EASEDEF float EaseCircIn(
float t,
float b,
float c,
float d) { t /= d;
return (-c*(sqrtf(1.0f - t*t) - 1.0f) + b); }
116EASEDEF float EaseCircOut(
float t,
float b,
float c,
float d) { t = t/d - 1.0f;
return (c*sqrtf(1.0f - t*t) + b); }
119 if ((t/=d/2.0f) < 1.0f)
return (-c/2.0f*(sqrtf(1.0f - t*t) - 1.0f) + b);
120 t -= 2.0f;
return (c/2.0f*(sqrtf(1.0f - t*t) + 1.0f) + b);
125EASEDEF float EaseCubicOut(
float t,
float b,
float c,
float d) { t = t/d - 1.0f;
return (c*(t*t*t + 1.0f) + b); }
128 if ((t/=d/2.0f) < 1.0f)
return (c/2.0f*t*t*t + b);
129 t -= 2.0f;
return (c/2.0f*(t*t*t + 2.0f) + b);
134EASEDEF float EaseQuadOut(
float t,
float b,
float c,
float d) { t /= d;
return (-c*t*(t - 2.0f) + b); }
137 if ((t/=d/2) < 1)
return (((c/2)*(t*t)) + b);
138 return (-c/2.0f*(((t - 1.0f)*(t - 3.0f)) - 1.0f) + b);
142EASEDEF float EaseExpoIn(
float t,
float b,
float c,
float d) {
return (t == 0.0f) ? b : (c*powf(2.0f, 10.0f*(t/d - 1.0f)) + b); }
143EASEDEF float EaseExpoOut(
float t,
float b,
float c,
float d) {
return (t == d) ? (b + c) : (c*(-powf(2.0f, -10.0f*t/d) + 1.0f) + b); }
146 if (t == 0.0f)
return b;
147 if (t == d)
return (b + c);
148 if ((t/=d/2.0f) < 1.0f)
return (c/2.0f*powf(2.0f, 10.0f*(t - 1.0f)) + b);
150 return (c/2.0f*(-powf(2.0f, -10.0f*(t - 1.0f)) + 2.0f) + b);
157 float postFix = t/=d;
158 return (c*(postFix)*t*((s + 1.0f)*t - s) + b);
165 return (c*(t*t*((s + 1.0f)*t + s) + 1.0f) + b);
171 if ((t/=d/2.0f) < 1.0f)
174 return (c/2.0f*(t*t*((s + 1.0f)*t - s)) + b);
177 float postFix = t-=2.0f;
179 return (c/2.0f*((postFix)*t*((s + 1.0f)*t + s) + 2.0f) + b);
185 if ((t/=d) < (1.0f/2.75f))
187 return (c*(7.5625f*t*t) + b);
189 else if (t < (2.0f/2.75f))
191 float postFix = t-=(1.5f/2.75f);
192 return (c*(7.5625f*(postFix)*t + 0.75f) + b);
194 else if (t < (2.5/2.75))
196 float postFix = t-=(2.25f/2.75f);
197 return (c*(7.5625f*(postFix)*t + 0.9375f) + b);
201 float postFix = t-=(2.625f/2.75f);
202 return (c*(7.5625f*(postFix)*t + 0.984375f) + b);
209 if (t < d/2.0f)
return (
EaseBounceIn(t*2.0f, 0.0f, c, d)*0.5f + b);
210 else return (
EaseBounceOut(t*2.0f - d, 0.0f, c, d)*0.5f + c*0.5f + b);
216 if (t == 0.0f)
return b;
217 if ((t/=d) == 1.0f)
return (b + c);
222 float postFix = a*powf(2.0f, 10.0f*(t-=1.0f));
224 return (-(postFix*sinf((t*d-s)*(2.0f*
PI)/p )) + b);
229 if (t == 0.0f)
return b;
230 if ((t/=d) == 1.0f)
return (b + c);
236 return (a*powf(2.0f,-10.0f*t)*sinf((t*d-s)*(2.0f*
PI)/p) + c + b);
241 if (t == 0.0f)
return b;
242 if ((t/=d/2.0f) == 2.0f)
return (b + c);
244 float p = d*(0.3f*1.5f);
250 float postFix = a*powf(2.0f, 10.0f*(t-=1.0f));
251 return -0.5f*(postFix*sinf((t*d-s)*(2.0f*
PI)/p)) + b;
254 float postFix = a*powf(2.0f, -10.0f*(t-=1.0f));
256 return (postFix*sinf((t*d-s)*(2.0f*
PI)/p)*0.5f + c + b);
EASEDEF float EaseElasticInOut(float t, float b, float c, float d)
EASEDEF float EaseCubicInOut(float t, float b, float c, float d)
EASEDEF float EaseCubicIn(float t, float b, float c, float d)
EASEDEF float EaseBackInOut(float t, float b, float c, float d)
EASEDEF float EaseElasticOut(float t, float b, float c, float d)
EASEDEF float EaseBackOut(float t, float b, float c, float d)
EASEDEF float EaseExpoIn(float t, float b, float c, float d)
EASEDEF float EaseLinearIn(float t, float b, float c, float d)
EASEDEF float EaseQuadOut(float t, float b, float c, float d)
EASEDEF float EaseSineInOut(float t, float b, float c, float d)
EASEDEF float EaseQuadInOut(float t, float b, float c, float d)
EASEDEF float EaseSineOut(float t, float b, float c, float d)
EASEDEF float EaseCircIn(float t, float b, float c, float d)
EASEDEF float EaseBounceIn(float t, float b, float c, float d)
EASEDEF float EaseCubicOut(float t, float b, float c, float d)
EASEDEF float EaseLinearOut(float t, float b, float c, float d)
EASEDEF float EaseSineIn(float t, float b, float c, float d)
EASEDEF float EaseQuadIn(float t, float b, float c, float d)
EASEDEF float EaseExpoOut(float t, float b, float c, float d)
EASEDEF float EaseBounceInOut(float t, float b, float c, float d)
EASEDEF float EaseLinearNone(float t, float b, float c, float d)
EASEDEF float EaseCircOut(float t, float b, float c, float d)
EASEDEF float EaseLinearInOut(float t, float b, float c, float d)
EASEDEF float EaseExpoInOut(float t, float b, float c, float d)
EASEDEF float EaseBounceOut(float t, float b, float c, float d)
EASEDEF float EaseCircInOut(float t, float b, float c, float d)
EASEDEF float EaseBackIn(float t, float b, float c, float d)
EASEDEF float EaseElasticIn(float t, float b, float c, float d)