如何通过一个框的编号获取网格上某个位置的坐标?
1 2 3 4 5 6
------------------------------
1| 1 2 3 4 5 6
2| 7 8 9 10 11 12
3| 13 14 15 16 17 18
4| 19 20 21 22 23 24
5| 25 26 27 28 29 30
6| 31 32 33 34 35 36
即:如果我有数字 15,则坐标为 x=3;y=3
我尝试开发一个功能,但它不起作用,有人有想法吗?
谢谢你的帮助
最佳答案
更新(公式错误):
y = (myNumber - 1) / 6 + 1;
x = (myNumber - 1) % 6 + 1;
更新(解释):
每行包含 6 个元素。我们定义 x 除以 6 的余数:
x ~ 我的号码 % 6
加上+1,因为定义范围是[1;6]。
x ~ 我的数字 % 6 + 1
但是行中的最后一个元素可以被 6 整除而没有余数。考虑到这一点,我们在应用模运算符之前从 myNumber 中减去 1:
x = (myNumber - 1) % 6 + 1
例如我的号码 = 1 => x = 1;我的号码 = 6 => x = 6;我的号码 = 7 => x = 1;我的号码 = 12 => x = 6;
行数称为 y,与除以 6 的整数成正比:
y ~ 我的号码/6
但我们必须再次考虑,我们不是从 0 开始,而是从 1 开始:
y ~ 我的数字/6 + 1
还有“左移”,因为每行的最后一个元素可以除以 6 而没有余数。所以我们在除以反射(reflect)这一点之前从 myNumber 中减去 1:
y = (myNumber - 1)/6 + 1
关于c# - 如何获取网格上某个位置的坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13763239/