乌龟为什么画不好风筝?

问题描述 投票:0回答:2

我一直在尝试绘制具有特定尺寸的风筝形状,但终点与起点无法连接。

Kite reference

这是我的代码

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)),向左而不是向右,但结果是相同的。 有人知道这是为什么以及如何解决它吗?

谢谢

编辑 Here's the outcome. 我在起点和终点添加了点,以更好地指示问题。你还可以看到它看起来有点不对称,所以这意味着要么我的角度不对,要么乌龟无法画风筝。

python turtle-graphics python-turtle
2个回答
1
投票
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() 函数,以在绘制形状后保持窗口打开。


0
投票

我相信问题是你的“风筝参考”不正确。如果我们对照风筝计算器,我们发现顶角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()

我们得到:

© www.soinside.com 2019 - 2024. All rights reserved.