使用python绘制一个圆形目标

时间:2018-05-08 16:42:40

标签: python python-3.x turtle-graphics

Circles

我的程序使用turtle绘制圆圈目标:

import turtle

def origin_circle(turtle, radius):
    turtle.penup()
    turtle.goto(0, -radius)
    turtle.pendown()
    turtle.circle(radius)

for radius in range(100, 200, 10):
    origin_circle(turtle, radius)

代码生成一条移动曲线,但我希望立刻绘制圆形。

2 个答案:

答案 0 :(得分:0)

circle()方法绘制一个圆圈,但dot()方法会标记一个圆圈。但是,dot()方法没有单独的行和填充概念,并且往往会覆盖自身,所以我们必须小心处理它:

import turtle

def origin_circle(turtle, radius):
    turtle.dot(radius + 2, 'black')
    turtle.dot(radius, 'white')

for radius in range(200, 0, -40):
    origin_circle(turtle, radius)

turtle.hideturtle()

turtle.mainloop()

enter image description here

或者,我们可以自己标记圆形游标:

import turtle

def origin_circle(turtle, radius):
    turtle.shapesize(radius)
    turtle.stamp()

turtle.shape('circle')
turtle.color('black', 'white')

for radius in range(10, 0, -2):
    origin_circle(turtle, radius)

turtle.hideturtle()

turtle.mainloop()

但这并不能令人满意:

enter image description here

当然,我们总是可以欺骗并使用turtle.speed('fastest'),或者更好的是,完全取消追踪:

import turtle

def origin_circle(turtle, radius):
    turtle.penup()
    turtle.sety(-radius)
    turtle.pendown()
    turtle.circle(radius, steps=90)

turtle.tracer(False)

for radius in range(20, 120, 20):
    origin_circle(turtle, radius)

turtle.hideturtle()

turtle.tracer(True)

turtle.mainloop()

但结果仍然不如turtle.dot()方式好,即使你提升了steps的{​​{1}}参数:

enter image description here

  

第一个代码如何在每条曲线的顶部添加一个箭头,一个   在每条曲线的下方?

修改我的第三个例子比较容易,因为我们可以更容易地绘制半圆并标记光标。我使用自定义光标进行圆圈对齐:

turtle.circle()

enter image description here

答案 1 :(得分:0)

import turtle
ab=turtle.Turtle()
ab.speed(0)
import turtle

def zielscheibe(ringe=10):
    if ringe<1 or ringe>1000:
        ab.write('Bitte eine Zahl zwischen 1 und 1000 eingeben')
        return
    ab.pu()
    ab.goto(300,0)
    ab.seth(90)
    x=300/ringe
    for n in range(ringe):
        ab.pd()
        if n ==ringe-1:
            ab.color('black')
        elif n %2==0:
            ab.color('red')
        else:
            ab.color('white')
        ab.begin_fill()
        ab.circle(300-x*n)
        ab.end_fill()
        ab.pu()
        ab.left(90)
        ab.fd(x)
        ab.right(90)

zielscheibe(10)
turtle.mainloop()