• python 谢尔宾斯基三角形的递归实现


    import turtle
    
    def draw(points):
        # 根据三个坐标,画一个三角形
        t.penup()
        t.goto(points['left'])
        t.pendown()
        t.goto(points['top'])
        t.goto(points['right'])
        t.goto(points['left'])
        
    
    def getMid(p1,p2):
        # 获取两个坐标的中点的坐标
        return (p1[0]+p2[0])/2,(p1[1]+p2[1])/2
        
    def sierpinski(degree,points):
        draw(points)
        if degree > 0:
            # 以原三角形左边底角坐标为起点,画一个边长为原来三角形边长一半的等边三角形
            sierpinski(degree-1,{'left':points['left'],'top':getMid(points['left'],points['top']),'right':getMid(points['left'],points['right']) })
            
            # 以原三角形左边中点坐标为起点,画一个边长为原来三角形边长一半的等边三角形
            sierpinski(degree-1,{'left':getMid(points['left'],points['top']),'top':points['top'],'right':getMid(points['top'],points['right'])  })
            
            # 以原三角形底边中点坐标为起点,画一个边长为原来三角形边长一半的等边三角形
            sierpinski(degree-1,{'left':getMid(points['left'],points['right']),'top':getMid(points['top'],points['right']),'right':points['right'] })
            
            
    t = turtle.Turtle()
    t.speed(3)  # 画笔速度
    # 初始的三角形的三个顶点
    points = {'left':(-200,-100),'top':(0,200),'right':(200,-100)}
    sierpinski(3,points)
    
    turtle.done()
  • 相关阅读:
    连续时间单位冲激信号δ(t)的基本性质
    数据结构练习
    数据结构练习
    数据结构练习
    使用 matplotlib 绘制带日期的坐标轴
    数据结构练习
    c++ primer 练习10.33_p363
    C++迭代器之'插入迭代器
    C++ 11 Lambda表达式
    《C++ Primer》读书笔记—第十章 泛型算法
  • 原文地址:https://www.cnblogs.com/wztshine/p/12990045.html
Copyright © 2020-2023  润新知