ソフトの砂場(DLA)

最終更新日:1998年11月15日

 しばらくハード関係の話題が続いたので、またおもちゃプログラムを作ってみます。今回は、DLA (Diffusion Limited Aggregation)シミュレータを作ってみます。

DLAシミュレータの実行例

動作

 これは、ランダムに動く粒子が他の粒子と隣接して停止し成長する様子をシミュレートするものです。初期状態で、画面中央に粒子が一つだけ存在します。この粒子は動きません。この状態で、この粒子を中心とする適当な大きさの円を考え、その円周上のランダムな位置に新たに粒子を一つ置きます。円周上に置いた粒子をランダムに動かし、もしこれが中心の粒子と隣接すれば、その位置で固定します。次に2つ目の粒子を円周上に置き、これもランダムに動かして、中心にある2つの粒子のどちらかに隣接すれば、そこで固定します。もしランダムに動かした結果、中心の粒子からある程度離れた場合、その粒子は吸着しなかったとみなして抹消します。これを繰り返していけば、停止した粒子で、中心部がだんだん成長していきます。

実装

 粒子の動き方ですが、初期値では縦または横のどちらかに1ドットずつ動きます。この状態では、他の粒子と縦または横に接した時に移動を停止します。パラメータの設定で、斜めだけに動く(この状態では、他の粒子と斜めに接したときに移動を停止する)、縦横斜めのいずれかに動く(他の粒子と縦横斜めのいずれかで接した時に停止する)を選択することもできます。

 粒子の移動方向は乱数で決めますが、移動方向を中心方向に偏らせることができます。初期値では、51%の確率で中心方向に移動するようになっています。これを、50%(中心方向への偏りなし)から70%(中心方向にかなり偏る)まで、0.1%きざみで設定できます。

 上の図で、水色のかたまりが表示されていますが、これは粒子が移動した経路をあらわしています。初期値ではこの表示を行いませんが、パラメータの設定により表示することができます。また、粒子は、100個ごとに色を変えて表示しています。4800個周期でもとの色に戻ります。

 おまけで、粒子の初期位置を、円周上の他に、画面左端近くの線分上にすることもできます。この場合、だいたい左方向に成長していくことになります。

ダウンロード

ファイル名 dla.lzh
バージョン 1.0
ファイルサイズ 174Kバイト
OS Windows NT 4.0 (Windows 95/98でも動作すると思いますが未確認です)
アーカイブの内容 dla.exe ... DLAシミュレータ実行形式
dla.txt ... 簡単な説明
備考 Delphi4の実行時パッケージを使ったものをご希望の方はお知らせください。

雑感

 [2]のカラー写真を見ると、さすがにプロが作ると、同じようなアルゴリズムでもずいぶん見た目が違うものだと感心します。

参考文献

  1. A.K.デュードニー,コンピューターレクリエーション2,別冊サイエンス92, 日経サイエンス社,1989
  2. 渕上季代絵, CによるフラクタルCG, Information & Computing 67, サイエンス社, 1993

ホーム