如何绘制/管理六边形网格?

Luk*_* Vo 7 java algorithm graphics hexagonal-tiles

我读过这篇文章:在C中生成/创建六边形网格.但看起来作者和回答者都已经放弃了它.

?(hexagonSide - hexagonWidth * hexagonWidth):什么是六边形和六边形宽度?是不是<0(所以无法计算平方根).

而且,我可以将六边形放入矩形吗?我需要创建一个这样的网格:

来源:维基百科

还有一件事,我如何安排我的数组存储数据,以及获取哪些单元格紧挨着一个单元格?

我从来没有被教过关于六角形的东西,所以我对它一无所知,但我可以很容易地学到新东西,所以如果你能解释或给我一些线索,我可以自己做.

Fan*_*ius 9

表示数据的一种方法是将其想象如下:

a-b-c-d-e-
-f-g-h-i-j
k-l-m-n-o-
-p-q-r-s-t
u-v-w-x-y-
Run Code Online (Sandbox Code Playgroud)

破折号是空位置 - 它们存在于数组中,但不代表任何六边形.这里,六边形m连接到六边形c,g,h,q,r,w.一旦您对该表示没有问题,您可以通过删除空位置使其更紧凑:

abcde
fghij
klmno
pqrst
uvwxy
Run Code Online (Sandbox Code Playgroud)

Hexagon m仍然连接到六边形c,g,h,q,r,w,它只是有点难以看到.

更新 阅读:http://www-cs-students.stanford.edu/~amitp/game-programming/grids/