Python Turtle:使用circle()方法绘制同心圆

时间:2014-07-08 15:49:20

标签: python turtle-graphics

我展示了用Python的Turtle模块绘制的孙子图案, 他要求看到同心圆。 我认为使用海龟circle()绘制它们会更快 而不是写我自己的代码来生成一个圆圈。哈!我被卡住了。 我看到产生的圆圈在乌龟的周围开始 当前位置及其绘制方向取决于龟的当前 运动的方向,但我无法弄清楚我需要做什么才能得到 同心圆。 我现在不是对有效的生产方式感兴趣 同心圆:我想看看我要做什么才能得到 这种的工作方式:

def turtle_pos(art,posxy,lift):
    if lift:
        art.penup()
        art.setposition(posxy)
        art.pendown()

def drawit(tshape,tcolor,pen_color,pen_thick,scolor,radius,mv):
    window=turtle.Screen() #Request a screen
    window.bgcolor(scolor) #Set its color

    #...code that defines the turtle trl

    for j in range(1,11):
        turtle_pos(trl,[trl.xcor()+mv,trl.ycor()-mv],1)
        trl.circle(j*radius)

drawit("turtle","purple","green",4,"black",20,30)

4 个答案:

答案 0 :(得分:3)

你可以这样做:

import turtle

turtle.penup()
for i in range(1, 500, 50):
    turtle.right(90)    # Face South
    turtle.forward(i)   # Move one radius
    turtle.right(270)   # Back to start heading
    turtle.pendown()    # Put the pen back down
    turtle.circle(i)    # Draw a circle
    turtle.penup()      # Pen up while we go home
    turtle.home()       # Head back to the start pos

创建如下图片:

enter image description here

基本上它将乌龟向下移动一个半径长度,以保持所有圆圈的中心点在同一地点。

答案 1 :(得分:2)

来自文档:

  

中心是乌龟留下的半径单位。

因此,当你开始画一个圆圈时乌龟就在哪里,那个圆圈的中心与右边有一定距离。在每个圆圈之后,只需向左或向右移动一些像素,然后绘制另一个圆,其半径根据乌龟移动的距离进行调整。例如,如果您绘制一个半径为50像素的圆,然后向右移动10个像素,您将绘制另一个半径为40的圆,并且这两个圆应该是同心的。

答案 2 :(得分:0)

  

我现在对这种有效的生产方式并不感兴趣   同心圆:我想知道我必须做些什么才能获得这个方式   工作

要解决OP的问题,更改原始代码以使其正常工作是微不足道的:

turtle_pos(trl, [trl.xcor() + mv, trl.ycor() - mv], 1)
trl.circle(j * radius)

变为:

turtle_pos(trl, [trl.xcor(), trl.ycor() - mv], 1)
trl.circle(j * mv + radius)

包含上述修复和一些样式更改的完整代码:

import turtle

def turtle_pos(art, posxy, lift):
    if lift:
        art.penup()
        art.setposition(posxy)
        art.pendown()

def drawit(tshape, tcolor, pen_color, pen_thick, scolor, radius, mv):
    window = turtle.Screen()  # Request a screen
    window.bgcolor(scolor)  # Set its color

    #...code that defines the turtle trl
    trl = turtle.Turtle(tshape)
    trl.pencolor(pen_color)
    trl.fillcolor(tcolor)  # not filling but makes body of turtle this color
    trl.width(pen_thick)

    for j in range(10):
        turtle_pos(trl, (trl.xcor(), trl.ycor() - mv), True)
        trl.circle(j * mv + radius)

    window.mainloop()

drawit("turtle", "purple", "green", 4, "black", 20, 30)

enter image description here

答案 3 :(得分:-1)

所以现在我给你的是可以绘制同心圆的确切代码。

import turtle
t=turtle.Turtle()
for i in range(5):
  t.circle(i*10)
  t.penup()
  t.setposition(0,-(i*10))
  t.pendown()
turtle.done()