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;

ノイズは指定された座標に基づいて値を計算することは理解していますが、パーティクルのx posをmouseYで除算したり、yposをmouseYで除算したりするロジックがわかりません。また、カウンターのように見える「id」が何を表しているのか、次の2行が何を達成しているのかもわかりません。

ありがとう

4

2 に答える 2

2

マウスを動かしてパーティクルの動きを変更します。

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ピクセルの間でランダムに決定されます。

于 2011-04-22T18:30:41.177 に答える
2

cos(radians(d))とsin(radians(d))を実行することにより、コードは角度(d)を単位ベクトルに変換します。たとえば、dが1ラジアンの場合、cos(radians(d))は-1になり、sin(radians(d))は0になるため、角度1ラジアンを単位ベクトル(-1,0)に変換します。

わずかな修正:これは、1ラジアン(約57度)ではなく、円周率ラジアン(180度)の回転です。

于 2012-11-06T11:37:48.073 に答える