[pukiwiki]
元記事のL-Systemを使ったコードのほうがカッコイイ&いろんな曲線に応用できますー
—-
*[[Python Fractals :http://natesoares.com/projects/python-fractals/]]
L-Systemを使いドラゴン曲線を描くチュートリアル。[[ドラゴン曲線自体の説明:http://natesoares.com/writing/python-fractals-1/?project=python-fractals]]も判りやすいです。英語ですが。。。
こちらを読んでも難しくてよく判らなかったので、適当にマネして書いてみました。
http://boxheadroom.com/wp/wp-content/uploads/2009/04/dragon7.png
シャエルスーツっぽい模様♪
-[[ググる:ドラゴン曲線]]
[/pukiwiki]
元記事にならってヘッダに。
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
[pukiwiki]
あとで見るとき用のメモ。
文字だけだとわかりにくいですが。。。(すんません)
-ドラゴン曲線において、タートルグラフィックスのカーソル(タートル)は、一歩進んでは右、または左を向く、を繰り返す。
-いままで進んできた道筋を 「左左右」のように記憶
-次のターンは、まず左、そして それまでの道筋を逆順にし、 左右を反転した進路をとる
–左 + 逆順反転(「左左右」) -> 左 左右右
– 「左左右」 + 「左左右右」を新しい順路として記憶。 繰り返し
(次は左 + 逆順反転(「左左右左左右右」) -> 左 左左右右左右右 になります)
—-
-L
-LR
-LLRR
-LLLRRLRR
・・・
[/pukiwiki]