坐标到网格框号

时间:2012-03-22 03:26:30

标签: math grid coordinates

我们说我有一些看起来像这样的网格

 _ _ _ _ _ _ _ _ _
|     |     |     |
|  0  |  1  |  2  |
|_ _ _|_ _ _|_ _ _| 
|     |     |     |
|  3  |  4  |  5  |
|_ _ _|_ _ _|_ _ _| 
|     |     |     |
|  6  |  7  |  8  |
|_ _ _|_ _ _|_ _ _| 

如果我只知道坐标,如何找到我所在的单元?例如,如何从0获取(0,0),或如何从7获取(1,2)

另外,我找到了this question,它反过来做了我想做的事情,但我无法根据自己的需要对其进行反转,因为据我所知,模数没有数学反转。

2 个答案:

答案 0 :(得分:4)

在这种情况下,给定单元格索引A在[0,9]范围内,行由R = floor(A/3)给出,列由C = A mod 3给出。

在一般情况下,将MN单元格排列到包含M行和N列(M x N网格)的网格中,给定整数B [0,MN],该行由R = floor(B/N)找到,该列由C = B mod N找到。

另一方面,如果给出一个网格元素(R,C),其中R在[0,M)中,并且C在[0,N]中,找到您显示的方案中的元素由下式给出: A = RN + C

答案 1 :(得分:4)

cell = x + y*width

程序员经常使用它来处理像2D阵列这样的一维数组。