「已注销」 2022-05-24 10:33 采纳率: 79.3%
浏览 46
已结题

Python递归谢尔宾斯基三角形

Python怎么用递归法画谢尔宾斯基三角形(3阶)

不知道怎么用坐标表示三角形

  • 写回答

3条回答 默认 最新

  • 不会长胖的斜杠 后端领域新星创作者 2022-05-24 10:49
    关注
    import turtle
    
    
    t = turtle.Turtle()
    
    
    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
    
        t.penup()
        t.goto(ax, ay)
        t.pendown()
        t.goto(bx, by)
        t.goto(cx, cy)
        t.goto(ax, ay)
        t.penup()
    
    
    def draw_sierpinski(triangle, depth):
        """
        :param triangle: 指定三角形三个顶点坐标,示例:((ax,ay),(bx,by),(cx,cy))。
        :param 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)
    
    
    if __name__ == '__main__':
        triangle = [[-200, -100], [0, 200], [200, -100]]
        draw_sierpinski(triangle, 5)
        turtle.done()
    

    望采纳

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月2日
  • 已采纳回答 5月25日
  • 创建了问题 5月24日