我正在做一项家庭作业,其中的说明是。
使用海龟图形,实现函数planets(), 它将模拟行星水星,金星,地球和火星的行星运动 在行星火星旋转期间。你可以假设。
- 在模拟开始时,所有的行星都排成一排(比如沿着负y轴)。
- 水星、金星、地球和火星与太阳(自转中心)的距离分别为58、108、150和228像素。
- 火星每圆周运动1度,地球、金星和水星将分别移动2度、3度和7.5度。
下图显示的是地球绕太阳四分之一左右时的模拟状态。请注意,水星几乎已经完成了它的第一次自转。
我得到的输出是。
这是我的代码
import turtle
import math
s = turtle.Screen()
t = turtle.Turtle()
def jump(t,x,y):
'makes turtle t jump to coordinates (x,y)'
t.penup()
t.goto(x,y)
t.pendown()
def planets(t):
#mercury
jump(t,0,-58)
t.circle(58,337.5)
#venus
jump(t,0,-108)
t.circle(108,135)
# earth
jump(t,0,-150)
t.circle(150,90)
# mars
jump(t,0,-228)
t.circle(228,45)
planets(t)
turtle.done()
基本上,方向在改变 我怎样才能得到我想要的输出?我如何停止 extent
论点从改变圆的方向?
问题不在于 extent
的论点 circle()
而不是让海龟以完成上一个轨道时的任意方向开始新的轨道。 在绘制每个轨道之前,你需要将海龟设置为一个已知的方向。
from turtle import Screen, Turtle
def jump(t, x, y):
''' makes turtle t jump to coordinates (x, y) '''
t.penup()
t.goto(x, y)
t.pendown()
def planets(t):
# mercury
t.setheading(0)
jump(t, 0, -58)
t.circle(58, 337.5)
t.stamp()
# venus
t.setheading(0)
jump(t, 0, -108)
t.circle(108, 135)
t.stamp()
# earth
t.setheading(0)
jump(t, 0, -150)
t.circle(150, 90)
t.stamp()
# mars
t.setheading(0)
jump(t, 0, -228)
t.circle(228, 45)
t.stamp()
turtle = Turtle()
turtle.shape('circle')
turtle.shapesize(0.5)
turtle.hideturtle()
planets(turtle)
screen = Screen()
screen.exitonclick()