Hexagon spiral coordinates

来自 Red Blob Games 的 Blog

Blog 发布时间: 2025年3月12日

我写的 六边形网格指南1 是我网站上最受欢迎的页面之一。 我维护着一个列表,记录了我想要添加到该页面的内容2。 其中之一是 螺旋坐标系统。 我原本想等到在实际项目中使用它们之后再写,这样我就能获得关于我所写内容的真实世界经验。 我害怕写我不确定的东西,或者信息不完整的东西。 但是我还没有用过它们。

我决定不再等待了。

六边形网格上的螺旋坐标

我决定制作一些图表,展示我理解的部分。 这也促使我尝试理解更多。 我提供了一些 未优化的 示例代码。 我的一部分想法是等到我拥有最好的示例代码再展示。 但是……我已经等了这么多年了。 我决定现在发布未优化的代码。

还有很多变体我可以涵盖:基于 0 还是基于 1,由外向内还是由内向外,基于环还是基于路径,统一方向还是交替方向,单个螺旋还是递归螺旋,可能还有更多。 但是,如果我等到弄清楚所有这些,那将花费更长的时间。 因此,我现在只发布一个变体。

看看新的部分3。 请告诉我您希望看到哪些更改或改进!

在进行这项工作时,我还有一个意外的发现:在 axial coordinates 上运行 atan2(r,q) 而不是在 cartesian coordinates 上运行 atan2(y,x) 会产生类似角度的东西,可用于按角度 排序,同时比实际计算角度稍微便宜一些:

类似角度的东西,可用于按角度排序

这不是我想要放在主页上的主题,所以我把它放在一个单独的页面4上。

给我发邮件 redblobgames@gmail.com,或者在这里评论:

链接