Страницы

Поиск по вопросам

воскресенье, 29 декабря 2019 г.

Питон, построить пятиугольник

#python #pillow


Задание такое: построить правильный пятиугольник со стороной a.

Тут обязательно должна использоваться библиотека Pillow.

Вот мой код:

import PIL
from PIL import Image, ImageDraw
a=int(input("Введите размер стороны а: "))

img = Image.new("RGB",(700,700), (2555,255,255))
draw = ImageDraw.Draw(img)
draw.polygon((0.6*a,1.4*a, 1.3*a,0.9*a, 2*a,1.4*a, 1.7*a,2.2*a ,0.9*a,2.2*a), fill="lightblue",outline
=(255,0,0))

img.show()


Координаты подбирал сам, и в общем то, пятиугольник похож на правильный, но доказать
это не просто. 
Также сделали замечание, что сторона "a" должна вводиться с клавиатуры в пикселях,
а у меня получается своя условная единица.. Еще каким то образом нужно на картинке
подписать "Это пятиугольник". 

Вот результат работы моей программы:


    


Ответы

Ответ 1



Зачем подбирать координаты, если их можно вычислить? import math from PIL import Image, ImageDraw, ImageFont x=250 #центр полигона (x) y=250 #центр полигона (y) n=5 #число сторон полигона r=200 #радиус окружности в которую вписываем полигон #получаем координаты вершин coords=[(x + r * math.cos(2 * math.pi * i / n), y + r * math.sin(2 * math.pi * i / n)) for i in range(1, n+1)] img = Image.new("RGB",(500,500), (255,255,255)) draw = ImageDraw.Draw(img) draw.polygon((coords), fill="lightblue",outline =(255,0,0)) unicode_font = ImageFont.truetype("arial.ttf", 22) draw.text ((100,40), u'Это многоугольник', font=unicode_font, fill='red' ) img.show() Ну, и поскольку изначально дается длина стороны, то радиус описываемой окружности тоже легко вычислить: r = side/(2*math.sin(math.pi/n)) #side - длина стороны, n - количество сторон

Комментариев нет:

Отправить комментарий