Найдите соседей за пределами 2d-сетки, которая сводится к 1d-массиву

У меня есть двумерная сетка, где ширина и высота всегда одинаковы.

[0][1][2]
[3][4][5]
[6][7][8]

Я уменьшил его источник данных в одномерный массив.

[0][1][2][3][4][5][6][7][8]

Доступ к элементам работает, но здесь возникает сложная часть: как узнать, находится ли сосед ячейки вне сетки при обработке одномерного массива?

Например, верхний правый сосед [5] находится вне сетки, но, используя вычисленный индекс смещения, я получу [3].

Есть у кого опыт в этой сфере?


person Jankapunkt    schedule 05.03.2016    source источник


Ответы (1)


Хорошо, если вы знаете (i) индексы ячейки и (2) размеры сетки (разумно, верно?), И что ее индекс в 1D-массиве равен k, а в 2D-массиве i, j.

Затем k = i * width + j. Таким образом, i = k / width, j = k % width. (/ — целочисленное деление, % — модуль).

Как только вы получите эти два индекса, вы узнаете индексы соседних ячеек, и вы можете проверить их на соответствие границам, как обычно (я полагаю, вы знаете, как это сделать).

person Community    schedule 06.03.2016
comment
Спасибо, мне потребовалось немного, чтобы реализовать это правильно, но он работает нормально! - person Jankapunkt; 07.03.2016