您想要做的将涉及瓷砖之间的几何关系(矩阵中的条目)
您需要一种存储和查询该信息的方法。
人们开发了几种方法来为六边形分配坐标:
一种做你想做的事情的方法,在我的脑海中,每个十六进制都有6个指向它的邻居的“指针”。当然,这些指针实际上可以是数组中的索引。
您可以通过注意到它将有 3 个“空”邻居来检测“角落”十六进制。然后你可以从那里逆时针移动,记住你已经访问过哪个。
更新(回应评论)
假设对于给定的十六进制,我们按照我的描述存储 6 个邻居。
在本次讨论中,我们将这些邻居命名为 AF。
我们逆时针分配这些,因为这对我们来说很方便。
图形化:
A
_____
B / \ F
/ \
( )
\ /
C \_____/ E
D
对于“角”十六进制,我们可能有:
A
_____
B / \ NULL
/ \
( )
\ /
C \_____/ NULL
NULL
因此,如果我们查看这个十六进制,并列出我们的邻接信息(环绕),我们有:
A,B,C,空,空,空,A,B,C,...
一旦我们连续找到 3 个 NULL,我们就知道下一个点应该“指向”我们的起始方向。在这种情况下,我们应该从“A”的方向开始。
另一个例子:
NULL
_____
NULL / \ NULL
/ \
( )
\ /
C \_____/ E
D
和以前一样,我们列出一个列表,从顶部开始。
空,空,C,D,E,空,空,空,C
一旦我们找到 3 个 NULL,下一个就是我们的起始方向 - 在本例中为“C”。
从那里向同一个方向螺旋前进应该是相当简单的(当然不是字面上的 - har har)。
PS:感谢http://ascii.co.uk/art/hexagon的快速 ascii 艺术(: