シェルピンスキーのギャスケット (1次元セルオートマトン:ルール90)


1次元セルオートマトン「ルール30」で示したプログラムのデータ部分を ルール90 のルールに置き換えると、典型的なフラクタル図形であるシェルピンスキーのギャスケットが現れます。 

そのルール90を以下に示します。
ある時刻 t+1の中央のセル状態は、時刻 t の 左、中央、右の3つのセルの状態で決定されます。

時刻 t    時刻 t+1
   111  →    0
   110  →    1
   101  →    0
   100  →    1
   011  →    1
   010  →    0
   001  →    1
   000  →    0

時刻 t の値を並べると 01011010 となり、10進数で 90 となることから、ルール90と呼ばれています。
詳しくは、Wikipedia「セル・オートマトン」をご覧ください。

通常のフラクタル図形を描く方法とは全く別の方法(1次元セルオートマトン)で描けるというのは、不思議です。

プログラムは、1世代を描くごとにスリープさせ、ゆっくりと描画するようにしています。




BackgroundWorkerクラスを使い、ProgressChangedイベントで、描画をしています。
ProgressChangedEventArgsのPercentageプロパティには、通常は、進捗を示す割合を設定しますが、
ここでは、世代を示す整数を設定しています。 世代はBitmapの縦軸に対応します。

ソースコードを Rule30のものと見比べてもらえばわかりますが、CellularAutomatonクラス内のrule変数を初期化するデータ部だけが異なっています。


■MainPage.xaml.cs
 
■MainPage.xaml