Индексы крупных рядов заказов - PullRequest
8 голосов
/ 13 мая 2011

В настоящее время я работаю над проектом, в котором 2-мерные карты местности сохраняются в одномерный массив.Каждый блок на карте индексируется координатами xy.Итак, чтобы сохранить карту в одномерный массив, я использовал метод порядка строк (http://en.wikipedia.org/wiki/Row-major_order), чтобы преобразовать координаты xy в одно значение индекса (что позволило мне поместить блок в массив).

Теперь моя проблема в том, как мне преобразовать его обратно? У меня есть уникальный номер, который я должен преобразовать обратно в координаты xy. Любая помощь будет признательна. ^^

1 Ответ

9 голосов
/ 13 мая 2011

Для расчета индексов вы должны использовать что-то вроде этого:

index = X + Y * Width;

Итак, чтобы обратить это вспять, вы можете воспользоваться усечением целочисленного деления, чтобы получить Y, и тогда X - это то, что осталось после того, чтоY "израсходован":

Y = (int)(index / Width)
X = index - (Y * Width)
...