我正在使用Alberto Santini的解决方案来获取基于项目索引的螺旋网格参考
它不是公认的解决方案,但是它满足了我的需求,因为它避免了使用循环。
它运行良好,但是我现在想要做的是相反的操作。基于已知的x和y坐标,返回位置的索引。
这是返还给定位置周围的物品的前提。
帕斯卡代码:
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语句则为镜像位置校正结果。