日記(北海道みたいな形)

love-neniye

今日も見た夢を思い出せず。母と子の会話による消し去り力はかなり強いように感じる。


最近、というか、ここ数日取り組んでみていたことがある。ある方程式を満たすような数からつくられるタイルの輪郭を(ベクトルグラフィックとして)描く、ということだ。こういうのは言葉で説明するよりも絵で見たほうがふさわしい。

昔からこれはなんか北海道みたいな形だな、と思っている。


A self-similar tiling generated by the minimal Pisot number の Theorem 4 に書いてあるように、このタイルの境界は自己相似集合として表される。

たとえば一つの「辺」上にある一点を、条件を満たす縮小写像で写すと「辺」上の別の点を得られる。「辺」上の端点を結ぶ線分から始めて、それが充分小さくなったときに探索を打ち切って線を引く、というのをすべての縮小写像の組み合わせでやればよい。全部の「辺」でやるのはちょっと手間がかかるように思うけれど、Theorem 4の証明の後半に書いてあるように、5つの「辺」はアフィン変換で移り合うため、一辺のデータさえ得られれば、他の「辺」のデータは簡単に作成できる。そして一つの「辺」について必要な縮小写像は2種類だけなので(Theorem 4に書かれているφとψ)、アルゴリズム的には2分木の探索と同じだ。

どこまでも折れ曲がっている線なので、本当はどこからどこまでが「辺」なのか、どこが「頂点」なのかというのもちゃんと定義する必要はあるけれど、絵で見てしまえばあえて説明は要らないようにも思う。


昔、ピクセル的なアルゴリズムでこのタイルを描いたことはあったけど、あらためて線のデータ(ベクトルグラフィック)として描きたいなと思って、関連する論文を読み返していたら欲しかったものはすでに書かれていた。

論文中にある図版も、この方法ならpdfに埋め込んでもっときれいに描ける気がするのだけど、別の方法で描いているみたいだ(単にpdf作成時における画像解像度の問題なのかもしれない)。


とりあえず見た目には問題ない感じで描けているけれど、まだ思い通りに行っていない部分がある。それは、たくさんのつながった線分を「順番通りに」に並べるということだ。適切な順序で2分木の探索をする、ということでもある。

前述したように、一つの辺を描くためには2種類の縮小写像が必要になるのだけれど、二つのうちの一つは辺上で「向きを逆にする」ように作用するため、単純に「左、右」と2分木を探索していっても「一筆書きで描く」ような折れ線にはならない。

対策としては、探索する優先順序を「どこからやって来たか」で場合分けすればよい、と考えている。具体的には「左のドアから入って来たら次も左のドアを優先する」、「右のドアから入って来たら次も右のドアを優先する」という感じでうまくいく、と思うがどうだろう。こういうのは手を動かさないわかりにくい。逆に言うと、手を動かしたり絵を描いてみるとすんなりわかることも多い。