import turtle

import math

turtle.speed(100)

'''

通过连接 3 个点的方式绘制三角形

pos是元组的元组((x1,y1),(x2,y2),(x3,y3))

'''

def draw\_triangle(pos):

turtle.penup()

# 移到第一个点

turtle.goto(pos[0])

turtle.pendown()

# 连接 3 个点

for i in [1, 2, 0]:

turtle.goto(pos[i])

# 计算三角形任意两边的中点坐标

def get\_mid(p1, p2):

return (p1[0] + p2[0]) / 2, (p1[1] + p2[1]) / 2

'''

绘制 谢尔宾斯基三角形

'''

def sierpinski\_triangle(*pos):

# 用给定的点绘制三角形

draw_triangle(pos)

p1, p2, p3 = pos

# 计算三角形的边长

side = math.fabs((p3[0] - p1[0]) / 2)

# 如果边长满足条件,继续绘制其它三角形

if side > 10:

# p1和p2线段 的中心点

p1_p2_center_x, p1_p2_center_y = get_mid(p1, p2)

# p2和p3线段 的中心点

p2_p3_center_x, p2_p3_center_y = get_mid(p2, p3)

# p1和p3线段 的中心点

p1_p3_center_x, p1_p3_center_y = get_mid(p1, p3)

# 绘制左下角三角形

sierpinski_triangle(p1, (p1_p2_center_x, p1_p2_center_y), (p1_p3_center_x, p1_p3_center_y))

# 绘制上边三角形

sierpinski_triangle((p1_p2_center_x, p1_p2_center_y), p2, (p2_p3_center_x, p2_p3_center_y))

# 绘制右下角三角形

sierpinski_triangle((p1_p3_center_x, p1_p3_center_y), (p2_p3_center_x, p2_p3_center_y), p3)

# 第一个点指左边点,第二点指上面的点,第三个指右边的点。

sierpinski_triangle((-200, -100), (0, 200), (200, -100))

turtle.done()

绘制谢尔宾斯基三角形相关推荐

  1. 小练手:用Canvas绘制谢尔宾斯基三角形

    转载<小练手:用Canvas绘制谢尔宾斯基三角形> 补充 作者第二种画法的完整程序: PS:修改function SierpinskiTriangle(p,len,depth = 9)中d ...

  2. python螺旋圆的绘制_python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)...

    插图工具使用Python内置的turtle模块,为什么叫这个turtle乌龟这个名字呢,可以这样理解,创建一个乌龟,乌龟能前进.后退.左转.右转,乌龟的尾巴朝下,它移动时就会画一条线.并且为了增加乌龟 ...

  3. turtle库使用教程 及 绘制 浪漫樱花 五角星 彩虹玫瑰 谢尔宾斯基三角形 实例

    目录 一.turtle简介 二.绘图坐标体系 三.笔画控制函数 四.形状绘制函数 五.颜色填充 六.浪漫樱花代码实例 七.五角星代码实例 八.彩虹玫瑰代码实例 九.谢尔宾斯基三角形代码实例 一.tur ...

  4. Python实验舱谢尔宾斯基三角形绘制教程

    三角形,大家应该再熟悉不过了. 上图是一个由四个小三角形拼成的大三角形,也叫谢尔宾斯基三角形. 谢尔宾斯基三角形还能继续画下去: 2阶(上图是1阶): 3阶: 5阶: 8阶: (小编奉劝一句:不要试图 ...

  5. 学习Python中turtle模块的基本用法(4:绘制科赫曲线和谢尔宾斯基三角形)

      科赫曲线和谢尔宾斯基三角形是常见的分形图形(详细介绍见参考文献1),本文使用turtle库绘制这两类图形. 科赫曲线   科赫曲线的详细介绍见参考文献2,其中的绘图思路是"画正三角形,并 ...

  6. Java面向对象编程:利用递归思想绘制“谢尔宾斯基地毯”和“谢尔宾斯基三角形”

    1.递归:在方法中调用本方法. 2.递归调用会无限循环下去,因此方法体中必须有结束方法的条件.返回值为void时通常写为: if (条件) {return; } 下面使用递归绘制"谢尔宾斯基 ...

  7. 混沌与分形(一):谢尔宾斯基三角形与门格海绵

    研究混沌运动,少不了对分形理论的探讨.分形:通常被定义为"一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状",即具有自相似的性质. 本篇将从 ...

  8. 数据结构与算法(Python版)二十二:递归可视化(谢尔宾斯基三角形)

    谢尔宾斯基Sierpinski三角形 分形构造, 平面称谢尔宾斯基三角形, 立体称谢尔宾斯基金字塔 谢尔宾斯基三角形:作图思路 根据自相似特性, 谢尔宾斯基三角形是由3个尺寸减半的谢尔宾斯基三角形按照 ...

  9. 分形——谢尔宾斯基三角形

    分形--谢尔宾斯基三角形 普通几何学研究的对象,一般都具有整数的维数.比如,零维的点.一维的线.二维的面.三维的立体.乃至四维的时空.在20世纪70年代末80年代初,产生了新兴的分形几何学(fract ...

  10. Python数据结构15:turtle模块制图,画直线,正方形,星星,递归可视化:分形树,谢尔宾斯基三角形

    1. Python中的turtle模块制图 前面已经讲了递归的原理,这里用递归作图来直观的理解递归. 首先了解以下Python中用于作图的内置海龟作图系统turtle module. Python内置 ...

最新文章

  1. python在excel中的应用-python怎样在excel中应用?
  2. lru页面置换算法_C|内存管理|从LRU王国到NRU王国
  3. 使用nginx负载均衡的webservice wsdl访问不到_面试官:关于负载均衡你了解多少
  4. mybatis反射的核心类
  5. Query-digest-UI监控慢查询,以及此工具的改进版
  6. Linux入门之进程管理(4)之进程与文件
  7. ssm框架里面前端拿HTML写,ssm框架引入Vue,声明式渲染,标签的href拼接字符串
  8. 手机访问内网IIS服务器网页的方法
  9. 云计算实战系列十一(软件包管理)
  10. Java 读写txt文件 中文乱码问题
  11. c语言递归函数奇偶归一猜想,计算机科学视角下的奇偶归一猜想
  12. [leetcode]14. 最长公共前缀
  13. “ObjectContent`1”类型未能序列化内容类型“application/xml; charset=utf-8”的响应正文。
  14. 大数据入门介绍和学习路线
  15. mysql的user表被清空_不小心删除掉了mysql user表无法登陆进mysql解决方法
  16. 偏偏在面试的时候踏入一个大坑--360浏览器兼容模式
  17. ZBrush控制撤销历史记录次数
  18. cardboard的使用
  19. CF1129C Morse Code
  20. (四)Android中的TextView组件

热门文章

  1. 华为PUSH SDK 接入方法
  2. android app开发计划
  3. Win10“隐藏”了一个视频编辑器,好用,免费,很多人却不知道
  4. ANSYS win10家庭版安装经验:
  5. html语言文字加粗加大代码,css怎么把字体加粗加大?
  6. STM32 USB Mass Storage 例程调试笔记
  7. ALSA音频架构 -- aplay播放流程分析
  8. oracle双机热备份方法(转)
  9. adprw指令通讯案例_S71200 ModbusTCP 通讯配置向导说明
  10. Insyde uefi 隐藏设置_联想台式机10代cpu装win10及bios设置教程(新bios设置)