あなたがしたいことは、タイル(マトリックスのエントリ)間の幾何学的関係を含みます
その情報を保存して照会する方法が必要です。
六角形に座標を割り当てるために人々が開発したいくつかの方法があります。
私の頭の上からあなたが望むことをする1つの方法は、各ヘックスがその隣人への6つの「ポインター」を持つことです。もちろん、これらのポインターは実際には配列内のインデックスである可能性があります。
「コーナー」ヘクスは、3 つの「ヌル」ネイバーがあることに注意することで検出できます。次に、そこから反時計回りにトラバースし、既に訪れたことを思い出します。
更新(コメントに応じて)
与えられたヘックスについて、私が説明したように 6 つの隣接を格納するとします。
この説明では、これらのネイバーに AF という名前を付けます。
都合がよいので、これらを反時計回りに割り当てます。
グラフィカルに:
A
_____
B / \ F
/ \
( )
\ /
C \_____/ E
D
「コーナー」ヘクスの場合、次のようになります。
A
_____
B / \ NULL
/ \
( )
\ /
C \_____/ NULL
NULL
したがって、この 16 進数を見て、隣接情報 (ラップアラウンド) をリストすると、次のようになります。
A、B、C、ヌル、ヌル、ヌル、A、B、C、...
連続して 3 つの NULL を見つけるとすぐに、次のスポットが開始方向を「指す」必要があることがわかります。この場合、「A」の方向から始めるべきです。
もう一つの例:
NULL
_____
NULL / \ NULL
/ \
( )
\ /
C \_____/ E
D
先ほどと同じように、上から順番にリストを作成します。
NULL、NULL、C、D、E、NULL、NULL、NULL、C
3 つの NULL を見つけるとすぐに、次の方向が開始方向になります。この場合は「C」です。
そこから同じ方向にらせん状に進むのはかなり簡単なはずです(文字通りではありません-har har)。
PS: http://ascii.co.uk/art/hexagonの素早いアスキー アート (: