【问题标题】:Start pixel of turtle python simulator龟蟒模拟器的起始像素
【发布时间】:2022-01-04 05:43:46
【问题描述】:

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

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

【问题讨论】:

  • 您应该提供最少的代码来说明您的问题。如果你不知道如何开始,我相信有几十个关于如何用乌龟画圆的教程。
  • 我知道如何画一个圆,但我们只是将半径作为参数,对吧?如何找到它的中心坐标?
  • @mozway 我已经添加了代码
  • 我不记得确切但中心是乌龟的位置,或者我认为乌龟从圆的一侧开始。这意味着您可以计算中心的位置(很可能,您必须在开始绘制之前在适当的方向上移动一个半径)

标签: python turtle-graphics python-turtle


【解决方案1】:
import turtle
ob = turtle.Turtle()
ob.right(100)       

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

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

ob.circle(5)

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

海龟开始在海龟当前指向的任何方向上画圆。对于刚孵出的海龟来说,这是 0 度,在屏幕上 right。 (使用模式'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)

【讨论】:

  • 非常感谢。答案很详细,很有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-04
  • 2016-09-08
  • 1970-01-01
  • 1970-01-01
  • 2016-04-22
  • 2012-09-05
相关资源
最近更新 更多