python畫圖——雪花(科赫曲線)

科赫曲線是一種分形,其形態非常像雪花,因此又被稱作科赫雪花、雪花曲線。

下面是用python的turtle包讓我們來實時畫一個

<code>import turtle
def koch(t,n):
#定義一個函數 科赫曲線,完成繪畫功能
if n < 5 :
t.fd(n)
return
m = n/3
koch(t,m)
t.lt(60)
koch(t,m)
t.rt(120)
koch(t,m)
t.lt(60)
koch(t,m)

def snowflake(t, n):
# 畫一朵雪花,每一邊都是一個科赫曲線
for i in range(3):
koch(t,n)
t.rt(120)

bob = turtle.Turtle()
bob.color('black')
bob.penup() # 畫筆提起(不能畫)
bob.goto(-150,90) #去到這個點
bob.pendown() # 畫筆落下(開始畫)
snowflake(bob,300) # 調用函數開始畫雪花
turtle.mainloop() /<code>

效果圖:

python畫圖——雪花(科赫曲線)

別看這麼簡短的代碼,其實它內含的數學知識可不簡單,科赫曲線的生成其實是一個遞歸的過程,通過不斷地遞歸調用koch,我們可以形成一個不斷由等邊三角形組成的雪花。如文首所示的那樣。維基百科更專業的解釋是這樣的:

給定線段AB,科赫曲線可以由以下步驟生成:
1. 將線段分成三等份(AC,CD,DB)
2. 以CD為底,向外(內外隨意)畫一個等邊三角形DMC
3. 將線段CD移去
4. 分別對AC,CM,MD,DB重複1~3。
科赫雪花是以等邊三角形三邊生成的科赫曲線組成的。每條科赫曲線的長度是無限大,它是連續而無處可微的曲線。

你還可以對其進行改進,加一個random函數,改一下畫筆顏色,可以形成漫天雪花的效果哦。


分享到:


相關文章: