六边形螺旋坐标系统详解
文章介绍了六边形螺旋坐标系统。作者在其受欢迎的六边形网格指南基础上,增加了关于螺旋坐标系统的讲解,并附带了图表和未优化的示例代码。尽管还有多种变体未涵盖,作者决定先发布一个版本。此外,文章还提到了在 axial coordinates 上使用 `atan2(r,q)` 进行角度排序的发现。
Hexagon spiral coordinates
Blog 发布时间: 2025年3月12日
我写的 六边形网格指南1 是我网站上最受欢迎的页面之一。 我维护着一个列表,记录了我想要添加到该页面的内容2。 其中之一是 螺旋坐标系统。 我原本想等到在实际项目中使用它们之后再写,这样我就能获得关于我所写内容的真实世界经验。 我害怕写我不确定的东西,或者信息不完整的东西。 但是我还没有用过它们。
我决定不再等待了。
六边形网格上的螺旋坐标
我决定制作一些图表,展示我理解的部分。 这也促使我尝试理解更多。 我提供了一些 未优化的 示例代码。 我的一部分想法是等到我拥有最好的示例代码再展示。 但是……我已经等了这么多年了。 我决定现在发布未优化的代码。
还有很多变体我可以涵盖:基于 0 还是基于 1,由外向内还是由内向外,基于环还是基于路径,统一方向还是交替方向,单个螺旋还是递归螺旋,可能还有更多。 但是,如果我等到弄清楚所有这些,那将花费更长的时间。 因此,我现在只发布一个变体。
在进行这项工作时,我还有一个意外的发现:在 axial coordinates 上运行 atan2(r,q)
而不是在 cartesian coordinates 上运行 atan2(y,x)
会产生类似角度的东西,可用于按角度 排序,同时比实际计算角度稍微便宜一些:
类似角度的东西,可用于按角度排序
这不是我想要放在主页上的主题,所以我把它放在一个单独的页面4上。
给我发邮件 redblobgames@gmail.com,或者在这里评论: