今回はヒルベルト曲線を描いてみました。
ドラゴン曲線やC曲線などは、ジェネレータと呼ばれる基本図形が有って、そこからジェネレータの中の部分部分にさらにジェネレータを適用して行く、と言う繰り返しで描画します(下図)。
ヒルベルト曲線も同じと言えば同じなのですが、ちょっとイメージが異なるので、理解が難しいのです(下図)。
青線がレベル1のヒルベルト曲線で、基本図形は「コの字」型をしています。それがレベル2になると、いきなり赤線となってきます。確かに、「コの字」図形は随所に見られるのですが、コの字同士を結ぶ部分のルールがちょっと複雑みたいです。更にレベル3を描画してみると、緑線となります。
このままレベルを増やしていくと、ヒルベルト曲線は平面(正方形の範囲)を塗りつぶしていくらしいです。
ヒルベルト曲線の描画ルールは5つあります(↓)。
適切なレベルの描画(A)手順を実行すると、ヒルベルト曲線が描画できます。ルール通りに実行するスクリプト(draw_hilbert_curve.xitr)を組んだら、確かに描画できました。でも、今一つ、理解が追い付きません。
本当は、3D空間に拡張して、立方体領域を埋め尽くす図形にしたかったのですが、断念しました<(1x_x;)>。
完成したデータをリンクしておきます。
1) | Xi-TRACEデータ | hilbert_curve.xitr |
2) | 2D版描画 | draw_hilbert_curve.xitr |
1)をレイトレーシングした動画が以下です。2)は2Dのヒルベルト曲線を描画します。
3回ヒルベルト曲線を描画しているのですが、2回目だけ、線が伸びながら徐々に太くなっていく様にモデリングしてあります。