Круг, многоугольник, точка в модуле turtle Python
В материале представлены команды, отвечающие за рисование круга, многоугольника и точки в модуле turtle Python.
Примечание: можно использовать как функции модуля, так и одноименные методы экземпляра пера/холста. например:
>>> import turtle # функция модуля >>> turtle.circle(100) # создание экземпляра пера >>> pen = turtle.Turtle() >>> pen.circle(100)
Содержание:
- turtle.circle() рисует круг/овал/многоугольник,
- turtle.dot() рисует круглую точку,
turtle.circle(radius, extent=None, steps=None) :
Метод turtle.circle() рисует круг заданного радиуса radius . Центр круга будет слева от пера черепахи на расстоянии радиуса radius .
Аргумент extent — это угол, который определяет, какая часть круга будет нарисована. Если extent не указан, то рисует весь круг. Если extent не является полным кругом (360), то одна конечная точка дуги является текущим положением пера. Если радиус положительный, то рисует дугу против часовой стрелки, в противном случае — по часовой стрелке.
Направление черепахи изменяется на величину extent .
Так как круг аппроксимируется вписанным правильным многоугольником, аргумент steps определяет количество используемых шагов. Если steps не указан, то он будет рассчитан автоматически. Может использоваться для рисования правильных многоугольников.
- radius — число ( int или float ).
- extent — число ( int или float ). или None .
- steps — целое число int или None .
>>> import turtle >>> pen = turtle.Turtle() # позиция пера до рисования >>> pen.position() # (0.00,0.00) # направление пера до рисования >>> pen.heading() # 0.0 # рисуем круг >>> pen.circle(50) # позиция пера после рисования >>> pen.position() # (-0.00,0.00) # направление пера после рисования >>> pen.heading() # 0.0
>>> import turtle >>> pen = turtle.Turtle() # рисуем полукруг >>> pen.circle(120, 180) # позиция пера после рисования >>> pen.position() # (0.00,240.00) # направление пера после рисования >>> pen.heading() # 180.0
Рисуем пятиугольник и шестиугольник:
>>> import turtle >>> pen = turtle.Turtle() >>> pen.home() # рисуем пятиугольник >>> pen.circle(150, steps=5) # рисуем шестиугольник >>> pen.circle(200, steps=6)
>>> import turtle >>> pen = turtle.Turtle() def talloval(pen, r): """Вертикальный овал""" pen.left(45) for _ in range(2): # длинная изогнутая часть pen.circle(r,90) # короткая изогнутая часть pen.circle(r/2,90) def flatoval(pen, r): """Горизонтальный овал""" pen.right(45) for _ in range(2): pen.circle(r,90) pen.circle(r/2,90) >>> pen.clear() >>> talloval(pen, 50) >>> pen.home() >>> flatoval(pen, 50)
Для рисования овала можно воспользоваться настройкой формы круглого пера turtle.shape(«circle») и turtle.shapesize(5,4,1) :
>>> import turtle >>> pen = turtle.Turtle() >>> pen.shape("circle") >>> pen.shapesize(5,4,1) >>> pen.fillcolor("white")
turtle.dot(size=None, *color) :
Метод turtle.dot() рисует круглую точку с диаметром size , используя цвет color .
Если размер диаметра size не указан, то используется максимум: pensize + 4 и 2 * pensize .
- size — целое число int >= 1.
- color — строка (например ‘blue’ ) или кортеж (73, 15, 128) , означающая цвет RGB.
>>> import turtle >>> turtle.home() >>> turtle.dot() >>> turtle.fd(50); turtle.dot(20, "blue"); turtle.fd(50) >>> turtle.position() # (100.00,-0.00) >>> turtle.heading() # 0.0
- КРАТКИЙ ОБЗОР МАТЕРИАЛА.
- Рисование/передвижение пера по холсту, модуль turtle
- Поднять/опустить перо при движении в модуле turtle Python
- Скрыть/показать перо на холсте в модуле turtle Python
- Толщина пера и его форма, модуль turtle
- Цвет пера/карандаша и цвет заливки в модуле turtle Python
- Смена позиции пера на холсте в модуле turtle Python
- Сведения о позиции пера на холсте в модуле turtle
- Круг, многоугольник, точка в модуле turtle Python
- Копия формы пера, модуль turtle Python
- Очистка рисунка активного пера в модуле turtle Python
- Функция write() модуля turtle, вывод текста на холсте
- События мыши для пера в модуле turtle
- События клавиатуры и мыши для холста в модуле turtle Python
- Вызвать диалоговое окно в модуле turtle
- Управление холстом/экраном в модуля turtle
- Управление анимацией пера в модуля turtle Python
- Специальные методы пера модуля turtle
- Настройки и специальные методы холста модуля turtle
Еще один способ нарисовать эллипс с помощью Черепашки в 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')
Окружности и многоугольники
Для рисования окружностей будем использовать команду t.circle(d).
Синяя окружность радиуса 100:
t.color('blue') t.circle(100)

