2011-04-21 75 views
2

假設我有一個5x5的網格,網格中的每個單元格都從0到24編號,從左到右。給定一個像17這樣的單元格編號,我如何確定單元格的x和y座標?我已經能夠做到這一點,反之亦然,其中如果有座標我可以計算出細胞數量:將網格中按順序指定的數字轉換爲x-y座標

Cellnumber = x + y∗width
(x和y座標表示每個單元的左上點)

但現在我想要相反。有任何想法嗎?

+3

0-24 ...不是0..25 – 2011-04-21 23:24:45

+0

燁固定:) ... – Snowman 2011-04-21 23:28:12

回答

10

假設爲基礎的0座標和類似C的語法,它會是這樣的:

int y = Cellnumber/width; 
int x = Cellnumber % width; 
+0

+1。好看又簡潔。 – 2011-04-21 23:34:15

6

隨着表示法%是模運算符:

x = Cellnumber % width 
y = Floor(Cellnumber/width) 
在你的5×5示例

所以,Cellnumber = 17

x = 2 
    y = 3 
+0

我喜歡它,但如果其中一人需要地板,他們都做,或者:-)同樣沒有 – corsiKa 2011-04-21 23:27:33

+0

@ glowcoder:模運算符通常是一個整數運算符...但我明白你的觀點。 – 2011-04-21 23:28:57

1

我認爲:

Y = (cellnum/5) + 1 
X = (cellnum % 5) + 1 
+0

這不行。 +1會給出錯誤的結果。 – Genzume 2011-04-21 23:30:29

+0

取決於您居中座標系的位置。我以(1,1) – GPSmaster 2011-04-21 23:32:11

+0

爲中心的單元格0當我發佈時,其他兩個人已經迴應。抱歉 – GPSmaster 2011-04-21 23:33:29

相關問題