我特别看这个例子:
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点除以鼠标,或y点除以鼠标的逻辑。我也不明白"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个像素之间
通过运行cos(radians(d))和sin(radians(d)),代码将角度(d)转换为单位向量。例如,如果d是1弧度,那么cos(radians(d))将是-1,sin(radians(d))将是0,因此它将1弧度角变为单位向量(-1,0)。
稍微更正一下:那是旋转pi弧度(180度),而不是1弧度(约57度)。