ボイドアプレット

2000.07.27 中田豊久



このアプレットは、1980年代後半頃に、ロスアンジェルスのシンボリックス・ コーポレーションのグレイグ・レナルズの作成した 「ボイド」を実装してみたものである。

ボイドとは、鳥もどき(birdroid)の略であり、飛んでいる鳥の群れ をシミュレーションしたものである。 このシミュレーションにおいて興味深い点は、個々のボイドと呼ばれる鳥に以下の 簡単な機能を実装するのみで、実現したことにある。
ボイドについての説明は、「新潮社 『複雑系』 M・ミッチェル・ワードロップ 著 田中三彦+遠山峻征 訳」 により紹介されている。その中では、上の3つの規則の特徴は、そのどれもが「群れを作れ」 とは言っていないことである、と紹介されている。

レイノルズのボイドは上の規則を実装したといっているが、このボイドアプレットは 以下の規則を実装している
レイノルズのボイドとの違いは、ルール1はレイノルズのボイドでは、影響を受ける物体を「近隣」とは言っていない ことである。ルール2は同じである。そしてルール3を実装していない。ルール3は 「群れを作れ」という明示的な規則ではないが、このルールがあると群れが作られるのが自明なよう な気がする。よって、ルール3を外すことにした。


ボイドアプレットには以下の種類のボイドが登場する。
 他のボイドと群れを作ろうとするボイド(これが上の2つの規則を実装しているボイド)
 他のボイドから嫌われるボイド
 他のボイドに好かれる動かないボイド
 他のボイドから嫌われる動かないボイド

各ボイドの表示方法は、ボイドアプレットの下にある[help]ボタンを押すと その説明が出る。

このボイドアプレットはオブジェクト指向で作成されている。 画面に登場する4つのボイドは、他の種類のボイドとどういった関係にあるか を1つのクラスで表現している。

例えば、他のボイドと群れを作ろうとするボイドは、 CNodeInfluenceという名前で定義されている。また、他のボイドから嫌われるボイドは、 CNodeHateという名前である。CNodeInfluence がCNodeHateに影響を受けるコードCNodeInfluence_CNodeHate という名前で作成されているとシステムは理解してそのクラスを検索する。 もしもクラスが見つかる場合、そのコードを実行するが、無い場合はCNodeInfluence とCNodeHateは無関係と理解して、ボイドが影響を受けることはない。

これは、バイナリレベルでプログラムのカスタマイズが出来ることを意味している。
javaのクラスは1クラス1ファイルで作成されるため、CNodeInfluence_CNodeHateクラスの ようなボイド間の関係を示すクラスは、メインクラスになるComplex.classから見えないところ に配置すれば(ファイルを削除すれば)関係がないと判断されるのみで実行上問題が あるわけではない。

この機能により、各ボイド間の関係を再コンパイルなしで変更すること が出来る。

javadocフォーマットの、このボイドアプレットのドキュメントは以下。

ソースファイルは、以下。このアプリケーションは、アプレットと フレームの両方で動作します。アプレットのトップがComplexApplet.javaファイル。 フレームのトップがComplexFrame.javaファイルです。
戻る