2012-03-07 13 views
9

ブラウン運動を使用して、ランダムに動く粒子群を作成しようとしています。 http://jsfiddle.net/J75Em/16/ブラウン運動と方向の指示

は、これまでのところ私は、ランダムに移動する粒子を持っているが、私はそれがより自然に見えるように前方方向を設定するかどうかはわかりません。

私はx軸とy軸の変化をatanを使って計算しようとしましたが、回転のコメントを外すことでこれを見ることができますが、これはうまくいかないようです。

これはこのタイプの動きに適したアプローチですか?ありがとう。

+0

溶液2を見ることができますあなたが実際にミツバチを使用しているなら、私は本当に不安定になるように1つのセットを持っていて、群れがリーダーに従うようにしましょう。 – Incognito

+0

あなたは少しオッズを操作することができますので、完全にランダムではありません。 85%のランダム、15%のような最後の方向など。私はこれが順方向にもう少し行くようになると思う。 – ajax333221

答えて

8

これはかなりきれいです!

これは正しい方法ですが、実際にはatan2関数を使用する必要があります。これにより、0回のチェックが不要になります。

ATAN2関数はあなた

(1、0)--->

蜂あなたが減算しなければならないので、この開始角度からオフ90度である正のxベクトルから反時計回りの角度を与えます方向から90度。 (どの方向にdyとdx計算を行うかによって、追加する必要があるかもしれません)

方向が急に変化することが分かりましたので、角度の原因となる変更のセットを制限することができますある閾値以下に変化する。これにより、動きが少しスムーズになります。

私は実際には、-pi/8とπ/ 8ラジアンの間の角度とランダムな長さを生成することでそれを実行します。基本的に極座標を使用します。そして、この新しいランダム極性は、あなたが角度で作業する場合、あなたは、ミツバチが特定のエリア内に滞在したい場合は、あなたが強制することができますようにあなたは、より自然な効果を得ることができます

newX = currentX + (randomLength * cos(randomAngle + currentAngle)) and 
newY = currentY + (randomLength * sin(randomAngle + currentAngle)) 

ようなxとyの位置にオフセットを追加しますエリアの中心に向かって偏り、エッジに近づくと近づく。

更新:

だから私はよく見て撮影しました。問題は、あなたが回転を実際には回転を設定することを期待することですは回転に追加されます

これを修正するための2つのオプションがあります。前回と.transformメソッドを使用して回転を設定し、現在の角度

  • の違いによって

    1. 回して

    あなたはここにアクションhttp://jsfiddle.net/c5A2A/

  • +0

    助けてくれてありがとうme232、私はraphaelsの回転を考え出したが、私はブラウン運動がこの場合には適していないかもしれないと思うように始めている。ミツバチは少し不規則になります。あなたの他の方法では、前に病気があります!もう一度ありがとう – michael

    +0

    私は実際に彼らの不規則な動きが好き、彼らは鳴っているように見えます:) –

    +0

    それがRaphaëljsと画像が欠けていたので、フィドルは働いていませんでした。クイックアップデートは次のとおりです:http://jsfiddle.net/brunoimbrizi/c5A2A/54/ – imbrizi

    関連する問題