turtle python 模拟器的起始像素

Start pixel of turtle python simulator

乌龟模拟器对于移动物体很有帮助,但我面临的问题是我不知道 'turtle arrow' 开始绘制的屏幕像素值。此外,在绘制圆时,很难确定圆心的像素坐标。这是一个代码示例:

import turtle
ob = turtle.Turtle()
ob.right(100)       
#Where does the turtle start with its head (pixel coordinates)?
ob.circle(5)
#Now the turtle draws a circle with radius 5, but in which direction will it point at first?
#How do we figure out the centre of this circle?

有人可以帮我解决这两个问题吗?

PS: 我正在使用 python 3.10

import turtle
ob = turtle.Turtle()
ob.right(100)       

Where does the turtle start with its head (pixel coordinates)?

海龟从原点 (0, 0) 开始。由于您没有移动乌龟,它的 head 仍在原点上方。

ob.circle(5)

Now the turtle draws a circle with radius 5, but in which direction will it point at first?

乌龟开始在乌龟当前指向的任何方向绘制圆。对于刚孵出的海龟,0 度在屏幕上右边。 (使用模式 'logo' 更改此默认值。)

自从你的乌龟第一次向右转 100 度后,它将开始以 260 度航向 (360 - 100) 开始绘制,稍微偏向直线向下的左侧(即 270 度。)

How do we figure out the centre of this circle?

如果圆圈是用刚孵化的海龟画的,那么圆心就是(0, 5)。 (例如,要使圆在 (0, 0) 上居中,我们将在 Y 方向上移动 -5(即 -radius)像素。)

但是你的乌龟以 260 度的航向开始。而且,默认情况下,圆是逆时针绘制的。因此,我们希望您的圆心位于 (5, 0) 附近,270 度的航向将绘制圆心。如果我们计算一下,向圆心旋转 90 度并投影一条 5 像素的线,我们得到:

from math import cos, sin, radians

print(5 * cos(radians(260 + 90)), 5 * sin(radians(260 + 90)))

输出:4.92403876506104 -0.868240888334652

同样,我们也可以通过以下方式获取中心位置:

ob.left(90)
ob.penup()
ob.forward(5)
print(ob.position())

输出:(4.92,-0.87)