CycleInterpolator
的源码如下:
package android.view.animation;
public class CycleInterpolator extends BaseInterpolator {
private float mCycles;
public CycleInterpolator(float cycles) {
mCycles = cycles;
}
public float getInterpolation(float input) {
return (float)(Math.sin(2 * mCycles * Math.PI * input));
}
}
从float getInterpolation(float input)
的实现,可以知道,这个可以用数学函数表达为y=sin(2nπx),x∈[0,1],n∈[-∞,+∞],n是常数
在Matlab的命令窗口中输入如下命令:
x = linspace(0,1,100);
y = sin(2*pi*x);
plot(x,y);
title('y=sin(2πx)')
得到下面的曲线图:
本来y=sin(2nπx)
在[-∞,+∞]
上是周期性曲线,周期为n
,但是我们现在x∈[0,1]
, 所以,构造的时候传入的参数是很有讲究的,通过改变这个参数可以实现很多效果。