turtle庫繪製科赫雪花曲線
阿新 • • 發佈:2019-01-05
from turtle import *
# 最重要的便是遞迴函式:要理解科赫曲線的原理:取一段直線的1/3長度,
# 以該長度的4條小直線拼成,其中中間兩條小直線凸起(60度)
# 以此類推,每條小直線再接著細分
def koch(size,n):
if n==0:
fd(size)
else:
for angel in [0,60,-120,60]:
left(angel)
koch(size/3,n-1)
# 上面函式:在最外層的迴圈執行轉角度後再呼叫下一階及相應的直線長度(0、60、-120、60)
# 這些角度都是並列關係,每一層又包含著呼叫遞迴也是這四個角度
# 其實最裡面的遞迴呼叫效果就是把每個小直線分成四段,中間突起
# 下面函式後面的程式碼是形成一個大三角,把每個邊繪製成科赫曲線,三角形三個邊通過角度進行轉換連線
def main():
setup(600,600)
penup()
goto(-200,100)
pendown()
pensize(2)
level=3
koch(400,level)
right(120)
koch(400,level)
right(120)
koch(400,level)
hideturtle()
# 最重要的便是遞迴函式:要理解科赫曲線的原理:取一段直線的1/3長度,
# 以該長度的4條小直線拼成,其中中間兩條小直線凸起(60度)
# 以此類推,每條小直線再接著細分
def koch(size,n):
if n==0:
fd(size)
else:
for angel in [0,60,-120,60]:
left(angel)
koch(size/3,n-1)
# 上面函式:在最外層的迴圈執行轉角度後再呼叫下一階及相應的直線長度(0、60、-120、60)
# 這些角度都是並列關係,每一層又包含著呼叫遞迴也是這四個角度
# 其實最裡面的遞迴呼叫效果就是把每個小直線分成四段,中間突起
# 下面函式後面的程式碼是形成一個大三角,把每個邊繪製成科赫曲線,三角形三個邊通過角度進行轉換連線
def main():
setup(600,600)
penup()
goto(-200,100)
pendown()
pensize(2)
level=3
koch(400,level)
right(120)
koch(400,level)
right(120)
koch(400,level)
hideturtle()