Математические формулы для ослабления функций (ElasticEase, CircleEase, BounceEase, BackEase, PowerEase)? - PullRequest
4 голосов
/ 30 апреля 2011

Я могу выяснить формулы для всех полиномиальных функций, как например формула для QuinticEase:

(х - 1) ^ 5 + 1

Но каковы математические формулы для ElasticEase, CircleEase, BounceEase, BackEase или PowerEase?

Все они должны быть в диапазоне 0..1

Ответы [ 3 ]

7 голосов
/ 30 апреля 2011

см. Этот проект JavaScript http://jstween.blogspot.com, внизу вы найдете файл Tween.js, в котором есть необходимые формулы.

4 голосов
/ 30 апреля 2011

Большинство формул можно найти на MSDN , если это не так, проверьте соответствующий сайт easy.

Для более сложных функций, где ссылка не называет функцию, вы можете использовать декомпилятор, такой как ILSpy , чтобы посмотреть код методов EaseInCore соответствующих классов.

1 голос
/ 24 ноября 2014

Я нашел хороший сайт, содержащий реализацию на разных языках: Функции облегчения Роберта Пеннера

Например, код Elastic easing C ++:

float Elastic::easeIn (float t,float b , float c, float d) {
    if (t==0) return b;  if ((t/=d)==1) return b+c;  
    float p=d*.3f;
    float a=c; 
    float s=p/4;
    float postFix =a*pow(2,10*(t-=1)); // this is a fix, again, with post-increment operators
    return -(postFix * sin((t*d-s)*(2*PI)/p )) + b;
}

float Elastic::easeOut(float t,float b , float c, float d) {
    if (t==0) return b;  if ((t/=d)==1) return b+c;  
    float p=d*.3f;
    float a=c; 
    float s=p/4;
    return (a*pow(2,-10*t) * sin( (t*d-s)*(2*PI)/p ) + c + b);  
}

float Elastic::easeInOut(float t,float b , float c, float d) {
    if (t==0) return b;  if ((t/=d/2)==2) return b+c; 
    float p=d*(.3f*1.5f);
    float a=c; 
    float s=p/4;

    if (t < 1) {
        float postFix =a*pow(2,10*(t-=1)); // postIncrement is evil
        return -.5f*(postFix* sin( (t*d-s)*(2*PI)/p )) + b;
    } 
    float postFix =  a*pow(2,-10*(t-=1)); // postIncrement is evil
    return postFix * sin( (t*d-s)*(2*PI)/p )*.5f + c + b;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...