数据结构21:递归可视化(谢尔宾斯基三角形)
目录
一、谢尔宾斯基Sierpinski三角形
二、作图思路
三、代码
一、谢尔宾斯基Sierpinski三角形
分形构造,平面称谢尔宾斯基三角形,立体称希尔宾斯基金字塔。
下图中,根据自相似特性,希尔宾斯基三角形是由三个尺寸减半的谢尔宾斯基三角形按照品字形叠加而成。
二、作图思路
在degree有限的情况下,degree=n的三角形,是由3个degree=n-1的三角形按照品字形叠加而成。
同时,这3个degree=n-1的三角形的变成均为degree=n的三角形的一半(规模减小)。
degree=0,则就是一个等边三角形,这是基本结束条件。
三、代码
import turtledef sierpinski(degree, points):colormap = ['blue', 'red', 'green', 'white', 'yellow', 'orange']drawTriangle(points, colormap[degree])if degree > 0:# 左边的三角形sierpinski(degree - 1,{'left':points['left'],'top': getMid(points['left'], points['top']),'right': getMid(points['left'], points['right'])})# 上面的三角形sierpinski(degree - 1,{'left': getMid(points['left'], points['top']),'top': points['top'],'right': getMid(points['top'], points['right'])})# 上面的三角形sierpinski(degree - 1,{'left': getMid(points['left'], points['right']),'top': getMid(points['top'], points['right']),'right': points['right']})def drawTriangle(points, color):t.fillcolor(color)t.penup()t.goto(points['top'])t.pendown()t.begin_fill()t.goto(points['left'])t.goto(points['right'])t.goto(points['top'])t.end_fill()def getMid(p1, p2):return ((p1[0] + p2[0]) / 2, (p1[1] + p2[1]) / 2)t = turtle.Turtle()
points = {'left': (-200, -100),'top': (0, 200),'right': (200, -100)
}
sierpinski(5, points)
turtle.done()
输出:
数据结构21:递归可视化(谢尔宾斯基三角形)相关推荐
- Python数据结构15:turtle模块制图,画直线,正方形,星星,递归可视化:分形树,谢尔宾斯基三角形
1. Python中的turtle模块制图 前面已经讲了递归的原理,这里用递归作图来直观的理解递归. 首先了解以下Python中用于作图的内置海龟作图系统turtle module. Python内置 ...
- 数据结构与算法(Python版)二十二:递归可视化(谢尔宾斯基三角形)
谢尔宾斯基Sierpinski三角形 分形构造, 平面称谢尔宾斯基三角形, 立体称谢尔宾斯基金字塔 谢尔宾斯基三角形:作图思路 根据自相似特性, 谢尔宾斯基三角形是由3个尺寸减半的谢尔宾斯基三角形按照 ...
- python螺旋圆的绘制_python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)...
插图工具使用Python内置的turtle模块,为什么叫这个turtle乌龟这个名字呢,可以这样理解,创建一个乌龟,乌龟能前进.后退.左转.右转,乌龟的尾巴朝下,它移动时就会画一条线.并且为了增加乌龟 ...
- 小白第一步|Java实现递归分形(以谢尔宾斯基三角形和勾股树为例)
一个递归分形搞得我心态爆炸 于是 我一定要写个博客祭奠一下!!!!!! 首先回顾一下递归的几个要素: 1.return:往上回溯 2.调用自身:往下挖掘 3.设置条件:防止无限递归 4.递归操作:分析 ...
- Java面向对象编程:利用递归思想绘制“谢尔宾斯基地毯”和“谢尔宾斯基三角形”
1.递归:在方法中调用本方法. 2.递归调用会无限循环下去,因此方法体中必须有结束方法的条件.返回值为void时通常写为: if (条件) {return; } 下面使用递归绘制"谢尔宾斯基 ...
- 混沌与分形(一):谢尔宾斯基三角形与门格海绵
研究混沌运动,少不了对分形理论的探讨.分形:通常被定义为"一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状",即具有自相似的性质. 本篇将从 ...
- Python实验舱谢尔宾斯基三角形绘制教程
三角形,大家应该再熟悉不过了. 上图是一个由四个小三角形拼成的大三角形,也叫谢尔宾斯基三角形. 谢尔宾斯基三角形还能继续画下去: 2阶(上图是1阶): 3阶: 5阶: 8阶: (小编奉劝一句:不要试图 ...
- 学习Python中turtle模块的基本用法(4:绘制科赫曲线和谢尔宾斯基三角形)
科赫曲线和谢尔宾斯基三角形是常见的分形图形(详细介绍见参考文献1),本文使用turtle库绘制这两类图形. 科赫曲线 科赫曲线的详细介绍见参考文献2,其中的绘图思路是"画正三角形,并 ...
- 谢尔宾斯基三角形GUI
源代码:https://github.com/ltoddy/Python-useful sierpinskitriangle.py from tkinter import *class Sierpin ...
- 小练手:用Canvas绘制谢尔宾斯基三角形
转载<小练手:用Canvas绘制谢尔宾斯基三角形> 补充 作者第二种画法的完整程序: PS:修改function SierpinskiTriangle(p,len,depth = 9)中d ...
最新文章
- Oracle数据库文件坏块损坏的恢复方法
- 一文解读Tensor到底是个啥玩意儿?(附代码)
- c语言:找出1到4000中,数字的各位数之和能被4整除的数有多少个?
- HDFS——HDFS+Zookeeper搭建高可用HDFS
- 2021年春季学期-信号与系统-第四次作业参考答案-第四小题
- JWT对称加密非对称加密
- 你了解过Spring支持的常用数据库事务传播属性和隔离级别吗?来一起看看吧!!!
- Extjs 动态生成表格
- SQL Server数据库同步问题分享[未完,待续](一)
- c++如何将int数组中的值取出*号运算符_如何用动态规划巧妙解决 “双十一” 购物时的凑单问题?羊毛薅起来!!!...
- SQL高级---SQL ALTER TABLE 语句
- 处女座的砝码-数学推论
- 模电摸索日记之《模电基础》
- PHP工程改成微擎的步骤_微擎系统搭建
- light动名词_动名词
- 前端弹出对话框 js实现 ajax交互
- java打开客户端程序_Java客户端服务器应用程序 - 已在使用的地址:connect
- 把执行结果转成json对象报错_关于JSON转换成对象 报错LinkedHashMap不能直接转成对象...
- BIOS模式怎么退出
- 2021年建筑行业税收优惠政策