みーのぺーじ

みーが趣味でやっているPCやソフトウェアについて.Python, Javascript, Processing, Unityなど.

チューリングモデル(1次元)

Unityでチューリングモデル(1次元)をシミュレーション

Unityで3Dゲームを作るのは王道なので、肩慣らしを兼ねて、Unityでシミュレーションソフトを作ってみました。Unityは描写が早いので、シミュレーションに使えるのではと考えた次第です。UnityにはOpenGLのように描画できるGLクラスがあるので、これをシミュレーションに使うわけです。

チューリングモデルを厳密に計算するソフトというよりは、Unityで数値シミュレーションを行うことが主眼のソフトです。

こちら

チューリングモデルとは

詳しく解説するのが面倒なので、詳しい説明は別のサイトを見てください。簡単に説明すると、アクティベータとインヒビターがあって、それらの相互作用によって規則的な模様ができるという現象です。

Google キーワード

  • 「チューリングモデル(turing model)」
  • 「チューリングパターン(turing patterns)」
  • 「反応拡散系(reaction diffusion system)」

参考サイト

Reaction-diffusion equations for Turing patterns

Performance Python: Solving The 2D Diffusion Equation With numpy

数式

f:id:atsuhiro-me:20151103003655p:plain:w300

使い方

ピンクがアクティベータ(activator)、水色がインヒビター(inhibitor)です。

speedは再生速度を表します

  • +,-ボタンで増減します。
  • 停止するには、speedを0にします。

Resetボタンを押すと、濃度が初期状態に戻ります。

スライダーを動かすことで、定数を調節することができます。

  • スライダーを目一杯右に動かすと10倍、目一杯左に動かすと1/10倍になります。

定数は以下の意味があります。

  • ka:アクティベータの拡散定数
  • kb:インヒビターの拡散定数
  • r,sa,sb:上の式参照
  • dt:1フレームの時間(大きいほど時間は早く進みます)

定数には以下の制限があります。

  • ka<kb
  • dtはある値以上にあげることができません。

ソースコード