2011-05-13 83 views
8

我目前正在從事2d地形地圖保存到一維數組的項目。地圖中的每個塊都由xy座標索引。因此,爲了將地圖保存到一維數組中,我使用了行主要順序方法(http://en.wikipedia.org/wiki/Row-major_order)將xy座標轉換爲單個索引值(讓我將該塊放入數組中)。行的主要訂單指數

現在,我的問題是如何將其轉換回來?我有一個唯一的編號,我必須將其轉換回xy座標。 任何幫助,將不勝感激。 ^^

回答

9

要計算指數,你應該使用這樣的:

index = X + Y * Width; 

因此,要扭轉這一點,你可以利用整數除法截斷得到Y,然後X是一些什麼遺留下來後什麼Y「用盡」:

Y = (int)(index/Width) 
X = index - (Y * Width) 
+0

這似乎並不奏效。例如(0,4)給出20,當相反時,20給出(16,4) – BizarreCake

+0

他有正確的想法,我認爲他只是犯了一個錯字。 X = index - (y * width);所以X是你刪除了Y所用的行之後剩下的部分。 – TurqMage

+0

糟糕,這就是當你剛剛起牀時回答問題的原因!謝謝你糾正我。 – Martin