如何按半径获得曼哈顿单元格周围的值?

大家好,StackOverflow社区,

我正在寻找一种算法,以获取单元格周围的值。

这是我修改的一张图片,解释了这种情况: 具有各自值的单元格

我想将所有浅蓝色值放入一个表格中,这些值在半径为x(图片中为3)的暗蓝色单元格周围。

我尝试在互联网上以及这里找到一些公式,但没有找到任何内容。

感谢任何能帮助我的人。

点赞
用户8695011
用户8695011

如果你在单元格(x,y)处,则所有满足曼哈顿距离与单元格(x,y)小于等于3的单元格(x1,y1)将在半径为3的范围内。

因此,如果abs(x-x1)+abs(y-y1)小于等于3,则单元格(x1,y1)将在单元格(x,y)的半径为3的范围内。

2019-06-20 10:06:19
用户6834680
用户6834680
local cell = 369
local r = 3
for x = -r, r do
    for y = -r, r do
        if math.abs(x) + math.abs(y) <= r then
            local new_cell = cell + 29*math.floor(x/2) - 27*math.floor(y/2) + (x+y)%2 * (math.floor(cell/14)%2 + 14*(x%2-y%2)) + x*(x+y+1)%2
            print(new_cell)
        end
    end
end
本地变量 cell 的值为 369,
本地变量 r 的值为 3。
以循环的方式,从 x = -r 到 r,从 y = -r 到 r,
如果 math.abs(x) + math.abs(y) 小于或等于 r,则执行以下步骤:
计算一个新的变量 new_cell 的值,其等于:
cell + 29*floor(x/2) - 27*floor(y/2) 
+ (x+y)%2 * (floor(cell/14)%2 + 14*(x%2-y%2)) 
+ x*(x+y+1)%2
然后输出 new_cell。
2019-06-20 10:40:17
用户3833603
用户3833603

这里 是一个与此问题类似且已经得到回答的链接。我的答案与那里所提供的答案一致。

我有一个叫做 pixelscan 的项目,它可以使用各种图案(包括曼哈顿环图案)遍历一个网格,然后用它们来提取单元格的数值。虽然它是用 Python 编写的而不是 Lua,但是它的代码非常简单,可以复制/粘贴并进行调整以使其运行。

2019-06-20 21:12:18