2011-05-13 24 views
8

Şu anda 2d arazi haritalarının tek boyutlu bir dizide kaydedildiği projede çalışıyorum. Haritadaki her blok xy koordinatları ile endekslenmiştir. Bu nedenle, haritayı tek boyutlu bir diziye kaydetmek için, xy koordinatlarını tek bir indeks değerine dönüştürmek için satır-büyük sipariş yöntemini (http://en.wikipedia.org/wiki/Row-major_order) kullandım (Bu, bloğu bir diziye koymama izin ver).Satır başı sırası dizileri

Şimdi, benim sorunum nasıl geri dönüştürebilirim? Xy koordinatlarına geri dönmem gereken benzersiz bir numaram var. Herhangi bir yardım mutluluk duyacaktır. ^^ endekslerini hesaplamak için

cevap

9

böyle bir şey kullanıyor olmalıdır: Eğer Y almak için tamsayı bölme kesilmesi yararlanabilir bu tersine çevirmek için, Yani

index = X + Y * Width; 

ve sonra X sonra geriye kalan sadece ne olduğunu Y "ne kadar kullanılır":

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

Bu işe yaramaz. Örneğin (0, 4) 20 verir ve geri döndüğünde, 20 geri verir (16, 4) – BizarreCake

+0

Doğru fikre sahip, bence sadece bir yazım hatası yaptı. X = dizin - (y * genişlik); Böylece X, X tarafından kullanılan Satırları kaldırdıktan sonra geriye kalan şeydir. – TurqMage

+0

Oops, yataktan yeni çıktığınızda bu soruları yanıtlamak için ne geliyor! Beni düzelttiğin için teşekkürler. – Martin

İlgili konular