码迷,mamicode.com
首页 > 其他好文 > 详细

第17章 科赫雪花小包裹

时间:2018-08-10 23:16:30      阅读:519      评论:0      收藏:0      [点我收藏+]

标签:display   雪花   线段   port   中间   col   直线   class   tle   

科赫雪花小包裹问题分析:

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

技术分享图片

用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章 科赫雪花小包裹

标签:display   雪花   线段   port   中间   col   直线   class   tle   

原文地址:https://www.cnblogs.com/chy8/p/9457413.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!