2009-07-31 15:38:12 +00:00
|
|
|
/*
|
|
|
|
* Copyright 2008, Haiku Inc. All rights reserved.
|
|
|
|
* Distributed under the terms of the MIT License.
|
|
|
|
*
|
|
|
|
* Authors:
|
|
|
|
* Alexandre Deckner <alex@zappotek.com>
|
|
|
|
*/
|
|
|
|
|
|
|
|
// Some math utils, useful for animation
|
|
|
|
|
|
|
|
|
|
|
|
#include "MathUtils.h"
|
|
|
|
|
2009-08-01 09:39:46 +00:00
|
|
|
#include <math.h>
|
|
|
|
|
2009-07-31 15:38:12 +00:00
|
|
|
|
|
|
|
float
|
2009-11-05 09:37:45 +00:00
|
|
|
MathUtils::EaseInOutCubic(float time, float start, float distance,
|
|
|
|
float duration)
|
2009-07-31 15:38:12 +00:00
|
|
|
{
|
2009-11-05 09:37:45 +00:00
|
|
|
time /= duration / 2.0;
|
|
|
|
if (time < 1.0)
|
|
|
|
return distance / 2.0 * time * time * time + start;
|
|
|
|
time -= 2.0;
|
|
|
|
return distance / 2.0 * (time * time * time + 2.0) + start;
|
2009-07-31 15:38:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
float
|
2009-11-05 09:37:45 +00:00
|
|
|
MathUtils::EaseInOutQuart(float time, float start, float distance,
|
|
|
|
float duration)
|
2009-07-31 15:38:12 +00:00
|
|
|
{
|
2009-11-05 09:37:45 +00:00
|
|
|
time /= duration / 2;
|
2009-07-31 15:38:12 +00:00
|
|
|
|
2009-11-05 09:37:45 +00:00
|
|
|
if (time < 1)
|
|
|
|
return distance / 2 * time * time * time * time + start;
|
2009-07-31 15:38:12 +00:00
|
|
|
|
2009-11-05 09:37:45 +00:00
|
|
|
time -= 2;
|
2009-07-31 15:38:12 +00:00
|
|
|
|
2009-11-05 09:37:45 +00:00
|
|
|
return -distance / 2 * (time * time * time * time - 2) + start;
|
2009-07-31 15:38:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
float
|
2009-11-05 09:37:45 +00:00
|
|
|
MathUtils::EaseInOutQuint(float time, float start, float distance,
|
|
|
|
float duration)
|
2009-07-31 15:38:12 +00:00
|
|
|
{
|
2009-11-05 09:37:45 +00:00
|
|
|
time /= duration / 2;
|
|
|
|
if (time < 1)
|
|
|
|
return distance / 2 * time * time * time * time * time + start;
|
|
|
|
time -= 2;
|
|
|
|
return distance / 2 *(time * time * time * time * time + 2) + start;
|
2009-07-31 15:38:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
float
|
2009-11-05 09:37:45 +00:00
|
|
|
MathUtils::EaseInOutSine(float time, float start, float distance,
|
|
|
|
float duration)
|
2009-07-31 15:38:12 +00:00
|
|
|
{
|
2009-11-05 09:37:45 +00:00
|
|
|
return -distance / 2 * (cos(3.14159 * time / distance) - 1) + start;
|
2009-07-31 15:38:12 +00:00
|
|
|
}
|