递归应用之谢尔宾斯基三角形解法2Python

本文介绍了使用递归方法绘制谢尔宾斯基三角形的第二种思路,从大三角形开始,逐步在每个阶段的三角形内部添加倒置的小三角形。通过递归实现不同阶数的谢尔宾斯基三角形,详细讨论了递归过程和关键点,如顶点的处理。
摘要由CSDN通过智能技术生成

递归应用之谢尔宾斯基三角形解法2

上一种方法是逆向思维,将挖掉后的图形看成是三个呈品字形摆放的小三角形,然后递归做。那么如果就正常思路做呢?其实也是比较容易想到的,就是先绘制出大三角形,然后再画出挖掉的图形即可。

那么如何如何绘制挖掉的三角形呢?可以看出来,0阶的没有(挖掉的)三角形,一阶的就只有一个三角形,二阶就是在一阶的基础上的每个三角形内有一个三角形。和上一篇文章一样,二阶就是在一阶的基础上每个新生成的三角形,三阶就是在二阶的基础上继续。。。

因为是在零阶的基础上画三角形(或者说至少是0阶的),所以一开始就需要直接画出来,然后递归的时候再判断。(注意由于挖掉的三角形是倒置的三角形,所以此时的‘top’其实就是底部的顶点‘foot’)

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)

def sierpinski(degree, points):
    colormap = ['blue', 'red', 'green', 'yellow', 'orange&
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值