ease动画

简单的缓速函数:

y = y+(b-y)*c   ,y为要控制的量,比如坐标,b是目标点,c是参数,一般在(0,1)之间。

由于b越来越大,所以b-y越来越小,物体移动的速度也越来越慢

关于ease的动画

#define pow2(x) ((x)*(x))

#define pow3(x) ((x)*(x)*(x))

利用指数函数(x的n次方)可以构造一大堆easein的效果,再根据他们的轴对称或者中心对称做翻转和位移,又可以构造出其对应的easeout效果:


easyin


easyout

利用平方根(Math.sqrt)或者立方根来实现这种非线性关系:


平方根

sin或者cos函数可以通过调节参数构造两种运动趋势(下面主要给函数表达式):

easein: y = 1-cos(0.5πx)

easeout: y = sin(0.5πx)

通过幂函数或者对数函数:

easein: y = 2^(10x-10) (当x=0时,y=0)

easeout: y = 1-2^(-10x) (当x=1时,y=1)

附两个函数:

public double easeIn (double t, double b, double c) {

  return c*pow3(t) + b;

}


public double easeOut (double t, double b, double c) {

  return c*(pow3(t-1) + 1) + b;

}

public double easeInOut (double t, double b, double c) {

if ( (t*2) < 1)

  return c/2*pow3(t*2) + b; //将easyin函数缩小一半

else

  return c/2*(pow3(t*2-2) + 2) + b;

}

函数平移、对称、缩放

横向平移变换:函数y=f(x)的图象沿x轴方向平移 |m|个单位,得到函数y=f(x+m)(m≠0)的图象;左加右减;如y = x^2 向右平移则函数变为:y=(x-1)^2

纵向平移变换:将函数y=f(x)的图象沿y轴方向平移|n|个单位,得到函数y=f(x)+n(n≠0)的图象;上加下减

对称变换:作函数y=f(x)的图象关于x轴的对称图象,得到函数y=-f(x)的图象。)作函数y=f(x)的图象关于y轴的对称图象,得到函数y=f(-x)的图象。作函数y=f(x)的图象关于原点的对称图象,得到函数y=-f(-x)的图象。作函数y=f(x)的图象关于直线y=x的对称图象,得到函数y=f^-1(x)的图象。作函数y=f(x)的图象关于直线x=a的对称图象,得到函数y=f (2a-x)的图象。

伸缩变换:函数图象伸长为原来的k倍,相应的变量乘以1/k ,函数图象缩短为原来的 k 倍,相应乘以k


1

你可能感兴趣的:(ease动画)