谢尔宾斯基三角形

迭代算法的应用

import turtle
def drawTriangle(points, color, myTurtle):
    myTurtle.fillcolor(color)    # 设置箭头颜色
    myTurtle.up()    # 抬起画笔
    myTurtle.goto(points[0][0], points[0][1])    # 走到三角形第一个角点处
    myTurtle.down()    # 落下画笔
    myTurtle.begin_fill()     # 开始填充
    myTurtle.goto(points[1][0], points[1][1])   # 画第一条边
    myTurtle.goto(points[2][0], points[2][1])   # 画第二条边
    myTurtle.goto(points[0][0], points[0][1])   # 画第三条边
    myTurtle.end_fill      # 结束填充
def getMid(p1, p2):      # 获取三角形的中点
    return ((p1[0]+p2[0])/2, (p1[1]+p2[1])/2)
def sierpinski(points, degree, myTurtle):
    colormap = ['blue', 'red', 'green', 'white', 'yellow', 'violet', 'orange']
    drawTriangle(points, colormap[degree], myTurtle)   # 调用画三角形的函数,画出最外面的那个三角形
    if degree > 0:    # 控制迭代的深度
        # 先画左下角的三角形
        sierpinski([points[0],
                    getMid(points[0], points[1]),
                    getMid(points[0], points[2])],
                    degree-1, myTurtle)
        # 再画上面的三角形
        sierpinski([points[1],
                    getMid(points[0], points[1]),
                    getMid(points[1], points[2])],
                    degree-1, myTurtle)
        # 最后画右下角的三角形
        sierpinski([points[2],
                    getMid(points[2], points[1]),
                    getMid(points[0], points[2])],
                    degree-1, myTurtle)
def main():
    # 创建实例
    myTurtle = turtle.Turtle()
    # 创建窗口
    myWin = turtle.Screen()
    # 设置最大三角形的位置
    myPoints = [[-100, -50], [0, 100], [100, -50]]
    # 调用函数画图,3代表分割的深度
    sierpinski(myPoints, 3, myTurtle)
    # 窗口停留至点击
    myWin.exitonclick()
main()

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值