我正在看这个例子:

http://www.airtightinteractive.com/demos/processing_js/noisefield08.html

这是它的代码:

http://www.airtightinteractive.com/demos/processing_js/noisefield08.pjs

我想我需要解释这些行在粒子类中的作用:

d=(noise(id,x/mouseY,y/mouseY)-0.5)*mouseX;
x+=cos(radians(d))*s;
y+=sin(radians(d))*s;

我知道噪声是根据给定的坐标来计算值的,但是我不了解将粒子的x位置除以mouseY或将y位置除以mouseY的逻辑。我也不明白“id”是什么意思,或者说后面两行会完成什么。

谢谢

最佳答案

移动鼠标以更改粒子运动。

d似乎是运动的方向。通过将mouseY和mouseX放入d的计算中,它允许基础字段取决于鼠标的位置。如果没有对函数本身的更好的了解,我将无法确切地告诉您mouseY和mouseX对现场的影响。

通过运行cos(radians(d))和sin(radians(d)),代码将角度(d)转换为单位矢量。例如,如果d为1弧度,则cos(radians(d))将为-1,sin(radians(d))将为0,因此它将角度1弧度转换为单位矢量(-1,0)。

因此,似乎存在一些确定粒子移动方向的潜在运动场。运动场由噪声函数表示,并包含粒子的当前位置,粒子ID(可能给每个粒子独立的运动,或者可能记住粒子运动的历史并根据该历史记录将来的运动),并且鼠标的当前位置。

粒子移动的实际距离为s,该距离随机确定为2到7个像素。

07-26 06:06