float BasicFloatInterpolation::outInQuartInterpolation(float startvalue, float endvalue, float time) { if (time < 0.f) return startvalue; if (time > 1.f) return endvalue; if (time < 0.5f) return outQuartInterpolation(startvalue, (startvalue + endvalue) / 2.f, time * 2.f); else return inQuartInterpolation((startvalue + endvalue) / 2.f, endvalue, time * 2.f - 1.f); }
int BasicIntInterpolation::inOutQuartInterpolation(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 inQuartInterpolation(startvalue, (startvalue + endvalue) / 2.f, time * 2.f); else return outQuartInterpolation((startvalue + endvalue) / 2.f, endvalue, time * 2.f - 1.f); }