谢尔宾斯基三角形c++_Python数据结构与算法——谢尔宾斯基三角形(递归可视化)...

8c53fa3ca388b9184ff927f4b33a0374.gif

喜欢请点关注

8b4086080d5d27507a65dc1ef7e323f1.gif

代码见Github:https://github.com/YZYloveTDQ/turtle-application

谢尔宾斯基三角形

谢尔宾斯基(sierpinskr)三角形也是一种分形构造,平面称之为谢尔宾斯基三角形,立体的叫做谢尔宾斯基金字塔

f73c8447d033c945f4bac967beebb101.png

谢尔宾斯基三角形从理解上就是给定一个三角形,以“品”字形在里面堆叠三角形,每一层(degree)的三角形边长都是原三角形一半

  • 白色部分:空白

  • 黑色部分:拼接的sierpinskr三角形

  • degree:程度,堆叠的次数

ae0c46d402876a35ec3e4a49c0b23054.png

本文由“壹伴编辑器”提供技术支持

谢尔宾斯基三角形作图思路

根据自相似性,谢尔宾斯基三角形是由3个尺寸减半的sierpinskr三角形按“品”字形拼叠成的

5793407660282507a43082ce53dcc53f.png

在degree有限(堆叠次数有限)的情况下,degree=n的三角形是由三个degree=n-1的三角形按“品”字形堆叠的。同时这三个degree=n-1的三角形边长均为degree=n的三角形的一半。当degree=0时,则无法再堆叠了

  • 规模减小:degree=n-1的三角形边长是degree=n的三角形的一半

  • 基本结束条件:degree=0(不能再拼接了)

函数参数设置:

points = { 'left': (x, y), 'top': (x, y), 'right': (x, y) }

points是一个字典,存储三角形三个点的坐标。每个坐标又是一个元组

a808e5522205178e7fb73d5d7463bda5.png

绘图顺序:

  1. 先画左三角形

  2. 再画上三角形

  3. 最后画右边三角形

三角形绘图顺序:

  1. 先描三角形左点 left

  2. 再描三角形顶点 top

  3. 最后描三角形右点 right

本文由“壹伴编辑器”提供技术支持

代码

6ccabc83f33741e75518aa93f27118bb.png

运行结果:

7bb1ef04047841fbf6d563675b052764.png

本文由“壹伴编辑器”提供技术支持

递归的理解

递归在理解上可以理解为循环,如果递归调用的后面还有程序则可以理解为循环的嵌套。当前递归循环结束时,程序会跳转到基本结束条件的上一层循环继续执行后面的程序

本文由“壹伴编辑器”提供技术支持

通过绘画的过程,可以更好的理解递归的原理和流程:

喜欢本文点个在看

8b462d9bbc820b09f20e2fd95e0f72d9.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值