2011-05-13 12 views
8

現在、2次元地形図が1次元配列に保存されているプロジェクトで作業しています。マップ内の各ブロックは、xy座標で索引付けされます。したがって、マップを1次元配列に保存するには、行優先順序のメソッド(http://en.wikipedia.org/wiki/Row-major_order)を使用して、xy座標を単一のインデックス値(ブロックを配列に入れる)に変換します。行優先順位の指標

今、私の問題はどのように私はそれを元に戻すのですか?私はxy座標に変換する必要がある固有の番号を持っています。 ご協力いただければ幸いです。 ^^

答えて

9

あなたはこのような何か使用しなければならない指標を計算するには:あなたはYを取得するために、整数の除算の切り捨てを利用することができ、その後、Xが後に残さちょうど何でこれを逆にする、だから、

index = X + Y * Width; 

を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

関連する問題