将网格中顺序指定的数字转换为x-y坐标

时间:2011-04-21 23:24:07

标签: algorithm

假设我有一个5x5的网格,网格中的每个单元格从0到24,从左到右。给定一个像17这样的单元格数,如何确定单元格的x和y坐标?我已经能够这样做,反之亦然,如果给定坐标我可以计算单元格数:

Cellnumber = x + y∗width
(x和y坐标代表每个单元格的左上角)

但现在我想要反其道而行之。有什么想法吗?

3 个答案:

答案 0 :(得分:10)

假设基于0的坐标和类似C的语法,它将是这样的:

int y = Cellnumber / width;
int x = Cellnumber % width;

答案 1 :(得分:6)

表示%是模数运算符:

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

因此,在您的5 x 5示例中,Cellnumber = 17

   x = 2
   y = 3

答案 2 :(得分:1)

我想:

Y = (cellnum / 5) + 1   
X = (cellnum % 5) + 1