最終更新日: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で作ってみました。
 でも、なんかいまいち違う気がする。
 まだ、どっかおかしいのか?