喜欢请点关注
代码见Github:https://github.com/YZYloveTDQ/turtle-application
谢尔宾斯基三角形
谢尔宾斯基(sierpinskr)三角形也是一种分形构造,平面称之为谢尔宾斯基三角形,立体的叫做谢尔宾斯基金字塔
谢尔宾斯基三角形从理解上就是给定一个三角形,以“品”字形在里面堆叠三角形,每一层(degree)的三角形边长都是原三角形一半
白色部分:空白
黑色部分:拼接的sierpinskr三角形
degree:程度,堆叠的次数
本文由“壹伴编辑器”提供技术支持
谢尔宾斯基三角形作图思路
根据自相似性,谢尔宾斯基三角形是由3个尺寸减半的sierpinskr三角形按“品”字形拼叠成的
在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是一个字典,存储三角形三个点的坐标。每个坐标又是一个元组
绘图顺序:
先画左三角形
再画上三角形
最后画右边三角形
三角形绘图顺序:
先描三角形左点 left
再描三角形顶点 top
最后描三角形右点 right
本文由“壹伴编辑器”提供技术支持
代码
运行结果:
本文由“壹伴编辑器”提供技术支持
递归的理解
递归在理解上可以理解为循环,如果递归调用的后面还有程序则可以理解为循环的嵌套。当前递归循环结束时,程序会跳转到基本结束条件的上一层循环继续执行后面的程序
本文由“壹伴编辑器”提供技术支持
通过绘画的过程,可以更好的理解递归的原理和流程:
喜欢本文点个在看