Offset Coordinates for Hex Grids

Offset Coordinates for Hex Grids

六边形 offset 坐标(Offset Coordinates for Hex Grids)通过把每隔一行或一列错开来表示六边形网格。列通常记为 colq,行通常记为 rowr

四种变体

尖顶(pointy-top)布局通常使用 row offset,包括 odd-r 和 even-r。平顶(flat-top)布局通常使用 column offset,包括 odd-q 和 even-q。

Offset 坐标适合矩形数组存储,因为二维数组的行列结构能直接承载错位布局。它的主要代价是邻居差值依赖当前行或列的奇偶性,因此邻居表需要按 parity 分成两套。

与算法的关系

距离、线段、旋转和范围等算法通常先把 offset 转成 Axial Coordinates for Hex GridsCube Coordinates for Hex Grids,运行算法后再转回 offset。这个转换策略能保持代码短且行为清晰。

判断奇偶时,原文建议用 a & 1,因为它对负数坐标也稳定。

来源