float BasicFloatInterpolation::outInCubicInterpolation(float startvalue, float endvalue, float time) { if (time < 0.f) return startvalue; if (time > 1.f) return endvalue; if (time < 0.5f) return outCubicInterpolation(startvalue, (startvalue + endvalue) / 2.f, time * 2.f); else return inCubicInterpolation((startvalue + endvalue) / 2.f, endvalue, time * 2.f - 1.f); }
int BasicIntInterpolation::inOutCubicInterpolation(float startvalue, float endvalue, float time) { if (time < 0.f) return static_cast<int>(startvalue); if (time > 1.f) return static_cast<int>(endvalue); if (time < 0.5f) return inCubicInterpolation(startvalue, (startvalue + endvalue) / 2.f, time * 2.f); else return outCubicInterpolation((startvalue + endvalue) / 2.f, endvalue, time * 2.f - 1.f); }