ねこでじ(Nekodigi)

Nekodigi’s diary

学習中の気づきをまとめています。応援よろしくお願いします

【Processing】Flockingアルゴリズムで、群れのシュミレーション

成果物

www.youtube.com
今回は、傾きを色で表示することで、どこの群れに所属しているかわかりやすくしてみました。

コード

今回は、2Dですが、3D版も作成したのでチェックしてみてください。
github.com

仕組み

次の3種類の処理を毎フレーム行うことで群れのシュミレーションを行うことができます。

Seperation(ぶつからないように間隔をとる)

指定した距離よりも近いオブジェクトがあれば、そこから離れる向きに加速します。加速の大きさは距離の二乗に反比例します。(近くなるほど急激に大きくなる)

Alignment(周囲と同じ動きをする)

指定した距離より近いオブジェクトの速度の平均の速度だけ加速します。

Cohesion(群れの真ん中に移動)

指定した距離よりも近いオブジェクトの位置の平均を求め、そこに向かって加速します。

参考にしたもの

www.youtube.com
作ってみようと思ったきっかけになったサイトです。
thecodingtrain.com
そのまま移行しただけでは不具合が生じたので、このサイトをもとにアレンジしました。