我正在尝试在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(或非常接近),除非你得到相当大的数字,我不幸在我的情况下受到限制。六边形不需要是规则的,它们只需要“看起来”像六边形。
非常感谢任何帮助
答案 0 :(得分: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")