boids
1.分離(Separation)
2.整列(Alignment)
- 近くの仲間に対して速度の平均を計算
- その平均をベクトルにする
- その平均ベクトルー自身のベクトル=(平均ベクトルに向かうベクトル)を算出 →周りと合わせる
3.結束(Cohesion)
- 近くの仲間に対して位置の平均をとる(重心)
- その重心に向かうようなベクトルを算出 →くっつく
最後に
3つの値を加速度に足す 加速度をベロシティに足す 加速度をゼロにする
特徴
- ひとつひとつは個性は持たない
- 動き以外(位置・速度・加速度)にパラメータは無い
- コリジョン的な要素(①分離)以外の2つが結構ユニークである。(平均の方向に合わせる、重心に向かう)
- 群衆のモーションのためのアルゴリズムである。
- 視界に入ったものが自分に影響を与える
haohao
- 男女・好き嫌いをパラメーターに持つ
- コリジョンがある
- 嫌いな奴からは離れる
- 視界の中に入ったもので一番好きなやつに線が引かれる
特徴
- 向かう・引き合うが、固有の要素によって決まっている
- モーションのためのアルゴリズムというわけではない、群衆恋愛ゲームである。
CA
- 自分の周囲(この場合はセル)の状態によって、自分の状態が左右される
- 一般的なものだと周囲のON・OFFの状態から、自分のON・OFFがきまる。ただし自分のON状態・OFF状態のときで状況を変える
共通点
- 個は観測範囲を持つ
- boids,haohaoならある距離
- CAなら周囲の状態
- その観測範囲に入った他者に影響を受ける
- その影響の受け方に違いがある
- boidsなら中心に向かう、平均ベクトルにあわせる、離れる
- haohaoなら好きなものに寄っていく、嫌いなものから離れる
- CAなら周囲の状況によってオン・オフ
- 繰り返し処理を行うことで、時間軸と共に、フィードバック的な効果もあり、変化していく
単純なフィルタはどうか
- [0.33,0.33,0.33]という単純なコンボリューションフィルタを考える
- x(0,0)の値はx(-1,0)とx(+1,0)の影響を受ける、足して平均をとっているみたいなもの
- 繰り返していけばどんどんボケていく
- 比較的単純に変化していくので、創発性を持つといは言い難い
- ライフゲームもほぼ同じだが、非線形的な処理(いくつ以上の時0/1になる)というのが入る