Перевести последовательно назначенный номер в сетке в координаты xy - PullRequest
2 голосов
/ 22 апреля 2011

Скажем, у меня есть сетка 5x5, каждая ячейка в сетке пронумерована от 0 до 24 и идет слева направо. Учитывая номер ячейки, такой как 17, как мне определить координаты x и y этой ячейки? Я был в состоянии сделать это наоборот, где, если даны координаты, я могу вычислить номер ячейки:

Cellnumber = x + y∗width
(Координаты x и y представляют верхнюю левую точку каждой ячейки)

Но теперь я хочу обратного. Есть идеи?

Ответы [ 3 ]

10 голосов
/ 22 апреля 2011

Предполагая 0-основанные координаты и C-подобный синтаксис, это было бы что-то вроде этого:

int y = Cellnumber / width;
int x = Cellnumber % width;
6 голосов
/ 22 апреля 2011

С пометкой, что % является оператором модуля:

x = Cellnumber % width  
y = Floor(Cellnumber / width)

Итак, в вашем примере 5 x 5 Cellnumber = 17

   x = 2
   y = 3
1 голос
/ 22 апреля 2011

Я думаю:

Y = (cellnum / 5) + 1   
X = (cellnum % 5) + 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...