1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 绘制谢尔宾斯基三角形

绘制谢尔宾斯基三角形

时间:2020-03-03 16:09:14

相关推荐

绘制谢尔宾斯基三角形

import turtle

import math

turtle.speed(100)

'''

通过连接 3 个点的方式绘制三角形

pos是元组的元组((x1,y1),(x2,y2),(x3,y3))

'''

def draw\_triangle(pos):

turtle.penup()

# 移到第一个点

turtle.goto(pos[0])

turtle.pendown()

# 连接 3 个点

for i in [1, 2, 0]:

turtle.goto(pos[i])

# 计算三角形任意两边的中点坐标

def get\_mid(p1, p2):

return (p1[0] + p2[0]) / 2, (p1[1] + p2[1]) / 2

'''

绘制 谢尔宾斯基三角形

'''

def sierpinski\_triangle(*pos):

# 用给定的点绘制三角形

draw_triangle(pos)

p1, p2, p3 = pos

# 计算三角形的边长

side = math.fabs((p3[0] - p1[0]) / 2)

# 如果边长满足条件,继续绘制其它三角形

if side > 10:

# p1和p2线段 的中心点

p1_p2_center_x, p1_p2_center_y = get_mid(p1, p2)

# p2和p3线段 的中心点

p2_p3_center_x, p2_p3_center_y = get_mid(p2, p3)

# p1和p3线段 的中心点

p1_p3_center_x, p1_p3_center_y = get_mid(p1, p3)

# 绘制左下角三角形

sierpinski_triangle(p1, (p1_p2_center_x, p1_p2_center_y), (p1_p3_center_x, p1_p3_center_y))

# 绘制上边三角形

sierpinski_triangle((p1_p2_center_x, p1_p2_center_y), p2, (p2_p3_center_x, p2_p3_center_y))

# 绘制右下角三角形

sierpinski_triangle((p1_p3_center_x, p1_p3_center_y), (p2_p3_center_x, p2_p3_center_y), p3)

# 第一个点指左边点,第二点指上面的点,第三个指右边的点。

sierpinski_triangle((-200, -100), (0, 200), (200, -100))

turtle.done()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。