ドラゴン曲線
紙テープを同じ向きに14回折って開き、折り目を全部直角にした形を描いた。下の図では、折る回数と開く角を自分で動かせる。
なにか
細長い紙テープを、同じ向きに半分・半分・半分と折る。開いて折り目を全部きっちり直角にすると、紙は自分でこの形になる。折り目の山と谷の並びは自分で決めていないのに、何度やっても同じ列が出る。これを紙折り数列と呼ぶ。4回折れば折り目は 2⁴−1 = 15本で、並びは必ず 110110011100100(1=山)になる。
この紙を「1歩進んで折り目のとおりに直角へ曲がる道」として読むと、上の図になる。線なのに面積を持ち(隙間なく詰まっていく)、自分自身を触るけれど横切らない。折るという身近な操作ひとつに、これだけの構造が入っていた。
同じ列に、独立な2つの道
①物理の道。もう一度折ると、列は「前の列 + 山 + 前の列を裏返して山谷を入れ替えたもの」になる。紙を開く動作そのままの再帰である。
②数論の道。k 番目の折り目だけを直接答えられる。k を 2 で割れるだけ割って残った奇数を m とすると、m mod 4 が 1 なら山、3 なら谷。折り紙のことは何も出てこない。
この2つが n=16(折り目 65535 本)まで1つも違わずに一致する。紙の物理と 2 進法の割り算が、同じ列を別々の理由で書いていた。
後半は前半の写し(整数座標で厳密に)
歩いた点の座標は全部整数になる(1歩ずつ直角に曲がるので格子から外れない)。だから自己相似を丸め誤差なしで確かめられる。レベル n の点集合は、レベル n−1 の点集合と、それを「n−1 の終点」まわりに −90° 回した写しの和になる。n=6〜16 まで集合として完全に一致した(n=16 なら 36982 点)。上の図の塗り分けは、この式をそのまま描いたものである。
終点も閉じた式で出る。1歩を複素数で見ると、全体は (1+i)ⁿ になる。だから終点までの距離はちょうど (√2)ⁿ で、向きは 45°×n である。折るごとに √2 倍に伸びて 45° 回ることが、座標の整数演算で確かめられる。
回転を +90° にすると、和集合の点の個数だけはぴったり一致する(190=190)が、中身は違う。個数が合っても正しいとは限らず、集合の中身を1点ずつ突き合わせると、回す向きは −90° だと分かる。
触るけれど、横切らない
レベル14 の道は 16384 本の辺を通るが、同じ辺を二度通ることは一度もない(16384本すべて別)。いっぽう頂点は 16385 回訪れるが、別々の点は 9658 個しかない。6727 回は、前に通った点にまた触っている。触れても渡らないこの詰まり方が「線のまま面積を持つ」ことの中身で、同じ紙を4枚(90°ずつ回して)並べると平面が隙間なく埋まる性質につながる。
自分で動かす
下の絵は、あらかじめ描いた絵の切り替えではなく、ページを開いたその場で上の図と同じ計算をしている。開く角を 0° から 90° へ動かすと、折りたたんだ紙が実際に開いていく。
- 折り目の数
- —
- 2つの道は一致するか
- —
- 終点
- —
- 自己相似
- —
- 整数座標との差
- —
スライダーで決めた折り回数と開く角のドラゴン曲線
塗り分けを入れると、藍が前の段そのもの、茜がそれを終点まわりに 90° 回した写しになる。この2つを合わせると、ちょうど次の段になる。回すのは −90° で、+90° にすると点の個数だけが一致して中身が違う。個数が合っても中身が合うとは限らない例になっている(上の注)。θ を 90° 以外にすると座標は整数でなくなるので、厳密な検査はできなくなる。
どう作ったか
折り目の列は「折る再帰」と「mod 4 の式」の両方で作って突き合わせた。2つの道は n=1〜16 で完全に一致し、折り目の数は 2ⁿ−1、辺の数は 2ⁿ になる。曲線は、列のとおりに整数格子を歩くだけで描ける。三角関数を使わないので、座標に誤差は入らない。上の動く図で開く角を動かすと紙が開いていくが、整数格子と突き合わせられるのは θ=90° のときだけである。角度で歩くと三角関数の誤差が 10⁻¹⁴ ほど積もるのに対し、整数で作れば誤差は入らない。
→ ミウラ折り(同じ「紙を折る」から出る、こちらは規則正しい方)
出典
- 数理
- 紙折り数列(regular paperfolding sequence, OEIS A014577)。Heighway dragon は John Heighway (1966) の発見で、Martin Gardner が Scientific American (1967) で紹介。閉じた式(m mod 4)は同数列の標準的な表示
- 生成
- generators/dragon.js(折る再帰と mod 4 の式の2実装・整数格子のタートル・自己相似の集合一致判定・短冊図と曲線図。依存ゼロ・乱数ゼロ)。ドラゴン曲線の計算は gallery/assets/dragon-live.js にまとめ、上の図と動く図の両方がこれを使っている