科赫曲線是一種分形。其形態似雪花,又稱科赫雪花、雪花曲線。
1.給定線段AB,科赫曲線可以由以下步驟生成:
2.將線段分成三等份(AC,CD,DB)
3.以CD為底,向外(內外隨意)畫一個等邊三角形DMC
4.將線段CD移去, 分別對AC,CM,MD,DB重復1~3。
import turtle
#科赫曲線(size 科赫曲線的每一個直線的長度,n 繪制的階數)
def koch(size,n):
if n==0:#遞歸出口畫一條一階直線
turtle.fd(size)
else:
#每一層遞歸都遍歷這四個角度
for angle in [0,60,-120,60]:
#逆時針旋轉角度
turtle.left(angle)
#遞歸調用自己
koch(size/3,n-1)
def snow(a):
#turtle.color("green","yellow")
turtle.begin_fill()
#輸入寬和高為整數時, 表示像素
turtle.screensize(600,600,"green")
#填充邊框和中間的顏色
turtle.color("gold","white")
#畫筆抬起
turtle.penup()
#畫筆的寬度
turtle.pensize(2)
#到達指定位置
turtle.goto(-200,100)
#畫筆放下,起筆
turtle.pendown()
#a=1 #1階koch曲線
#第一跳線 0度開始,順時針120度結束 畫
koch(400,a)
#第二跳線 120度開始,順時針240度結束
turtle.right(120)
#第二跳線 畫
koch(400,a)
#第三跳線 240度開始,順時針360度結束
turtle.right(120)
#第三跳線 畫
koch(400,a)
#填充完成
turtle.end_fill()
#隱藏畫筆
turtle.hideturtle()
#輸入科赫曲線的層數
n=input('請輸入koch曲線的層數(1):\n') #n階koch曲線
if n=='': #未輸入的情況下,1階koch曲線
n=1
#主函數執行
snow(int(n))
請輸入koch曲線的層數(1):1
請輸入koch曲線的層數(1):2