Черепашка рисует окружность, двигаясь против часовой стрелки. Важно, в какую сторону смотрит черепашка в начальный момент.
Повернём черепашку на 120 градусов влево и добавим красную окружность:
t.color('blue') t.circle(100) t.left(120) t.color('red') t.circle(100)

Ещё раз повернём черепашку на 120 градусов влево и добавим зелёную окружность:
t.color('blue') t.circle(100) t.left(120) t.color('red') t.circle(100) t.left(120) t.color('green') t.circle(100)

Попробуйте воспроизвести эти примеры и придумать свои!
Многоугольники
Для рисования правильных многоугольников будем использовать команду t.circle(d, 360, n).
Здесь d — радиус описанной окружности, а n — число сторон многоугольника.
t.color('red') t.circle(100, 360, 3)

Два треугольника, перед рисованием второго сделан поворот на 180 градусов:
t.color('red') t.circle(100, 360, 3) t.left(180) t.circle(100, 360, 3)

Синий пятиугольник, n=5:
t.color('blue') t.circle(100, 360, 5)

Синий пятиугольник с радиусом описанной окружности 100, в котором пятугольник меньшего размера, радиус 80:
t.color('blue') t.circle(100, 360, 5) t.circle(80, 360, 5)

Попробуйте воспроизвести эти примеры и придумать свои!
Команды для рисования Черепашкой
Перемещать черепашку мы уже умеем. Теперь научимся работать с пером. Перо — это инструмент с помощью которого Черепашка рисует линии.
Команда turtle.penup() подымает перо. После чего, Черепашка не оставляет на холсте след. Чтобы начать снова рисовать необходимо опустить перо командой turtle.pendown(). По умолчанию у Черепашки перо всегда опущено. Команды penup() и pendown() применяются без аргументов в скобках.
#Подымаем перо turtle.penup()
#Опускаем перо turtle.pendown()
Сокращенные версии команды: turtle.up() или turtle.pu() чтобы поднять перо и turtle.down() или turtle.pd() чтобы опустить.
Еще одно свойство пера — это его толщина. То, насколько толстым будет след оставляемый Черепашкой. Устанавливается он командой turtle.pensize() или turtle.width(), где в скобках указывается число, толщина в пикселях линии, которую рисует Черепашка.
#Рисуем линию толщиной в пять пикселей turtle.pensize(5)
По умолчанию Черепашка рисует линию черным цветом. Но с помощью команды turtle.pencolor() мы можем его изменить.
В качестве аргументов мы можем записать название цвета, на английском языке, которым Черепашка должна будет рисовать линии. Например red, green или blue. Передаваемые названия должны быть обязательно взяты в кавычки или апострофы.
#Рисуем линии красным цветом turtle.pencolor('red')
Цвет также можно задать используя палитру RGB, записав три числа от 0 до 255 через запятую.
#Рисуем линии зеленым цветом используя RGB палитру turtle.pencolor(0,255,0)
Либо задав цвет в виде шестнадцатеричного числа, так же взяв его в кавычки или апострофы.
#Рисуем линии синим цветом используя шестнадцатеричную запись turtle.pencolor('#0000ff')
Черепашка может закрашивать замкнутые области. Для начала необходимо установить цвет заливки используя команду turtle.fillcolor(). В качестве аргументов указываем цвет, как и в цветет линии.
Для того, чтобы указать начало заливки задаем команду turtle.begin_fill(), а чтобы закончить turtle.end_fill().
#Указываем цвет заливки turtle.fillcolor('#0000ff') turtle.begin_fill() #Тут записываем команды движения Черепашки turtle.end_fill()
Для заливки необязательно Черепашкой рисовать замкнутую область. В этом случае между местом откуда мы начали заливку и где ее закончили будет проведена граница, по которой и пройдет заливка фигуры.
Менять цвет линии и заливки можно так-же командой turtle.color(). Этой команду можно передать как один аргумент, так и два, записав их через запятую. Первый аргумент устанавливает цвет линии, а второй цвет заливки.
#Первый аргумент изменяет цвет линии, второй цвет заливки turtle.color('#0000ff', 'red')