在Android上制作正弦波视觉光栅

时间:2014-11-24 20:13:31

标签: android animation

对于我正在开发用于Android平板电脑的项目,我必须创建移动的视觉正弦波光栅。这是一个例子:

Sine wave gratings

(当然,这些是固定的类似物。)

我需要能够修改速度,方向,对比度和空间频率等参数。能够使用不同类型的光栅而不仅仅是线性光栅将是一个优点(例如圆形波纹效应)。

有人可以提出如何在Android中实现此功能的建议吗?感谢。

1 个答案:

答案 0 :(得分:2)

首先需要将正弦函数从[-1,1]映射到[0,1]以匹配颜色值范围。然后在OpenGL(OpenGL ES)中,创建一个代表正弦波单个周期的平面。也就是说,对于这个平面,颜色从黑色变为白色,然后是黑色(或白色黑色白色)。请注意,您需要水平平铺此平面(垂直于条带),因此您需要相应地调整渐变的比例。

要绘制颜色,您可以使用移动的正弦函数,只需将[0,1]映射到RGB 3元组(255,255,255),然后将正弦值i乘以元组并获得(255*i, 255*i, 255*i)作为你的颜色。当i=1为纯白色时,i=0为纯黑色。

如果你想设置对比度以获得宽带纯白色,你需要在y轴上缩放正弦函数,并对该函数应用[0,1]绑定,例如所有大于1的正弦值将被强制为1上限,0也是如此。

对于空间频率,您只需要定义该平面的宽度。

对于速度,您可以定义该平面的动画速度。

除了使用Android OpenGL ES(上面的建议)之外,我认为你不能通过Android SDK的内置功能获得那么大的灵活性。而且,纹波光栅比线性光栅硬得多。现在,我能想到的简单方法是画一个球并从顶部看一个正交相机。

另一方面,如果你不介意像素化那么你可以简单地制作一个Drawable并对其进行缩放和动画。此外,新的Android Lollipop现在支持矢量图像为Drawable,因此您也可以检查出来。

相关问题