ドラゴンカーブを描く

拙著『[改訂新版]C言語による標準アルゴリズム事典』 p.200 にあるドラゴンカーブを Python で描いてみましょう。

import matplotlib.pyplot as plt

def dragon(i, dx, dy, sign):
    global x, y
    if i == 0:
        plt.plot([x, x+dx], [y, y+dy])
        x += dx
        y += dy
    else:
        dragon(i-1, (dx-sign*dy)/2, (dy+sign*dx)/2, 1)
        dragon(i-1, (dx+sign*dy)/2, (dy-sign*dx)/2, -1)

x = y = 0
dragon(10, 200, 0, 1)
plt.axis('equal')
plt.axis('off')
plt.savefig('dragoncurve.svg', bbox_inches="tight")
ドラゴンカーブ

色は勝手に付けてくれました。黒がよければ plt.plot(..., color='black') としましょう。


Last modified: