2012-03-22 76 views
4

比方說,我有一些格子,看起來像這樣座標網格BOX號碼

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

如何找到我哪個單元,如果我只知道座標?例如,如何從(0,0)獲得0,或者如何從(1,2)獲得7

此外,我發現this question,它做我想做的反向,但我不能扭轉它爲我的需要,因爲據我所知,沒有一個數學逆模數。

+0

不應該(1,2)映射到5嗎? (考慮你的座標系統是以0爲中心並向右和向右遞增) – 2012-03-22 03:43:33

+0

@Amit:他正在寫'(x,y)'而不是'(y,x)'。我理解你的困惑:在矩陣和計算機圖形中,將「(0,0)」作爲左上角元素,座標被寫爲「(y,x)」。 – 2012-03-22 15:25:20

回答

3

在這種情況下,在範圍[0,9),該行是通過R = floor(A/3)給出和列由C = A mod 3給出給定的小區索引A

在一般情況下,在那裏MN單元佈置成與M行和N列(M x N網格)的網格,給定在[0,MN)的整數B,所述列由R = floor(B/N)和列中找到是由C = B mod N發現的。如果給出一個網格元素(R,C),其中R在[0,M中且C在[0,N中)),則在給出的方案中找到元素通過A = RN + C

2
cell = x + y*width 

程序員經常使用這個來處理像2D陣列的一維數組。