我正在尝试创建和绘制六边形网格。为此,我定义了以下函数:
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点更好的方法,请告诉我! 接下来,我将遍历包含所有中心点的列表。然后,我继续在每个中心周围绘制一个六边形:
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)
由于我的绘图似乎不正确,因此我也在每个中心周围画了一个圆。这个圆似乎不是一个圆,而是一个椭圆:
放大时更明显:
为什么我没有圈子?
答案 0 :(得分:0)
您的计算还可以,唯一不好的是比例尺(x轴不作为y轴刻度)。
只需添加:
plt.xlim(0, 4.5)
plt.ylim(0, 3.5)
plt.gca().set_aspect('equal', adjustable='box')
plt.show()