python递归实现谢尔宾斯基三角形

兄弟萌,话不多说,show me the code!

import turtle

t = turtle.Turtle()

def sierpinski(degree,points):
    colormap = ['blue','red','green','white','yellow','orange','brown']
    drawTriangle(points,colormap[degree%len(colormap)])
    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)

if __name__ == '__main__':
    points = {'left':(-200,-100),'top':(0,200),'right':(200,-100)}
    sierpinski(3,points)
    turtle.done()

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值