Еще один способ нарисовать эллипс с помощью Черепашки в Python
Рассмотрим еще один вариант как можно нарисовать эллипс используя Черепашку из модуля Tutrle в Python.
В прошлой записи, мы для рисования вычисляли точки по периметру эллипса, а затем обходили их Черепашкой. Теперь для рисования воспользуемся командой circle(), которая рисует окружность. С помощью нее нарисуем 4 дуги по 90° с двумя разными радиусами. Но для удобства рисования фигуры в дальнейшем, один из радиусов, с которого Черепашка будет начинать рисовать эллипс, разобьем на две части, по 45°, как показано на анимации.

Получим вот такой код, где a и b — это радиусы нашего эллипса. Изменяя их, можно рисовать эллипсы различной формы. Команде circe() передадим два параметра, радиус окружности и угол дуги окружности.
import turtle a = 150 b = 90 turtle.circle(a, 45) turtle.circle(b, 90) turtle.circle(a, 90) turtle.circle(b, 90) turtle.circle(a, 45)
Этот способ удобен еще и тем, что эллипс рисуется относительно направления черепашки. Достаточно ее повернуть на определенное значение, чтобы нарисовать эллипс с нужным углом наклона.
Теперь напишем функцию, которая будет рисовать наш эллипс. Будем принимать обязательные параметры, это значения радиусов эллипса a и b, необязательные: tilt — угол наклона эллипса, по умолчанию 0°; color — цвет границы эллипса, по умолчанию черный; fill — заливка фигуры цветом, по умолчанию заливает прозрачным цветом.
Наклон эллипса осуществляется поворотом Черепашки налево на переданный в параметрах угол, а после рисования возвращаем исходное положение Черепашки поворотом направо, на тоже значение градусов.
import turtle
def ellipse(a, b, tilt=0, color='black', fill=''):
"""
This function draws an ellipse.
"""
turtle.color(color)
turtle.fillcolor(fill)
turtle.left(tilt)
turtle.begin_fill()
turtle.circle(a, 45)
turtle.circle(b, 90)
turtle.circle(a, 90)
turtle.circle(b, 90)
turtle.circle(a, 45)
turtle.end_fill()
turtle.right(tilt)
ellipse(150, 60)
ellipse(120, 50, tilt=25)
ellipse(100, 35, color='blue', fill='orange')
Посмотреть Live Demo












