c - 确定 x/y 网格索引的算法

标签 c algorithm raster

好吧,我知道这个操作还有另一个名字,但如果我知道的话,我会在谷歌中搜索并找到正确的算法。我希望你能从下图中理解我的意图:

好吧,假设我们有一个网格,例如 3x3 对象 (.)

...
...
...

这些对象中的每一个都有索引,从0开始到8结束

012
345
678

然后让我们使用下面的循环:

w = 0; h = 0;
go :
w = 0;
for(; w<grid.width; w++)
{
    statuses[w][h] = isActor(CORESPONDENT_INDEX_GOES_HERE);
    if(w == grid.width-1 && h != grid.height-1)
    {
        h += 1;
        goto go;
    }
}

isActor 是一个返回当前对象状态的函数,它需要正确的索引。

我应该用什么代替 CORESPONDENT_INDEX_GOES_HERE?如果我使用 w*h 它不起作用,我知道为什么。它不会返回正确的索引。

正确的算法是什么?

最佳答案

如 hk6279 所述,使用 h * grid.width + w

这称为“光栅扫描”。不幸的是,搜索“光栅”无法揭示该公式。

关于c - 确定 x/y 网格索引的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25969522/

相关文章:

c - 使用 C windows 8 关闭屏幕

c - 如何在 POSIX 正则表达式中编写负向前瞻

algorithm - 出列算法

R - 获取 RasterLayer 的特定波段

r - 在 R 中使用 shapefile 剪切栅格,但保留 shapefile 的几何形状

arrays - 字符串内存地址位置

c - 如何在 C 中表示类似 Python 的字典

algorithm - 平行曲线类图算法

c++ - 8 Queens Variation-排列数回溯实现-错误输出

r - 从空间多边形数据框中绘制一个多边形