サバの背中をセルオートマトンでシミュレート
サバの背中をセルオートマトンでシミュレート
動物の背中をシミュレート
前回、動物の体表に似た模様をセルオートマトンによって作成しました。
今回はこのセルオートマトン計算を利用し、以前に釣ったサバの背中をシミュレートしてみます。
なお、参考文献はSTEPHEN WOLFRAMという方のA New Kind of Science
セルオートマトンのおさらい
セルオートマトンとは、格子状のマス目を使った計算手法のことで、周囲のマスに影響を受けながら自セルの値を変更していくという方法でした。
例えば有名なライフゲームもセルオートマトンの一つです。
動物の模様を描いた時のルールは、下図のように、自セルの周囲のセルが黒か白かによって点数を計算し、その点数の値によって自セルの値を変化させるというものでした。
具体的な手順ですが、まずは100×100おマス目を用意し、ランダムに黒と白の点を分布させます。
それから下記の手順で操作を行います。
1.自セルを含め、自セルの周囲3マス内にあるセルの色を確認する。
2.自セルを含め、自セルの周囲1マス以内にある黒いマスの数に1を掛ける(図の緑の範囲の数を足すと、3×1=3)。
3.自セルから距離2または3のセルにある黒いマスの数に-0.4を掛ける(図の黄色の範囲の数を足すと、7×-0.4=-2.8)。
4.手順2と3で出した数値を足し合わせる(3-2.8=0.2)。
5.手順4で出した数が0以上であれば中心のセルを黒く塗り、それ以外の場合は白く塗る。
以上の手順を4回繰り返し、模様を描きました。
-0.4という数字を変化させることで、模様も変化します。
-0.4では以下の模様が描けました。
-0.2にすると、以下の模様になりました。
サバの背中の模様をシミュレート
では本題に入りましょう。
先ほどのセルオートマトン法を利用し、このサバの背中をシミュレートします。
色々と試してパラメータをいじったりした結果、これから紹介する方法でサバの模様に近い模様を描くことができました。
まず、計算のルールを下の画像のように変更します。
前回は中心から2または3マス離れたマスは全て計算に使っていました。
今回は上の画像のように、右上と左下は計算に使わないことにしています。
これにより方向性を出すことで、サバの背中の斜めの模様を再現しようと考えました。
また、黄色いゾーンの黒いマスは、-0.39という重みで足し合わせることにしました。
上の画像の数字を全て足すと、3×1+5×(-0.39)=1.05となるので、この場合は中心のセルは黒いままとなります。
このルールで4回計算してみると、下の画像のような模様になりました。
いかがでしょうか。
斜めの線の角度が少し違う気がしますが、ところどころにある斑点なども再現ができています。
さらにパラメータを調整することで、もっと近似した模様を作成することができそうです。