栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

「Python海龟画图」利用海龟画笔绘制谢尔宾斯基三角形

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

「Python海龟画图」利用海龟画笔绘制谢尔宾斯基三角形

根据坐标点绘制三角形

功能要求

在平面上给定三个点的坐标,根据三个点绘制出一个三角形。

实例代码

import turtle



'''

    指定平面上的三个点绘制并填充三角形

    points列表参数保存三角形三个点的坐标

    color参数三角形的填充颜色

'''

def drawTriangle(points, color):

    turtle.color(color)

    # 设置画笔的起点为points[0]

    turtle.penup()

    turtle.goto(points[0])

    turtle.pendown()

    turtle.begin_fill()

    turtle.goto(points[1])  # 走到points[1]

    turtle.goto(points[2])  # 走到points[2]

    turtle.goto(points[0])  # 回到points[0],完成三角形的绘制

    turtle.end_fill()



p = [[-200, -100], [0, 200], [200, -100]]   

                            # 三角形三个顶点分别为(-200, -100)、(0, 200)、(200, -100)

drawTriangle(p, "orange")   # 三角形填充orange颜色



turtle.done()

运行结果

 

绘制谢尔宾斯基三角形

功能要求

谢尔宾斯基三角形(英语:Sierpinski triangle)是一种分形,由波兰数学家谢尔宾斯基在1915年提出。它是自相似集的例子。它的豪斯多夫维是log(3)/log(2) ≈ 1.585。谢尔宾斯基三角形的构造方法。

1.取一个实心的三角形。(多数使用等边三角形)

2.沿三边中点的连线,将它分成四个小三角形。

3.去掉中间的那一个小三角形。

4.对其余三个小三角形重复1。

取一个正方形或其他形状开始,用类似的方法构作,形状也会和谢尔宾斯基三角形相近。

 

修改drawTriangle()方法,根据指定的层次,递归调用drawTriangle()方法,修改三角形的三个定点绘制出最终的谢尔宾斯基三角形。

实例代码

import turtle



turtle.speed(0)     # 设置画笔的速度

turtle.hideturtle() # 隐藏画笔



'''

    获得两个点的中间点

    point1和point2参数表示两个点的坐标

'''

def getMidPoint(point1, point2):

    return (point1[0] + point2[0]) / 2, (point1[1] + point2[1]) / 2



'''

    根据最初的三角形的单个点绘制谢尔宾斯基三角形

    points参数:保存三角形的三个定点坐标的集合

    degree参数:谢尔宾斯基三角形的层次

'''

def drawTriangle(points, degree):

    colors = ['red', 'green', 'blue', 'pink', 'violet', 'orange', 'yellow']

                                                # 定义谢尔宾斯基三角形各层的颜色

    turtle.color(colors[degree % len(colors)])  # 根据层次获取这一层填充的颜色

    # 设置points[0]为开始绘制三角形的起点

    turtle.penup()

    turtle.goto(points[0])

    turtle.pendown()

    turtle.begin_fill()

    turtle.goto(points[1])  # 走到points[1]

    turtle.goto(points[2])  # 走到points[2]

    turtle.goto(points[0])  # 回到points[0],完成三角形的绘制

    turtle.end_fill()

    if degree > 0:  # 判断degree是否大于0,是大于则递归调用drawTriangle,重新设置三角形的定点,degree-1

        drawTriangle([points[0], getMidPoint(points[0], points[1]), getMidPoint(points[0], points[2])], degree - 1)

        drawTriangle([points[1], getMidPoint(points[0], points[1]), getMidPoint(points[1], points[2])], degree - 1)

        drawTriangle([points[2], getMidPoint(points[0], points[2]), getMidPoint(points[1], points[2])], degree - 1)



p = [[-200, -100], [0, 200], [200, -100]]

                    # 绘制谢尔宾斯基三角形的起始三个坐标点

drawTriangle(p, 5)  # 根据起始的三个坐标点,绘制深度为5的谢尔宾斯基三角形



turtle.done()

运行结果

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/965727.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号