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 参数:
对于第一个代码如何在每条曲线的顶部添加一个箭头,一个
在每条曲线的下方?
修改我的第三个示例更容易,因为我们可以更轻松地绘制半圆并标记光标。我正在使用自定义光标跨圆圈对齐箭头:
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()