如何使用Python3绘制内切等边三角形

用递归的方法循环绘制内切等边三角形,参数n影响每一步的缩退距离,以及最小等边三角形的边长。

最后效果如下:
在这里插入图片描述
是不是很酷呢,代码如下,快试试吧:

from turtle import *  # 导入turtle模块
from math import *  # 导入math模块

# 设置画图环境
speed(0)	 # 速度最快
ht()	# 隐藏箭头

# 定义绘制三角形的递归函数
def sanjiaoxing(L,n):  #L是最大等边三角形边长,n为内等边三角形的缩退距离
    # 绘制三角的基础语句
    for i in range(3):
        forward(L)
        left(120)
    if L/2 > n:
        # 计算新的等边三角形边长
        c = ((L-n)**2 + n**2 - 2*(L-n)*n*cos(60*pi/180))**(1/2)
        # 计算偏角
        j = (acos((c**2 + (L-n)**2 - n**2)/(2*c*(L-n))))/pi*180
        left(60)
        forward(n)
        right(60+j)
        return sanjiaoxing(c,n)   # 调用函数本身并传入新的边长


if __name__ == '__main__':
    sanjiaoxing(200,5)

done()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章