用递归的方法循环绘制内切等边三角形,参数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()