谢尔宾斯基三角形使用了三路递归算法,从一个大三角形开始,通过连接每一个边的中点,将大三角型分为四个三角形,然后忽略中间的三角形,依次对其余三个三角形执行上述操作。

运行效果:

源代码:

 1 import turtle
2
3
4 def draw_triangle(points, color, my_angle):
5 my_angle.fillcolor(color)
6 my_angle.up()
7 my_angle.goto(points[0][0], points[0][1])
8 my_angle.down()
9 my_angle.begin_fill()
10 my_angle.goto(points[1][0], points[1][1])
11 my_angle.goto(points[2][0], points[2][1])
12 my_angle.goto(points[0][0], points[0][1])
13 my_angle.end_fill()
14
15
16 def get_mid(p1, p2):
17 return ((p1[0]+p2[0])/2, (p1[1]+p2[1])/2)
18
19
20 def sierpinski(points, degree, my_angle):
21 colormap = ['blue', 'red', 'green', 'yellow',
22 'violet', 'orange', 'white']
23 draw_triangle(points, colormap[degree], my_angle)
24 if degree > 0:
25 sierpinski([points[0],
26 get_mid(points[0], points[1]),
27 get_mid(points[0], points[2])],
28 degree - 1, my_angle)
29 sierpinski([points[1],
30 get_mid(points[0], points[1]),
31 get_mid(points[1], points[2])],
32 degree - 1, my_angle)
33 sierpinski([points[2],
34 get_mid(points[2], points[1]),
35 get_mid(points[0], points[2])],
36 degree - 1, my_angle)
37
38
39 my_turtle = turtle.Turtle()
40 my_win = turtle.Screen()
41 my_points = [[-100, -50], [0, 100], [100, -50]]
42 sierpinski(my_points, 3, my_turtle)
43 my_win.exitonclick()

最新文章

  1. 异步编程系列06章 以Task为基础的异步模式(TAP)
  2. CNN 逐层可视化 Ipython Notebook
  3. linux退出vi
  4. ModelMap和ModelAndView的作用
  5. js实现windows扫雷(jquery)
  6. Oracle数据文件管理
  7. 用if做了一个简单的猜拳游戏(做的不好还请指点,谢谢!)
  8. php-fpm:fastcgi_finish_request()
  9. TravelCMS旅游网站系统诞生记-1(后台框架篇)
  10. 模块工具类--utils
  11. [置顶] 老孟 DB2 V9.7 ESE(一)产品部署 基于centOS 6.4
  12. iOS 开发之协议-代理传值
  13. 读书笔记 effective c++ Item 10 让赋值运算符返回指向*this的引用
  14. asp.net core新特性(1):TagHelper
  15. ES6中的类
  16. 浅谈JavaScript位操作符
  17. shell与export命令
  18. 老男孩python学习自修第十六天【常用模块之sys和os】
  19. SpringBoot集成Redis分布式锁以及Redis缓存
  20. LeetCode——6. ZigZag Conversion

热门文章

  1. 【战略】以色列公司的数据驱动tip
  2. 关于php接受xml的一些问题,simplexml_load_string收不到数据
  3. MRS IoTDB时序数据库的总体架构设计与实现
  4. java基础复习记录
  5. 华为三层交换机5700 DHCP配置
  6. ffmpeg修改视频文件的分辨率
  7. 深度学习(一)之MNIST数据集分类
  8. k8s原来这么简单(二)安装k8s1.23集群
  9. sql中数据统计
  10. FPGA设计流程