Processing 柏林噪声场是如何工作的?

Processing 柏林噪声场是如何工作的?,processing,perlin-noise,Processing,Perlin Noise,我特别关注这个例子: 下面是它的代码: 我想我需要解释一下这些线在粒子类中的作用: d=(噪声(id,x/mouseY,y/mouseY)-0.5)*mouseX; x+=cos(弧度(d))*s; y+=sin(弧度(d))*s; 我知道noise会根据给定的坐标计算一个值,但我不知道用鼠标键除以粒子的x位置,或者用鼠标键除以y位置的逻辑。我也不明白“id”代表什么,这似乎是一个计数器,或者接下来的两行是什么 谢谢 移动鼠标以更改粒子运动 d似乎是运动的方向。通过将mouseY和mous

我特别关注这个例子:

下面是它的代码:

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

d=(噪声(id,x/mouseY,y/mouseY)-0.5)*mouseX;
x+=cos(弧度(d))*s;
y+=sin(弧度(d))*s;
我知道noise会根据给定的坐标计算一个值,但我不知道用鼠标键除以粒子的x位置,或者用鼠标键除以y位置的逻辑。我也不明白“id”代表什么,这似乎是一个计数器,或者接下来的两行是什么

谢谢

移动鼠标以更改粒子运动

d似乎是运动的方向。通过将mouseY和mouseX放入
d
的计算中,它允许基础字段依赖于鼠标位置。如果对函数本身没有更好的理解,我就不能确切地告诉你mouseY和mouseX在这个领域有什么影响

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

因此,似乎有一些基本的运动场决定了粒子移动的方向。运动场由“噪波”(noise)函数表示,并获取粒子的当前位置、粒子id(可能是为了给每个粒子提供独立的运动,也可能是为了记住粒子运动的历史,并基于该历史记录创建未来运动)和鼠标的当前位置

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

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

轻微修正:旋转pi弧度(180度),而不是1弧度(约57度)