これはかなりきれいです!
これは正しい方法ですが、実際には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メソッドを使用して回転を設定し、現在の角度
の違いによって
回して
あなたはここにアクションhttp://jsfiddle.net/c5A2A/
溶液2を見ることができますあなたが実際にミツバチを使用しているなら、私は本当に不安定になるように1つのセットを持っていて、群れがリーダーに従うようにしましょう。 – Incognito
あなたは少しオッズを操作することができますので、完全にランダムではありません。 85%のランダム、15%のような最後の方向など。私はこれが順方向にもう少し行くようになると思う。 – ajax333221