Метод 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](https://i.stack.imgur.com/S7FCQ.png)
В качестве альтернативы, мы могли бы сами штамповать круговые курсоры:
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](https://i.stack.imgur.com/XIJ1F.png)
Конечно, мы всегда можем обмануть и использовать 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
в turtle.circle()
:
![enter image description here](https://i.stack.imgur.com/LNer7.png)
для первого кода, как добавить стрелку в верхней части каждой кривой, один
вниз каждой кривой?
Это проще сделать, изменив мой третий пример, так как мы можем легче рисовать полукруги и ставить курсор. Я использую пользовательский курсор для выравнивания стрелок по кругу:
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()
![enter image description here](https://i.stack.imgur.com/FIwPE.png)