我正在尝试使用布朗运动创建一组随机移动的粒子。
http://jsfiddle.net/J75Em/16/
目前,我已经让粒子随机移动,但我不确定如何设置前进方向以使其看起来更自然。
我尝试使用x和y轴的变化来计算旋转角度,可以通过取消旋转注释来查看,但这似乎表现不佳。
对于这种类型的运动,这是正确的方法吗?谢谢。
我尝试使用x和y轴的变化来计算旋转角度,可以通过取消旋转注释来查看,但这似乎表现不佳。
对于这种类型的运动,这是正确的方法吗?谢谢。
这很不错!
你的方法基本正确,但你应该使用atan2函数。这样就不需要任何0检查。
atan2函数会给你一个角度,这个角度是从正向x轴逆时针旋转的。
(1, 0) --->
蜜蜂与起始角度相差90度,所以必须从方向中减去90度。(根据dy和dx计算的方式不同,你可能需要加上)
你可能会发现方向会快速变化,因此可以考虑将下一次变化限制在一组引起角度变化低于某个阈值的变化中。这将使运动更加平滑。
我实际上会生成一个介于-pi/8和pi/8弧度之间的角度和一个随机长度。基本上使用极坐标。然后将这个新的随机极坐标偏移量添加到x和y位置中,如下:
newX = currentX + (randomLength * cos(randomAngle + currentAngle)) and
newY = currentY + (randomLength * sin(randomAngle + currentAngle))