动画曲线总结

                                                动画曲线总结

      研究原因:希望作出一条类似android OvershootInterpolator 的动画曲线,OvershootInterpolator 动画曲线的不足之处就是感觉前期过快,后期过慢,虽然可以调Tension值,但tension值过小,过头量也会过小,不符合需求。

 

      先分析一下OvershootInterpolator 的动画曲线:

      OvershootInterpolator 动画曲线公式:x * x * ((mTension + 1) *x + mTension) + 1.0f,通过一次求导y‘=3(mTension+1)*x*x+2*mTension*x,可得出斜率为0的两个点(x=0、x=-2*mTension /3(mTension +1)),通过二次求导y''=6*(mTension+1)*x+2*mTension,可得曲线斜率变化趋势(y'’大于或小于0)。mTension控制非x=0的0斜率点位置。

 

                                                

 

       贝塞尔曲线分析:
1. 假设曲线的开始和结束点为(0,0)、(1,1),图中C1和C2为两个控制点,曲线的控制因素分析:

       1).由于我要求的曲线结束点的斜率要为0,而且y值确定为1,所以C2的位置仅由x轴控制。

       2).由于我对C1的y值没有直接的要求,但对初始速度有直接的要求,所以C1的y值我间接的使用斜率来控制或决定,x轴就不用说肯定是一个决定因素。

       综上所述,我使用三个参数来决定贝塞尔曲线的形状:开始点的斜率、C1的x值、C2的x值。

        贝塞尔曲线的一篇很好的分析博客: http://blog.csdn.net/GnuDoyng/archive/2005/02/23/299008.aspx

 

                                     动画曲线总结

          需求是b点与c点斜率为0,a点斜率和b点的位置有要求。我的想法是ab段和bc段都使用一条二次方或三次方曲线。

 

你可能感兴趣的:(android)