Boids 2.x (JavaScript)

概要

Boids 1.3までで、基本的な個体の運動ルールを設定して群の動きを実現した。

これに対して、ルールの条件を変えて、それらが群の挙動に与える影響を見てみる。

Boids 2.0~引力と斥力の導入

考え方

Boids 1.3の基本的なコードでは、3つのルールについて、位置座標を元にした幾何的な計算で速度を変更したが、ここで結合と分離に対して引力・斥力の概念を導入する。

重力や正電気力は距離の自乗に反比例するが、この形で試したところ、かなり距離が近づくまで反応せず、近い距離になって急に力が強くなるため、挙動が不安定な傾向となった。

そこで、ここでは距離に反比例した引力・斥力が個体間に働くものとし、近傍距離以内では斥力が、それより遠く一定距離以内であれば引力が働くものとした。

挙動と考察

その挙動は、若干の振動があるものの基本コードと似ており、基本コードに対して、個体間の距離がより均等に近くなっている。心理的な行動が物理法則と類似である可能性を示唆している。

デモンストレーション

Boids 2.0を新しいタブで実行

Boids 2.1~直近個体に追随

考え方

結合と分離の実装は上記のまま、整列の条件を、直近の一個体の速度に追随するようルールを変更した。

挙動と考察

各個体が集まるのが極めて速く、群が密集状態になる。

また、群を形成してからのは振動を繰り返すのみで、、群全体としての移動は鈍い。

日常生活でも、近くの一人のみに注意して歩こうとすると却ってスムーズに移動できないことが多いが、これを示唆している。

デモンストレーション

Boids 2.1を新しいタブで実行

Boids 2.2~周辺個体に追随

考え方

整列のために追随するのが直近一個体では「近視眼的」なため、一定距離内の個体群の平均速度に追随するように変更。

挙動と考察

一個体のみに追随するよりも群として移動しやすくなるが、それほど大きな効果はなく、個体数が多くなるに従って(このケースでは個体数が15~20程度以上で)群として振動状態に入りやすくなる。

直近1個体でないとしても、周辺の動きだけに合わせると整然とした動きになりにくいことを示唆している。

デモンストレーション

Boids 2.2を新しいタブで実行

Boids 2.3~リーダーに追随

考え方

特定の一つの個体がリーダーとしてふるまい、他の個体はリーダーにのみ追随するルール。リーダーは他の個体のようなルールに従わないとしている。

挙動と考察

当然ながら、群の行動はリーダーの動きのみに追随して比較的なめらかになる。さらに、群全体が広がりを持つのも特徴。「雁行」を想起させる。

デモンストレーション

Boids 2.3を新しいタブで実行


前の記事:基本コード

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です