最終更新日:08/29/1996
Back!
Boidsもどき
JavaScriptを併用して、パラメーターをいじれるようにしました。
フィールドの数字を書きかえて、フォームのreloadボタンを押すと、
そのパラメーターが反映されます。
こまかいエラーチェックはしていないので、まちがったパラメーターを
入れるとエラーになります。
下にパラメーターの解説があるので、いちおう、見てからいじってみましょう。
パラメーターについて
boids 個体数(2以上 整数のみ)
max 最大スピード(10-20? 整数のみ)
dist 最適クルージング距離(整数のみ)
copyWait 仲間と同じ方向を向こうとする率(0.0-1.0 実数)
centerWait 中心に行こうとする率(0.0-1.0 実数)
accelerationスピードアップ/ダウンの割合(加速度)(1.01-1.30 実数)
trail 軌跡をのこすかどうか?(true or false)
visibleAngle 視野角(1-360 整数のみ)
debag デバッグ用オプション(true or false)意味なしなので、Formからの設定はなし
このプログラムは、「ルーディー・ラッカーの人工生命研究室(onWindows)」
を参考にして作りました。
もともとのアルゴリズムは、レイノルズ(Craig Reynolds)っつー方が作られたそうです。
インターネットにボイドなど人工生命に関するホームページも、いくつか存在し、
サーバープッシュアニメーションで動くボイドを見ることの出来るホームページ(The Live A-Life Page)もあります。
ソースboidsSimulation.java
ローカル用ダウンロードキットBoids.sit.hqx
超省略版ボイドのアルゴリズム
- 1衝突の回避
- 最適クルージング距離、というパラメーターを持ち、自分と
最も近くの別のボイドとの間を、この距離に保とうとする。
前方に、近すぎる仲間ボイドがいると、スピードを落とし、
遠いとスピードをあげる。
後ろに近すぎる仲間がいると、スピードアップし、遠いとスピードダウンする。
- 2向きをあわせる
- 最も近くにいる仲間と平行に飛ぼうとする。
スピードには影響しない。
- 3群れの中心に向かう
- 仲間ボイドの平均位置、ないし、重心を計算し、その方向を向こうとする。
スピードには影響しない。
- 4慣性推進(同じ方向に飛び続けようとする)
更新
August 27 1996
JavaScriptを併用して、パラメーターを変更できるようにする。
JavaScriptを利用出来ないブラウザーでもいちおう見れるはず。
MacでNetscape3.0b5で動作確認
June 11 1996
視野角を追加。
たしかに、ぐっと生き物らしくなった気がする。
まだ、衝突判定をしていないので、重なってしまったり、幽霊みたいにすれ違ってしまったりする。
June 5 1996
加重平均を、とりあえず実現させて見る。
なんかおかしいと思ったら、とんでもないミスをしてました。
自分じゃ書いたつもりなのに、まだ書いてなかったとこが一行ありました。
あー、やれやれ、なんかおかしいなーと思ってたんだよ、、、
June 1 1996
ちょっと改良。
向きがわかるように、前に線を書くようにした。
前の絵を消さないモードを追加。
クリックで、画面を消去し、位置をリセットするようにする。
点滅しないようにする。エラー対策がひどく手抜きだった模様。
デバッグモード(AppletViewerのみで動作)を追加。
まだ実現してないこと
だんごにならないようにする。
二匹が、重なってしまわないようにする。
視野角をつける。
加重平均で中心点をとるようにする。
など、、、
だいぶいい感じになったが、なんか、変な動きをするときもある気がする。
May 31 1996
ちょっと改良。
少し生き物らしい動きをするようになる。
May 30 1996
ボイドをjavaで作ってみました。
でも、なんかいまいち違う気がする。
まだ、どっかおかしいのか?