Files
renderd7/external/tween-engine/src/equations/Bounce.cpp
2021-07-23 13:58:16 +00:00

43 lines
1.2 KiB
C++

//
// Bounce.cpp
//
// This code is derived from Universal Tween Engine
// Licensed under Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0
//
#include <TweenEngine/equations/Bounce.h>
namespace TweenEngine
{
inline float outBounce(float t) {
if (t < (1/2.75)) {
return 7.5625f*t*t;
} else if (t < (2/2.75)) {
t = t - (1.5 / 2.75);
return (7.5625 * t * t + 0.75);
} else if (t < (2.5/2.75)) {
t = t - (2.25 / 2.75);
return (7.5625 * t * t + 0.9375);
} else {
t = t - (2.625 / 2.75);
return (7.5625 * t * t + 0.984375);
}
}
inline float inBounce(float t) {
return 1 - outBounce(1-t);
}
float BounceIn::compute(float t) { return inBounce(t); }
const char *BounceIn::toString() { return "Bounce.IN"; }
float BounceOut::compute(float t) { return outBounce(t); }
const char *BounceOut::toString() { return "Bounce.OUT"; }
float BounceInOut::compute(float t) {
if (t < 0.5f) return (inBounce(t*2) * 0.5f);
else return (outBounce(t*2-1) * 0.5f + 0.5f);
}
const char *BounceInOut::toString() { return "Bounce.INOUT"; }
}