绘制谢尔宾斯基三角形
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()
绘制谢尔宾斯基三角形相关推荐
- 小练手:用Canvas绘制谢尔宾斯基三角形
转载<小练手:用Canvas绘制谢尔宾斯基三角形> 补充 作者第二种画法的完整程序: PS:修改function SierpinskiTriangle(p,len,depth = 9)中d ...
- python螺旋圆的绘制_python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)...
插图工具使用Python内置的turtle模块,为什么叫这个turtle乌龟这个名字呢,可以这样理解,创建一个乌龟,乌龟能前进.后退.左转.右转,乌龟的尾巴朝下,它移动时就会画一条线.并且为了增加乌龟 ...
- turtle库使用教程 及 绘制 浪漫樱花 五角星 彩虹玫瑰 谢尔宾斯基三角形 实例
目录 一.turtle简介 二.绘图坐标体系 三.笔画控制函数 四.形状绘制函数 五.颜色填充 六.浪漫樱花代码实例 七.五角星代码实例 八.彩虹玫瑰代码实例 九.谢尔宾斯基三角形代码实例 一.tur ...
- Python实验舱谢尔宾斯基三角形绘制教程
三角形,大家应该再熟悉不过了. 上图是一个由四个小三角形拼成的大三角形,也叫谢尔宾斯基三角形. 谢尔宾斯基三角形还能继续画下去: 2阶(上图是1阶): 3阶: 5阶: 8阶: (小编奉劝一句:不要试图 ...
- 学习Python中turtle模块的基本用法(4:绘制科赫曲线和谢尔宾斯基三角形)
科赫曲线和谢尔宾斯基三角形是常见的分形图形(详细介绍见参考文献1),本文使用turtle库绘制这两类图形. 科赫曲线 科赫曲线的详细介绍见参考文献2,其中的绘图思路是"画正三角形,并 ...
- Java面向对象编程:利用递归思想绘制“谢尔宾斯基地毯”和“谢尔宾斯基三角形”
1.递归:在方法中调用本方法. 2.递归调用会无限循环下去,因此方法体中必须有结束方法的条件.返回值为void时通常写为: if (条件) {return; } 下面使用递归绘制"谢尔宾斯基 ...
- 混沌与分形(一):谢尔宾斯基三角形与门格海绵
研究混沌运动,少不了对分形理论的探讨.分形:通常被定义为"一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状",即具有自相似的性质. 本篇将从 ...
- 数据结构与算法(Python版)二十二:递归可视化(谢尔宾斯基三角形)
谢尔宾斯基Sierpinski三角形 分形构造, 平面称谢尔宾斯基三角形, 立体称谢尔宾斯基金字塔 谢尔宾斯基三角形:作图思路 根据自相似特性, 谢尔宾斯基三角形是由3个尺寸减半的谢尔宾斯基三角形按照 ...
- 分形——谢尔宾斯基三角形
分形--谢尔宾斯基三角形 普通几何学研究的对象,一般都具有整数的维数.比如,零维的点.一维的线.二维的面.三维的立体.乃至四维的时空.在20世纪70年代末80年代初,产生了新兴的分形几何学(fract ...
- Python数据结构15:turtle模块制图,画直线,正方形,星星,递归可视化:分形树,谢尔宾斯基三角形
1. Python中的turtle模块制图 前面已经讲了递归的原理,这里用递归作图来直观的理解递归. 首先了解以下Python中用于作图的内置海龟作图系统turtle module. Python内置 ...
最新文章
- python在excel中的应用-python怎样在excel中应用?
- lru页面置换算法_C|内存管理|从LRU王国到NRU王国
- 使用nginx负载均衡的webservice wsdl访问不到_面试官:关于负载均衡你了解多少
- mybatis反射的核心类
- Query-digest-UI监控慢查询,以及此工具的改进版
- Linux入门之进程管理(4)之进程与文件
- ssm框架里面前端拿HTML写,ssm框架引入Vue,声明式渲染,标签的href拼接字符串
- 手机访问内网IIS服务器网页的方法
- 云计算实战系列十一(软件包管理)
- Java 读写txt文件 中文乱码问题
- c语言递归函数奇偶归一猜想,计算机科学视角下的奇偶归一猜想
- [leetcode]14. 最长公共前缀
- “ObjectContent`1”类型未能序列化内容类型“application/xml; charset=utf-8”的响应正文。
- 大数据入门介绍和学习路线
- mysql的user表被清空_不小心删除掉了mysql user表无法登陆进mysql解决方法
- 偏偏在面试的时候踏入一个大坑--360浏览器兼容模式
- ZBrush控制撤销历史记录次数
- cardboard的使用
- CF1129C Morse Code
- (四)Android中的TextView组件
热门文章
- 华为PUSH SDK 接入方法
- android app开发计划
- Win10“隐藏”了一个视频编辑器,好用,免费,很多人却不知道
- ANSYS win10家庭版安装经验:
- html语言文字加粗加大代码,css怎么把字体加粗加大?
- STM32 USB Mass Storage 例程调试笔记
- ALSA音频架构 -- aplay播放流程分析
- oracle双机热备份方法(转)
- adprw指令通讯案例_S71200 ModbusTCP 通讯配置向导说明
- Insyde uefi 隐藏设置_联想台式机10代cpu装win10及bios设置教程(新bios设置)