2010/12/14

JavaScriptでミステリーサークルのようなものを自動生成

フラクタル図形等を作成する際によく用いられる形式文法L-Systemを使って、ミステリーサークルのようなものを自動で生成するものをつくりました。これにより、なんかの儀式にミステリーサークル的な模様が必要になった時に簡単に模様をつくることができます。でも、自分で念を込めて模様を考えたほうが、儀式はうまくいくと思います。

例えばこんな感じの模様ができます。

 

デモ
Key :






なにをしているのか
以下のようなL-Systemを構成し、JavaScriptでCanvasに描画しています。詳しくはソースコードを御覧ください。
Grammer
  Variables : 0
  Constants : [1-9][a-f]
  Start : 0
  Rule : 0 -> md5hash
  Iterate count : 3
ここでmd5hashというのはテキストエリアに入力された文字列のMD5Hash値です。
Semantics
  0 : なにもしない
  d=[1-9] : 左に d x 10 度回転
  a : 50前に直線を描いて進む
  b : 回れ右する
  c : 半径50の円を描く
  d : 原点に戻る
  e : 32前にジャンプする
  f : 半径32の円を描く


余談
テキストエリアに入力された値が同じであれば、同じ模様が出力されます。なにか面白い模様ができたらぜひKeyをコメントしてください!
MD5Hashの計算にはサイボウズ・ラボの光成茂雄さんのライブラリを使用させていただきました。ありがとうございます。

参考
Canvasに色々描いてみた - Webと文字