启动龟蟒模拟器的像素



乌龟模拟器对移动物体很有帮助,但我面临的问题是,我不知道"乌龟箭头"开始绘制的屏幕的像素值。此外,当绘制圆时,很难计算出其中心的像素坐标。下面是一个代码示例:

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)       

乌龟的头部从哪里开始(像素坐标(?

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

ob.circle(5)

现在乌龟画了一个半径为5的圆,但它最初会指向哪个方向?

乌龟开始沿着乌龟当前指向的任何方向绘制圆。对于刚孵化的海龟来说,这是0度,这在屏幕上是正确的。(使用模式'logo'更改此默认值。(

由于你的乌龟第一次向右转了100度,它将以260度的航向(360-100(开始画画,稍微向左直下(即270度(

我们如何算出这个圆的中心?

如果圆圈是用刚孵化的乌龟画的,那么中心将位于(0, 5)。(例如,为了使圆在(0, 0)上居中,我们将在Y方向上移动-5(即半径(像素。(

但你的乌龟一开始的航向是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(

最新更新