Math Battle [ 0246: ドラゴン曲線の境界描画例 ]

[ 0246: ドラゴン曲線の境界描画例 ]


[ 広世正憲君の半回答 (半解凍?) ]

これはもともと三奈さんからの出題 (0203) でしたが、
湯会老人からアドバイスを (0214) をいただいて
いろいろ試行錯誤してきました。

基本的に数学論文ですから肝心の関数、たとえば DrawTriangle(Start,n,Angle)
が何をやっているかがさっぱりわかりません。ソースコードが示されてないからです。
これでどうやって輪郭の点をつなぐギザギザ線を描けというのか?

とりあえずこの関数には位置を示すマークを描かせることして、
レベル 12 まで描画したものを以下にご紹介します。


他の方法としては、下図のように 8 角形から出発して、
各線分を連続する 2 線分または 3 線分に置き換えてゆくものがありますが、
どういう規則にしたがっているのか一見して推測するのは困難です。

各線分に対してあらかじめ置き換え規則を決め、
「子線分」や「孫線分」に継承 (遺伝) させる方法をとってみましたが、 まだうまくゆきません。

こんなことも書いています。カオスゲームとか。IFS (Iterated Function System) とか。
中学生の頭では理解できません。

The boundary of the dragon curve can also be generated using the chaos game. For the generation of the boundary of the dragon curve using the chaos game, we utilize the IFS structure that we had analyzed earlier in Figure 5. According to the theory of the chaos game [2], the boundary as shown in Figure 5 can be generated by a random iterated system which corresponds the these three linear affine transformations.

T1(x,y) = ((x-y)/4-1/2, (x+y)/4+1)
T2(x,y) = ((y-x)/4+1/2, -(x+y)/4+1)
T3(x,y) = ((x+y)/2+1, (y-x)/2)


[ 西尾三奈さんのコメント ]

正憲君、お疲れさま。難しい出題をしてごめんなさいね。

DrawTriangle(Start,n,Angle) の引数で
Start と n は再帰的呼び出し (recursion) でどんどん変わってゆき、
とくに n はレベルが深くなると小さくなってゆきます。

いっぽう Angle は再帰的関数の中で値が変わってゆく形跡はなく、
プログラム全体を通じて同じ値に見えます。
輪郭のギザギザ線を描くにはそれに応じた角度方向を与えないといけないですね。

とりあえず、ドラゴン曲線の境界描画の問題はひとまず凍結にしましょう。
よく頑張ってくれました。

[ 0261: 次の記事 ]

[ 0260: アクセス数の増大 ]

[ 0259: 正方形を直線で2分割すると ]

[ 0258: メンバーリスト改訂 ]

[ 0257: IMO問題解の簡単な検証 ]

[ 0256: 水平線上の放物線の面積和 ]

[ 0255: 雪印プログラム ]

[ 0254: 国際数学オリンピック過去問:1 ]

[ 0253: (xの2次関数)^(xの2次関数)=1 ]

[ 0252: 力学的つりあい ]

[ 0251: 記事ランキング ]

[ 0250: 半円の共通接線と接点間距離 ]

[ 0249: 雪印チーズへの数割当ヒント ]

[ 0248: Wallis product 計算表 ]

[ 0247: πが出てくる長方形の縦横増殖 ]

[ 0246: ドラゴン曲線の境界描画例 ]

[ 0245: 直角三角形の中の直角三角形 ]

[ 0244: 易しいようで戸惑う長さ計算 ]

[ 0243: 直角三角形に外接する正方形 ]

[ 0242: 円中の台形面積の和 ]

[ 0241: 円周上の2点間の平均距離 ]

[ 0240: 前の記事 ]

[ トップページへ ]