迭代算法的应用
import turtle
def drawTriangle(points, color, myTurtle):
myTurtle.fillcolor(color) # 设置箭头颜色
myTurtle.up() # 抬起画笔
myTurtle.goto(points[0][0], points[0][1]) # 走到三角形第一个角点处
myTurtle.down() # 落下画笔
myTurtle.begin_fill() # 开始填充
myTurtle.goto(points[1][0], points[1][1]) # 画第一条边
myTurtle.goto(points[2][0], points[2][1]) # 画第二条边
myTurtle.goto(points[0][0], points[0][1]) # 画第三条边
myTurtle.end_fill # 结束填充
def getMid(p1, p2): # 获取三角形的中点
return ((p1[0]+p2[0])/2, (p1[1]+p2[1])/2)
def sierpinski(points, degree, myTurtle):
colormap = ['blue', 'red', 'green', 'white', 'yellow', 'violet', 'orange']
drawTriangle(points, colormap[degree], myTurtle) # 调用画三角形的函数,画出最外面的那个三角形
if degree > 0: # 控制迭代的深度
# 先画左下角的三角形
sierpinski([points[0],
getMid(points[0], points[1]),
getMid(points[0], points[2])],
degree-1, myTurtle)
# 再画上面的三角形
sierpinski([points[1],
getMid(points[0], points[1]),
getMid(points[1], points[2])],
degree-1, myTurtle)
# 最后画右下角的三角形
sierpinski([points[2],
getMid(points[2], points[1]),
getMid(points[0], points[2])],
degree-1, myTurtle)
def main():
# 创建实例
myTurtle = turtle.Turtle()
# 创建窗口
myWin = turtle.Screen()
# 设置最大三角形的位置
myPoints = [[-100, -50], [0, 100], [100, -50]]
# 调用函数画图,3代表分割的深度
sierpinski(myPoints, 3, myTurtle)
# 窗口停留至点击
myWin.exitonclick()
main()