用途:面向采用 odd-r 偏移坐标(奇数行右移半格)的六边形网格,提供基础空间计算工具,适用于六边形地图、战棋或格子类空间逻辑。
坐标系统:格子 (0,0) 位于左下;X 向右递增(列),Y 向上递增(行);奇数行(y % 2 == 1)向右偏移半格。方向索引为 0=东、1=东北、2=西北、3=西、4=西南、5=东南。
主要能力: 1)get_neighbors(x, y) 返回全部 6 个相邻格坐标。偶数行方向向量为 [(1,0), (0,-1), (-1,-1), (-1,0), (-1,1), (0,1)],奇数行为 [(1,0), (1,-1), (0,-1), (-1,0), (0,1), (1,1)]。 2)hex_distance(x1, y1, x2, y2) 先将偏移坐标转换为立方坐标(cx = col - (row - (row & 1)) // 2,cz = row,cy = -cx - cz),再用立方距离公式 (|dx|+|dy|+|dz|)/2 计算距离。 3)get_tiles_in_range(x, y, radius) 返回半径内所有格子但不含中心格,内部通过遍历偏移范围并调用 hex_distance 过滤。
使用方式:直接调用上述函数即可,例如 get_neighbors(21, 13);hex_distance(21, 13, 24, 13) 返回 3;判断相邻可用 hex_distance(21, 13, 21, 14) == 1;get_tiles_in_range(21, 13, 3) 取得中心 3 格范围内可工作的格子。
关键点:偶数行与奇数行的差异只在方向 1、2、4、5 即斜向。NE 偶数行为 (0,-1)、奇数行为 (1,-1);NW 为 (-1,-1) 与 (0,-1);SW 为 (-1,+1) 与 (0,+1);SE 为 (0,+1) 与 (1,+1)。东西方向恒为 (1,0) 与 (-1,0)。
限制:资料仅给出 odd-r 偏移坐标的实现,未提供其他坐标系支持、性能说明、依赖要求或安装命令,这些暂未提供。