谢尔宾斯基三角形又叫Sierpinski。今天让我们来学习谢尔宾斯基三角形。 谢尔宾斯基三角形需要用到递归知识,初学者不建议学习。谢尔宾斯基三角形的图片如下。
代码如下:
p.width(3)
p.speed(10)
p.lt(30)
def get_midpoint(a,b):
ax, ay=a
bx, by=b
return (ax+bx)/2,(ay+by)/2
def draw_triangle(a,b,c):
ax, ay=a
bx, by=b
cx, cy=c
p.penup()
p.goto(ax,ay)
p.pendown()
p.goto(bx,by)
p.goto(cx,cy)
p.goto(ax,ay)
p.penup()
def draw_sierpinski(triangle,depth):
a,b,c=triangle
draw_triangle(a,b,c)
if depth==0:
return
else:
d=get_midpoint(a,b)
e=get_midpoint(b,c)
f=get_midpoint(c,a)
draw_sierpinski([a,d,f],depth-1)
draw_sierpinski([d,b,e],depth-1)
draw_sierpinski([f,e,c],depth-1)
triangle=[[-200,-100],[0,200],[200,-100]]
draw_sierpinski(triangle,5)
p.draw()