谢尔宾斯基三角形:Python+turtle

本文介绍了一种使用Python绘制谢尔宾斯基三角形的方法,通过递归算法实现复杂图形的生成,适合初学者理解和学习。
Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

 本来觉得谢尔宾斯基三角形挺难的。分析以后,其实还是挺简单的。

挺好理解,供大家一起学习

"""
    功能:绘制谢尔宾斯基三角形
    环境:python3.7
    日期:2019/1/14 21:49
    作者:指尖魔法师
    版本:1.0
"""
import turtle as t


def sanjiaoxing(san):
    """
    传入三个点坐标,绘制三角形
    """
    t.penup()
    t.goto(san[0])
    t.pendown()
    t.goto(san[1])
    t.goto(san[2])
    t.goto(san[0])


def get_mid(a, b):
    """
    计算返回2个点的中间点坐标
    """
    x = (a[0] + b[0]) / 2
    y = (a[1] + b[1]) / 2
    return [x, y]


def draw_san(size, i):
    """
    绘制谢尔宾斯基三角形函数
    :param size: 三个点坐标列表
    :param i: 递归次数
    """
    # 绘制三角形
    sanjiaoxing(size)
    if i > 0:
        # 绘制左边小三角形
        size2 = [size[0], get_mid(size[0], size[1]), get_mid(size[0], size[2])]
        draw_san(size2, i - 1)

        # 绘制上边的小三角形
        size3 = [get_mid(size[0], size[2]), get_mid(size[1], size[2]), size[2]]
        draw_san(size3, i - 1)
        
        # 绘制右边的小三角形
        size4 = [get_mid(size[0], size[1]), size[1], get_mid(size[1], size[2])]
        draw_san(size4, i - 1)


def main():
    """
    主函数
    """
    # 打印图形标题
    t.penup()
    t.left(90)
    t.forward(350)
    t.pendown()
    t.write("谢尔宾斯基三角形", False, align="center", font=("宋体", 20, "normal"))
    t.speed(5)

    # 初始三角形坐标
    points = [[-200, 0], [200, 0], [0, 300]]
    # 递归5次
    count = 5
    # 调用绘制谢尔宾斯基三角形函数
    draw_san(points, count)

    t.exitonclick()


if __name__ == '__main__':
    main()

运行结果: 

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值