1. 程式人生 > >第17章 科赫雪花小包裹

第17章 科赫雪花小包裹

enter display auto wid 技術 koch 分支 alt info

科赫雪花小包裹問題分析:

科赫曲線,也叫雪花曲線。

技術分享圖片

用python繪制科赫曲線

技術分享圖片

一條直線取1/3長的線段,把中間的1/3段去掉,然後在搭建成60°的三角狀,emmm,如下圖所示:

技術分享圖片

科赫雪花的繪制

遞歸思想:函數+分支

遞歸鏈條:線段的組合

遞歸基例:初識線段

 1 #KochDrawV1.py
 2 import turtle
 3 def koch(size, n):
 4     if n == 0:
 5         turtle.fd(size)
 6     else:
 7         for angle in [0, 60, -120, 60]:
 8            turtle.left(angle)
9 koch(size/3, n-1) 10 def main(): 11 turtle.setup(800,400) 12 turtle.penup() 13 turtle.goto(-300, -50) 14 turtle.pendown() 15 turtle.pensize(2) 16 koch(600,3) # 0階科赫曲線長度,階數 17 turtle.hideturtle() 18 main()

效果如下圖所示:

技術分享圖片

完整的科赫雪花的繪制代碼:

 1 #KochDrawV2.py
 2 import turtle
3 def koch(size, n): 4 if n == 0: 5 turtle.fd(size) 6 else: 7 for angle in [0, 60, -120, 60]: 8 turtle.left(angle) 9 koch(size/3, n-1) 10 def main(): 11 turtle.setup(600,600) 12 turtle.penup() 13 turtle.goto(-200, 100) 14 turtle.pendown() 15 turtle.pensize(2)
16 level = 3 # 3階科赫雪花,階數 17 koch(400,level) 18 turtle.right(120) 19 koch(400,level) 20 turtle.right(120) 21 koch(400,level) 22 turtle.hideturtle() 23 main()

繪制結果如下圖:

技術分享圖片

第17章 科赫雪花小包裹