我们说我有一些看起来像这样的网格
_ _ _ _ _ _ _ _ _
| | | |
| 0 | 1 | 2 |
|_ _ _|_ _ _|_ _ _|
| | | |
| 3 | 4 | 5 |
|_ _ _|_ _ _|_ _ _|
| | | |
| 6 | 7 | 8 |
|_ _ _|_ _ _|_ _ _|
如果我只知道坐标,如何找到我所在的单元?例如,如何从0
获取(0,0)
,或如何从7
获取(1,2)
?
另外,我找到了this question,它反过来做了我想做的事情,但我无法根据自己的需要对其进行反转,因为据我所知,模数没有数学反转。
答案 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阵列这样的一维数组。