使用 python 绘制圆圈目标
draw a circles target using python
我的程序使用 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)
代码制作了一条移动的曲线,但我希望立即绘制圆。
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()
或者,我们可以自己消除圆形游标:
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()
但这并没有产生令人满意的结果:
当然,我们总是可以作弊并使用 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()
方法好,即使你提高 turtle.circle()
的 steps
参数:
for the first code how to add an arrow on the top of each curve, one
at down of each curve?
修改我的第三个示例更容易完成,因为我们可以更轻松地绘制半圆并标记光标。我正在使用自定义光标来跨圆圈对齐箭头:
import turtle
def origin_circle(turtle, radius):
turtle.penup()
turtle.sety(-radius)
turtle.pendown()
turtle.stamp()
turtle.circle(radius, extent=180, steps=45)
turtle.stamp()
turtle.circle(radius, extent=180, steps=45)
turtle.addshape("pointer", ((0, 0), (5, -4), (0, 4), (-5, -4)))
turtle.shape("pointer")
turtle.tracer(False)
for idx, radius in enumerate(range(20, 120, 20), start=0):
origin_circle(turtle, radius)
turtle.hideturtle()
turtle.tracer(True)
turtle.mainloop()
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()
我的程序使用 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)
代码制作了一条移动的曲线,但我希望立即绘制圆。
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()
或者,我们可以自己消除圆形游标:
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()
但这并没有产生令人满意的结果:
当然,我们总是可以作弊并使用 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()
方法好,即使你提高 turtle.circle()
的 steps
参数:
for the first code how to add an arrow on the top of each curve, one at down of each curve?
修改我的第三个示例更容易完成,因为我们可以更轻松地绘制半圆并标记光标。我正在使用自定义光标来跨圆圈对齐箭头:
import turtle
def origin_circle(turtle, radius):
turtle.penup()
turtle.sety(-radius)
turtle.pendown()
turtle.stamp()
turtle.circle(radius, extent=180, steps=45)
turtle.stamp()
turtle.circle(radius, extent=180, steps=45)
turtle.addshape("pointer", ((0, 0), (5, -4), (0, 4), (-5, -4)))
turtle.shape("pointer")
turtle.tracer(False)
for idx, radius in enumerate(range(20, 120, 20), start=0):
origin_circle(turtle, radius)
turtle.hideturtle()
turtle.tracer(True)
turtle.mainloop()
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()