1 / 11

Levy 曲線の書き方

Levy 曲線の書き方. 2006 年 12 月 8 日 科学科プログラミング. rp6b : Levy 曲線とは?. 与えられた線分を同じ方向に直角に曲げていく操作を繰り返した図形(直角三角形をどう描く?) 交互に直角三角形の向きを変えれば Dragon 曲線だ!. 1 次 Levy 曲線. 0 次 Levy 曲線. 3 次 Levy 曲線. 2 次 Levy 曲線. 0 次 Levy 曲線の描き方. 0 次 Levy 曲線. levy(200,0) dfollow(200); を実行すればよいことになります

lucus
Download Presentation

Levy 曲線の書き方

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Levy 曲線の書き方 2006年12月8日 科学科プログラミング

  2. rp6b: Levy曲線とは? • 与えられた線分を同じ方向に直角に曲げていく操作を繰り返した図形(直角三角形をどう描く?) • 交互に直角三角形の向きを変えればDragon曲線だ! 1次Levy曲線 0次Levy曲線 3次Levy曲線 2次Levy曲線

  3. 0次Levy 曲線の描き方 0次Levy曲線 • levy(200,0) • dfollow(200);を実行すればよいことになります • dfollow(200) は現在位置( pos(x,y)で指定可能です) から 指定角度(初期角度は0度です) 方向に 200 進みます.ペンが降りていれば進んだ後に線が引かれます

  4. 1次Levy 曲線の描き方 1次Levy曲線 • levy(200,1) • turn(-45); • follow(200/√2); • turn(90); • follow(200/√2); • turn(-45);

  5. 1次Levy 曲線の描き方 (再帰) 1次Levy曲線 • levy(200,1) • turn(-45); • levy(200/√2, 0); • turn(90); • levy(200/√2, 0); • turn(-45);

  6. 2次Levy 曲線の描き方 2次Levy曲線 • levy(200,2) • turn(-45); • turn(-45); • dfollow(100); • turn(90); • dfollow(100); • turn(-45); • turn(90); • turn(-45); • dfollow(100); • turn(90); • dfollow(100); • turn(-45); • turn(-45);

  7. 2次Levy 曲線の描き方 (再帰) • levy(200,2) • turn(-45); • turn(-45); • dfollow(100); /* 0次Levy曲線に置き換え */ • turn(90); • dfollow(100); /* 0次Levy曲線に置き換え */ • turn(-45); • turn(90); • turn(-45); • dfollow(100); /* 0次Levy曲線に置き換え */ • turn(90); • dfollow(100); /* 0次Levy曲線に置き換え */ • turn(-45); • turn(-45);

  8. 2次Levy 曲線の描き方 (再帰) • levy(200,2) • turn(-45); • turn(-45); • levy(100,0); /* 0次Levy曲線に置き換え */ • turn(90); • levy(100,0); /* 0次Levy曲線に置き換え */ • turn(-45); • turn(90); • turn(-45); • levy(100,0); /* 0次Levy曲線に置き換え */ • turn(90); • levy(100,0); /* 0次Levy曲線に置き換え */ • turn(-45); • turn(-45);

  9. 2次Levy 曲線の描き方 (再帰) • levy(200/√2, 1) • turn(-45); • levy(100, 0); • turn(90); • levy(100, 0); • turn(-45); • levy(200,2) • turn(-45); • turn(-45); • levy(100,0); • turn(90); /* 1次Levy曲線に置き換え */ • levy(100,0); • turn(-45); • turn(90); • turn(-45); • levy(100,0); • turn(90); /* 1次Levy曲線に置き換え */ • levy(100,0); • turn(-45); • turn(-45);

  10. 2次Levy 曲線の描き方 (再帰) • levy(200,2) • turn(-45); • levy(200/√2, 1); /* 1次Levy曲線 */ • turn(90); • levy(200/√2, 1); /* 1次Levy曲線 */ • turn(-45);

  11. levy(200,1) turn(-45); levy(200/√2, 0); turn(90); levy(200/√2, 0); turn(-45); levy(200,2) turn(-45); levy(200/√2, 1); turn(90); levy(200/√2, 1); turn(-45); 1次と2次のLevy曲線 /* levy 関数の定義 */ void levy(int leng, int dim){ if (dim < 1){ /* 終了条件 */ leng の長さの線を引く; } else { -45度回転; levy(leng/√2, dim-1); /* 再帰 */ 90度回転 levy(leng/√2, dim-1); /* 再帰 */ -45度回転; } }

More Related