停止Turtle中的 "extent "参数改变圆的方向。

问题描述 投票:2回答:1

我正在做一项家庭作业,其中的说明是。

使用海龟图形,实现函数planets(), 它将模拟行星水星,金星,地球和火星的行星运动 在行星火星旋转期间。你可以假设。

  1. 在模拟开始时,所有的行星都排成一排(比如沿着负y轴)。
  2. 水星、金星、地球和火星与太阳(自转中心)的距离分别为58、108、150和228像素。
  3. 火星每圆周运动1度,地球、金星和水星将分别移动2度、3度和7.5度。

下图显示的是地球绕太阳四分之一左右时的模拟状态。请注意,水星几乎已经完成了它的第一次自转。

Expected image

我得到的输出是。

Actual image

这是我的代码

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 论点从改变圆的方向?

python python-3.x turtle-graphics python-turtle
1个回答
1
投票

问题不在于 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()

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.