我一直在尝试绘制具有特定尺寸的风筝形状,但终点与起点无法连接。
这是我的代码
from turtle import *
top_vertice = 80 # degrees
middle_vertice = 119 # degrees
bottom_vertice = 42 # degrees
kite_short_side = 85
kite_long_side = 158
SOUTH = 270
fillcolor('red')
begin_fill()
setheading(SOUTH + (top_vertice // 2))
forward(kite_short_side)
right(180-middle_vertice)
forward(kite_long_side)
right(180-bottom_vertice)
forward(kite_long_side)
right(180-middle_vertice)
forward(kite_short_side)
end_fill()
我也尝试了相反的方向,即 setheading(SOUTH + (top_vertice // 2)),向左而不是向右,但结果是相同的。 有人知道这是为什么以及如何解决它吗?
谢谢
编辑 我在起点和终点添加了点,以更好地指示问题。你还可以看到它看起来有点不对称,所以这意味着要么我的角度不对,要么乌龟无法画风筝。
from turtle import *
top_vertice = 80 # degrees
middle_vertice = 119 # degrees
bottom_vertice = 42 # degrees
kite_short_side = 85
kite_long_side = 158
SOUTH = 270
fillcolor('red')
begin_fill()
setheading(SOUTH + (top_vertice // 2))
forward(kite_short_side)
right(180 - top_vertice)
forward(kite_long_side)
right(180 - bottom_vertice)
forward(kite_long_side)
right(180 - top_vertice)
forward(kite_short_side)
end_fill()
done()
关键的变化是在第二个和第四个转弯时使用 top_vertice 角度而不是 middle_vertice。每个顶点周围的角度总和应为 360 度,以确保海龟返回起点。我在末尾添加了 done() 函数,以在绘制形状后保持窗口打开。
我相信问题是你的“风筝参考”不正确。如果我们对照风筝计算器,我们发现顶角80,中角119,短边85像素,如图所示,那么长边必须是152.46像素。更正代码:
import turtle
SOUTH = 270
top_vertice = 80 # degrees
middle_vertice = 119
bottom_vertice = 42
kite_short_side = 85 # pixels
kite_long_side = 152.46 # was 158
turtle.fillcolor('red')
turtle.begin_fill()
turtle.setheading(SOUTH + top_vertice/2)
turtle.forward(kite_short_side)
turtle.right(180 - middle_vertice)
turtle.forward(kite_long_side)
turtle.right(180 - bottom_vertice)
turtle.forward(kite_long_side)
turtle.right(180 - middle_vertice)
turtle.forward(kite_short_side)
turtle.end_fill()
turtle.hideturtle()
turtle.done()
我们得到: