使用递归,向内在屏幕上绘制三角的倍数。
下面我的错误代码
def recursiveTri(x, y, shrink):
tt.penup()
tt.setx(x)
tt.sety(y)
if x > -10:
return
for element in range(3):
tt.pendown()
tt.forward(x)
tt.right(120)
recursiveTri(x + shrink, y - shrink, shrink)
def main():
recursiveTri(-300,300,30)
main()
参考当前代码:
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9wT2xrRi5wbmcifQ==” alt =“参考当前代码”>
这是向内形状的含义,需要将其复制为三角形:
问题出在
tt.forward(x)
[请记住,如果要对称于零,则x
始终为负,并且边的长度不是x
,而是-2 * x
。由于三角形是嵌套的,因此您也可以将y
中的初始x
计算为-sqrt(3) / 2 * x
,以将外接圆并外接在该圆上的圆心放在0,0:
import turtle as tt
from math import sqrt
def recursiveTri(side, shrink):
if side < 10: return
tt.penup()
tt.setx(-side / 2)
tt.sety(sqrt(3) / 4 * side)
tt.pendown()
for _ in range(3):
tt.forward(side)
tt.right(120)
recursiveTri(side - shrink, shrink)