一尘不染

从位置获取螺旋索引

algorithm

我正在使用Alberto Santini的解决方案来获取基于项目索引的螺旋网格参考

它不是公认的解决方案,但是它满足了我的需求,因为它避免了使用循环。

它运行良好,但是我现在想要做的是相反的操作。基于已知的x和y坐标,返回位置的索引。

这是返还给定位置周围的物品的前提。


阅读 309

收藏
2020-07-28

共1个答案

一尘不染

帕斯卡代码:

if y * y >= x * x then begin
  p := 4 * y * y - y - x;
  if y < x then
    p := p - 2 * (y - x)
end
else begin
  p := 4 * x * x - y - x;
  if y < x then
    p := p + 2 *(y - x)
end;

说明:左上半对角线(0-4-16-36-64)包含平方的层号(4*layer^2)。外部if语句定义层并在左上半平面的相应行或列中找到位置的(预)结果,而内部if语句则为镜像位置校正结果。

2020-07-28