Еще один способ нарисовать эллипс с помощью Черепашки в 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