使用JavaScript进行正弦波绘制

时间:2014-07-24 21:35:49

标签: javascript math canvas snap.svg sin

我正在努力创建一个简单的雪模拟,但我在数学上失败了。基本上,当雪花被初始化时,它的x位置是在svg画布上的某个地方随机设置的。然后从那里,它直接下降。 模拟正弦波(x坐标应像正弦波一样移动)。

自去年以来,我还没有完成触发,所以我有点生疏了。我相信Math.sin()需要弧度,所以我乘以180,然后除以pi以转换为度数?

假设x是雪花的当前x位置,width是画布的宽度。

x += (Math.sin(((x/width)*(180/Math.PI)))*width)

它有点工作,但它到处都是。我对我正在做的事情有一个模糊的概念,但我似乎无法将数学从我的大脑推向代码。

Here's a JSFiddle:

我做错了什么?

1 个答案:

答案 0 :(得分:3)

应该是:

x += A*Math.sin(F*(y/Height)*2*Math.PI);

其中A是幅度,即你想让薄片左右移动多少像素(注意总移位为2 * A)。 F是频率,或者您希望薄片左右移动的频率(我会在每个薄片的2到10之间随机设置)。