用遞歸的方法循環繪製內切等邊三角形,參數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()