元記事のL-Systemを使ったコードのほうがカッコイイ&いろんな曲線に応用できますー
Python Fractals
L-Systemを使いドラゴン曲線を描くチュートリアル。ドラゴン曲線自体の説明も判りやすいです。英語ですが。。。
こちらを読んでも難しくてよく判らなかったので、適当にマネして書いてみました。

元記事にならってヘッダに。
turtleモジュール使ってるので、若干遅いですけれども、画面でピコピコ動くのが楽しいです。
# -*- coding: utf-8 -*-
import turtle
def neg(x):
return 0 if x else 1
plist=[]
dt=2
turtle.setheading(0)
turtle.delay(0)
turtle.speed("fastest")
turtle.setx(0)
turtle.sety(0)
turtle.clear()
for j in xrange(5): #数字を増やすと、図形が複雑になりますが、時間がかかります
#print plist
plist2=[0]+[neg(x) for x in reversed(plist)]
#0は左 1は右
for i in plist2:
if i :
turtle.right(90)
else :
turtle.left(90)
turtle.forward(dt)
plist+=plist2
あとで見るとき用のメモ。
文字だけだとわかりにくいですが。。。(すんません)
- ドラゴン曲線において、タートルグラフィックスのカーソル(タートル)は、一歩進んでは右、または左を向く、を繰り返す。
- いままで進んできた道筋を 「左左右」のように記憶
- 次のターンは、まず左、そして それまでの道筋を逆順にし、 左右を反転した進路をとる
- 左 + 逆順反転(「左左右」) -> 左 左右右
- 「左左右」 + 「左左右右」を新しい順路として記憶。 繰り返し
(次は左 + 逆順反転(「左左右左左右右」) -> 左 左左右右左右右 になります)
- L
- LR
- LLRR
- LLLRRLRR
・・・
Tags: CG, Python