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