Я пытаюсь создать и построить сетку из шестиугольников. Для этого я определил следующую функцию:
def create_hexagon(center):
INRADIUS = 0.5
CIRCUMRADIUS = INRADIUS / math.cos(math.radians(30))
pt1 = [center[0], center[1] + CIRCUMRADIUS]
pt4 = [center[0], center[1] - CIRCUMRADIUS]
pt2 = [center[0] + INRADIUS, center[1]+CIRCUMRADIUS/2]
pt6 = [center[0] - INRADIUS, center[1]+CIRCUMRADIUS/2]
pt3 = [center[0] + INRADIUS, center[1]-CIRCUMRADIUS/2]
pt5 = [center[0] - INRADIUS, center[1]-CIRCUMRADIUS/2]
points = [pt1, pt2, pt3, pt4, pt5, pt6]
return points
Я знаю, здесь много геометрии, но я уверен, что эти 6 точек описаны правильно в зависимости от центральной точки. Если вы можете придумать более хороший способ, чем индивидуальное описание каждого из 6 пунктов, пожалуйста, дайте мне знать! Далее я прохожу по списку, который содержит все центральные точки. Затем я go вперед и строю шестиугольник вокруг каждого центра:
for pt in centers:
points = create_hexagon(pt)
hexagon = plt.Polygon(points, fill=None, edgecolor='k')
plt.gca().add_patch(hexagon)
circle = plt.Circle(pt, 0.5 / math.cos(math.radians(30)), fill=None)
plt.gca().add_patch(circle)
Так как мой график кажется неправильным, я также нарисовал круг вокруг каждого центра. И круг, кажется, не круг, а скорее эллипс:
Это более очевидно при увеличении: ![enter image description here](https://i.stack.imgur.com/ixjkn.png)
Почему я не получаю круги?