关于redblobgames的六边形int坐标系
对于六边形tile游戏,通常用另一种坐标系,方便表示和操作。
以前自己瞎设计了简单坐标系,可以支持一些简单功能,而且直观:

不过麻烦的是跨轴的时候,需要判断,就使得象限之外的轴始终为0。
最近希望遍历一个六边形周围6个六边形的中心点坐标,这样搞会很麻烦。
(当然你可以使用极坐标旋转去遍历,但是这样就不是int坐标系了,出现的float在判断相等的时候会很麻烦)
于是看看townscaper作者推荐的博客。文中有一个坐标系,我简称srq系,有一些好处。先看图:

相比我的坐标系,它有几个好处:
第零。它是全局的坐标系,不用考虑跨象限srq坐标转换问题。不过从cartesian转换回srq还是要考虑象限的,也很麻烦。
第一。有正负轴。如果srq坐标乘以-1,则得到以原点对称的位置。

第二。每个srq邻居都是对2个轴的(1,-1),而且按照图中的标记法,可以很方便看出移动所对应改变的2轴,是垂直于方向的两个轴。并且是“左+右-”

总之,是方便代码遍历一个块的周围块了。