AS3でもエッシャーっぽい絵を出してみた

エッシャーっぽい絵づくりアルゴリズム

とても面白いアルゴリズムを実装している人がいた。

元になっている論文はこちららしい。

これがpythonで実装されているので、AS3に移植してみた。

移植は難しくなかった

論文を見ても正直、自分で理解をすることは難しい。考えた仕組みを論文にしてくれる人がいて、また、それを読みpythonで実装しソースまで公開してくれている人がいるのはとてもうれしい。

読みやすいソースなので、簡単にできたので、自分のAS3ソースも公開しよう。

Spark projectに登録してみた

どうせ公開するなら、思いっきり!と思い立って、Spark projectにコミットしてみた。(yossyさん、迅速なコミッタ登録ありがとうございました)
http://www.libspark.org/wiki/octech/Escher

使い方のコツ

EscherImageコンストラクタに渡している R1, R2というパラメータ をうまく指定しないと、画像の外側が表示されてしまう。これらのパラメータの意味を理解しないと、「簡単にぐるぐるにできる」とは言えない。(上記サンプルの場合、手で調整しています)論文の方を読んでみればヒントがあるかもしれないので、今度読んでみよう。

エッシャー

ちなみにこちらは「M.C.エッシャーの展覧会で限定公開・発売された3DCGアニメーション作品」らしい。

ちょっと見てみたい。

2008-10-03の更新(その1)

zahirさんのエントリに触発されて、高速化を試みました。(というか、元々無駄が多いコードだったのでそれを見直しました。)

2008-10-03の更新(その2)

id:rezooさんのコメントのおかげで、R1, R2のパラメータの意味がはっきり分かったので、それらを変更するメソッドを実装しました。
デモswfではマウスカーソルのXY座標それぞれをR1, R2に対応させてみたり、ぐるぐるアニメーションさせて、どのくらい処理速度が重いのか分かるようにしました。重いですね。。