使用JavaScript绘制正弦波

使用JavaScript绘制正弦波,javascript,math,canvas,snap.svg,trigonometry,Javascript,Math,Canvas,Snap.svg,Trigonometry,我正在努力创建一个简单的雪模拟,但我在数学上失败得很惨。基本上,当雪花被初始化时,它的x位置在svg画布上的某个地方被随机设置。然后从那里,它直线下降。它应该模拟正弦波(x坐标应该像正弦波一样移动) 我从去年开始就没玩过三角游戏,所以我有点生疏了Math.sin()取我相信的弧度,所以我乘以180,然后除以π转换成度 假设x是雪花的当前x位置,宽度是画布的宽度 x += (Math.sin(((x/width)*(180/Math.PI)))*width) 这有点奏效,但到处都是。我对自己正在

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

我从去年开始就没玩过三角游戏,所以我有点生疏了
Math.sin()
取我相信的弧度,所以我乘以180,然后除以π转换成度

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

x += (Math.sin(((x/width)*(180/Math.PI)))*width)
这有点奏效,但到处都是。我对自己正在做的事情有一个模糊的概念,但我似乎无法将大脑中的数学知识转化为代码

我做错了什么?

应该是:

x += A*Math.sin(F*(y/Height)*2*Math.PI);
其中
A
是振幅,即希望薄片向左和向右移动的像素数(请注意,总移动量为2*A)。F是频率,或者您希望薄片向左和向右移动的频率(我将每个薄片随机设置为2到10)。

应该是:

x += A*Math.sin(F*(y/Height)*2*Math.PI);
其中
A
是振幅,即希望薄片向左和向右移动的像素数(请注意,总移动量为2*A)。F是频率,或者说你希望雪花左右移动的频率(我将每个雪花随机设置为2到10)