假设我有一个5x5的网格,网格中的每个单元格都从0到24编号,从左到右。给定一个像17这样的单元格编号,我如何确定单元格的x和y坐标?我已经能够做到这一点,反之亦然,其中如果有坐标我可以计算出细胞数量:将网格中按顺序指定的数字转换为x-y坐标
Cellnumber = x + y∗width
(x和y坐标表示每个单元的左上点)
但现在我想要相反。有任何想法吗?
假设我有一个5x5的网格,网格中的每个单元格都从0到24编号,从左到右。给定一个像17这样的单元格编号,我如何确定单元格的x和y坐标?我已经能够做到这一点,反之亦然,其中如果有坐标我可以计算出细胞数量:将网格中按顺序指定的数字转换为x-y坐标
Cellnumber = x + y∗width
(x和y坐标表示每个单元的左上点)
但现在我想要相反。有任何想法吗?
假设为基础的0坐标和类似C的语法,它会是这样的:
int y = Cellnumber/width;
int x = Cellnumber % width;
+1。好看又简洁。 – 2011-04-21 23:34:15
随着表示法%
是模运算符:
x = Cellnumber % width
y = Floor(Cellnumber/width)
在你的5×5示例
所以,Cellnumber
= 17
x = 2
y = 3
我喜欢它,但如果其中一人需要地板,他们都做,或者:-)同样没有 – corsiKa 2011-04-21 23:27:33
@ glowcoder:模运算符通常是一个整数运算符...但我明白你的观点。 – 2011-04-21 23:28:57
0-24 ...不是0..25 – 2011-04-21 23:24:45
烨固定:) ... – Snowman 2011-04-21 23:28:12