2011-05-13 20 views
8

Obecnie pracuję nad projektem, w którym mapy terenu 2d są zapisywane w jednowymiarowej tablicy. Każdy blok na mapie jest indeksowany przez współrzędne XY. Tak więc, aby zapisać mapę w jednowymiarowej tablicy, użyłem metody rzędu-głównej kolejności (http://en.wikipedia.org/wiki/Row-major_order), aby przekształcić współrzędne xy w pojedynczą wartość indeksu (co pozwoliło mi umieścić blok w tablicy).Indeksy rzędów głównych zamówień

Mój problem polega na tym, w jaki sposób mogę go przekonwertować? Mam unikalny numer, który muszę przekonwertować z powrotem na współrzędne xy. Każda pomoc będzie doceniona. ^^

Odpowiedz

9

Aby obliczyć indeksy należy używać coś takiego:

index = X + Y * Width; 

Tak więc, aby odwrócić ten można wykorzystać podział całkowitą obcinania dostać Y, a następnie X jest po prostu to, co pozostało po co Y "zużyte":

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

To nie wydaje się działać. Na przykład (0, 4) daje 20, a po odwróceniu 20 daje (16, 4) – BizarreCake

+0

Ma właściwy pomysł, myślę, że właśnie zrobił literówkę. X = indeks - (y * szerokość); Więc X jest tym, co pozostało po usunięciu Wierszy zużytych przez Y. – TurqMage

+0

Ups, to jest odpowiedź na pytania, kiedy właśnie wstałeś z łóżka! Dzięki za poprawienie mnie. – Martin