Координаты для номера сетки - PullRequest
4 голосов
/ 22 марта 2012

Допустим, у меня есть сетка, которая выглядит следующим образом

 _ _ _ _ _ _ _ _ _
|     |     |     |
|  0  |  1  |  2  |
|_ _ _|_ _ _|_ _ _| 
|     |     |     |
|  3  |  4  |  5  |
|_ _ _|_ _ _|_ _ _| 
|     |     |     |
|  6  |  7  |  8  |
|_ _ _|_ _ _|_ _ _| 

Как мне найти ячейку, если я знаю только координаты? Например, как мне получить 0 из (0,0) или как 7 из (1,2)?

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

Ответы [ 2 ]

4 голосов
/ 22 марта 2012
cell = x + y*width

Программисты часто используют это для обработки 1D-массива как 2D-массива.

4 голосов
/ 22 марта 2012

В этом случае при заданном индексе ячейки A в диапазоне [0, 9) строка задается R = floor(A/3), а столбец - C = A mod 3.

В общем случаегде ячейки MN упорядочены в сетку с M строками и N столбцами (M x N сетка), учитывая целое число B в [0, MN), строка находится по R = floor(B/N) истолбец найден с помощью C = B mod N.

Если вы зададите элемент сетки (R, C), где R находится в [0, M), а C - в [0, N)Нахождение элемента в показанной вами схеме дается как A = RN + C.

...