Блог учителя Информатики

Еще один способ нарисовать эллипс с помощью Черепашки в 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
Поделиться:
Вам также может понравится
Решение олимпиадных задач по информатике: Наименьший остаток
Решение олимпиадных задач по информатике: Последовательность
Решение олимпиадных задач по информатике: От перестановки чисел что-то меняется
Делаем Черепашку в виде снежинки