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()
运行结果
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com