Алгоритм: создание шестиугольников с подушкой

1

Я пытаюсь создать единое количество шестиугольников через 32 x 32 изображения. Я пытался придумать алгоритм, который работает, но не смог придумать ничего хорошего. Это то, к чему я придумал

for i in range(0,20):
    im = Image.new("1",(400,400))
    draw = ImageDraw.Draw(im)
        for j in range(i, 20):
           if i > 3 and j > 3:
           half = i/2
           difference = i-half
           z = half/2
           draw.polygon([(z/3,i),(z,half),(z*3,half),(i,i),(z*3,i+difference),(z,i+difference)], fill="white")
           im.show()

проблема с этим алгоритмом заключается в том, что переменная z находится в 0 (или очень близко), если вы не достигнете довольно больших чисел, что, к сожалению, ограничено в моей ситуации. Шестиугольники не обязательно должны быть регулярными, им просто нужно "смотреть", как шестиугольники.

Любая помощь приветствуется

Теги:
algorithm
pillow

1 ответ

0
Лучший ответ

Если по какой-то причине кто-либо сталкивается с подобной проблемой, это то, с чем я столкнулся. Если кто-то может придумать более быстрое решение, не стесняйтесь публиковать сообщения.

   for i in range(0,pixels):
    im_rect = Image.new("1", (pixels,pixels))
    draw_rect = ImageDraw.Draw(im_rect)
    for j in range(i, pixels):
        for x in range(i,pixels - i):
            for y in range(j,pixels -j):
                if i > 3 and j > 3 and i +(3*x) < pixels and y+j < pixels:
                    draw.polygon([(i,j),(i+x,y-j),(i+x+x,y-j),(i+(3*x),j),(i+x+x,y+j),(i+x,y+j)], fill="white")

Ещё вопросы

Сообщество Overcoder
Наверх
Меню