我可以找出所有多项式函数的公式, 像例如QuinticEase的公式是:
(x - 1)^ 5 + 1
但ElasticEase,CircleEase,BounceEase,BackEase或PowerEase的数学公式是什么?
它们都应该在0..1
的范围内答案 0 :(得分:7)
看到这个JavaScript项目http://jstween.blogspot.com,在底部你会找到里面需要公式的Tween.js文件。
答案 1 :(得分:4)
答案 2 :(得分:1)
我发现包含不同语言实现的网站很好:Robert Penner's Easing Functions
例如,弹性缓动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;
}