使用python中turtle模块画谢尔宾斯基三角形[三向递归的算法] 您所在的位置:网站首页 turtle画图三角形 使用python中turtle模块画谢尔宾斯基三角形[三向递归的算法]

使用python中turtle模块画谢尔宾斯基三角形[三向递归的算法]

2023-09-04 10:40| 来源: 网络整理| 查看: 265

徒手画一个谢尔宾斯基三角形的步骤非常简单:从单个的大三角形开始,取它的各边中点作三条中位线, 这样就把它分成了四个新的三角形;剔除掉这四个新三角形中最中间的那个,对其余三个角上的三角形重复以上的操作。每当你画出这一系列的三角形之后,你就可以不停地将这些步骤应用于那三个角上的三角形。如果你的铅笔足够细,你就能无限的重复这些步骤。 在这里插入图片描述

# encoding:utf-8 import turtle # 根据三个坐标点画三角形并填充颜色 def draw_triangle(point1, point2, point3, t, color): t.up() t.goto(point1) t.down() t.fillcolor(color) t.begin_fill() t.goto(point2) t.goto(point3) t.goto(point1) t.end_fill() # 根据两个坐标点,返回中点坐标(元组) def getmid(point_a, point_b): return (point_a[0] + point_b[0]) * 0.5, (point_a[1] + point_b[1]) * 0.5 def sierpinski(point1, point2, point3, t, n): # 调用画三角形函数 draw_triangle(point1, point2, point3, t, colors[n]) # n为递归次数,每递进一层n-1,当n=0停止 if n: # 递进一层,每通过一个顶点和另外两个中点得到一个小三角形,每层递进三次 sierpinski(point1, getmid(point1, point2), getmid(point1, point3), t, n - 1) sierpinski(point2, getmid(point2, point1), getmid(point2, point3), t, n - 1) sierpinski(point3, getmid(point3, point1), getmid(point3, point2), t, n - 1) if __name__ == '__main__': t = turtle.Turtle() t.speed(10) t.hideturtle() # turtle.tracer(False) # 关闭动画,快速预览 # 提供三个点的坐标,与形状无关,只要能组成三角形即可 point1, point2, point3 = [-250, -200], [250, -200], [0, 200] # 提供颜色库,由n→0逐个读取颜色,可确保每一层颜色统一 colors = ['blue', 'red', 'green', 'white', 'yellow', 'violet', 'orange', 'purple'] # 递进层数,n


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有