2011-04-22 55 views
3

我期待在這個例子中,特別是:珀林噪聲場是如何工作的?

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; 

據我所知,噪音計算一個val ue基於給定的座標,但是我沒有得到用鼠標Y分割粒子的x pos或者通過mouseY分割y pos的邏輯。我也不明白什麼是'id',這似乎是一個櫃檯代表,或者接下來的兩行代表什麼。

由於

回答

2

移動鼠標來改變粒子的運動。

d似乎是運動的方向。通過將mouseY和mouseX放入d的計算中,它允許底層字段取決於鼠標的位置。如果沒有對函數本身的更好的理解,我不能確切地告訴你mouseY和mouseX對該領域有什麼影響。通過運行cos(弧度(d))和sin(弧度(d)),代碼將角度(d)轉換爲單位矢量。例如,如果d爲1弧度,則cos(弧度(d))爲-1,sin(弧度(d))爲0,因此它將角度1弧度轉換爲單位矢量(-1,0)。

因此,似乎存在一些確定顆粒移動方向的基礎運動場。運動場由噪聲函數表示,並接受粒子的當前位置,粒子ID(可能爲每個粒子提供獨立運動,或者可能記住粒子運動的歷史並基於該歷史的未來運動)以及鼠標的當前位置。

粒子移動的實際距離是s,隨機確定的距離在2到7個像素之間。

2

通過運行cos(弧度(d))和sin(弧度(d)),代碼將角度(d)轉換爲單位矢量。例如,如果d爲1弧度,則cos(弧度(d))爲-1,sin(弧度(d))爲0,因此它將角度1弧度轉換爲單位矢量(-1,0)。

輕微校正:這是一個π弧度(180度),而不是1弧度(約57度)的旋轉。

+0

這應該作爲評論張貼在接受的答案。 – 2014-01-04 14:28:08