p5.js サンゴ礁

Daniel Shiffmanという方が作成した以下の動画を参考に

サンゴ礁のようなものを作成するプログラムを作ってみました。

作成したといっても、動画で紹介されていたものを少し修正しただけですが。

・参考にした動画

 <https://www.youtube.com/watch?v=Cl_Gjj80gPE&list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH&index=38>

 

出来上がった作品

f:id:techty:20190508122130p:plain

 

デモページとソースコードは以下にあります。

よかったら見てみてください。

editor.p5js.org

 

アルゴリズムの説明

上記のようなサンゴ礁が生成される仕組みはいたってシンプルです。

1.キャンバスの中心に点Pを置く(点Pはサンゴ礁のもとになる点)

2.上下左右にたくさんの点を配置する

3.配置した点をランダムウォークさせる

4.ランダムウォーク中の点が中心のサンゴ礁にくっついたら、

  ランダムウォークをやめて位置を固定し、色付けする

という感じです。

 

実際には以下のような感じでサンゴ礁が生成されます。

これが初期状態です(説明のため背景色は黒色にしています)。

f:id:techty:20190508132021p:plain

 

上下左右にあった点が徐々に中心に近づいていく。

f:id:techty:20190508132422p:plain

 

中心のサンゴ礁にくっついたらランダムウォークをやめ、色付けする。

f:id:techty:20190508132550p:plain

 

徐々に中心からまわりに伸びていく。

f:id:techty:20190508132653p:plain

 

少しずつグラデーションが現れる。

f:id:techty:20190508132819p:plain

 

完成

f:id:techty:20190508133020p:plain

 

ランダムウォークって面白いですね。