Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在方格网中用单元号查找坐标_Javascript_Math_Geometry_Grid - Fatal编程技术网

Javascript 如何在方格网中用单元号查找坐标

Javascript 如何在方格网中用单元号查找坐标,javascript,math,geometry,grid,Javascript,Math,Geometry,Grid,我一直在努力想办法。。我的脑子有点模糊 我有一个1000x1000网格,0在左下角(0,0),右上角是(10001000) 我有40000个正方形(单元格),尺寸为5x5,我想计算给定的坐标,从1-40000 假设正方形13227是坐标x和y(起点) 谢谢:)我可能会这样做。 我首先根据5x5网格开始计算,这意味着在1000x1000网格中有200x200个网格 要查找行,请将数字的下限(即Math.floor())除以200。 在您的示例中:Math.floor((13227/200))=66

我一直在努力想办法。。我的脑子有点模糊

我有一个1000x1000网格,0在左下角(0,0),右上角是(10001000)

我有40000个正方形(单元格),尺寸为5x5,我想计算给定的坐标,从1-40000

假设正方形13227是坐标x和y(起点)


谢谢:)

我可能会这样做。 我首先根据5x5网格开始计算,这意味着在1000x1000网格中有200x200个网格

要查找
,请将数字的下限(即
Math.floor()
)除以200。
在您的示例中:
Math.floor((13227/200))=66
。因此,相应的5x5网格(用于13227)将位于第66行(5x5网格)

然后,要获得
,请从原始数字中减去(行号x 200)。
在您的示例中:
13227-(66*200)=27
。所以它将是第27列(5x5网格)

然后我相信你应该能够将这些值乘以5,得到1000x1000网格中左下角的坐标

也就是说:
x=27*5(135),y=66*5(330)


(现在这只是我在纸上和脑海中粗略地画出的东西,所以你毫无疑问能够告诉我我是否正确!我唯一不能100%确定的是,我的方法是否真的给出了5x5平方米的左下角坐标,但我非常确定它是)

我可能会这样处理它。 我首先根据5x5网格开始计算,这意味着在1000x1000网格中有200x200个网格

要查找
,请将数字的下限(即
Math.floor()
)除以200。
在您的示例中:
Math.floor((13227/200))=66
。因此,相应的5x5网格(用于13227)将位于第66行(5x5网格)

然后,要获得
,请从原始数字中减去(行号x 200)。
在您的示例中:
13227-(66*200)=27
。所以它将是第27列(5x5网格)

然后我相信你应该能够将这些值乘以5,得到1000x1000网格中左下角的坐标

也就是说:
x=27*5(135),y=66*5(330)


(现在这只是我在纸上和脑子里粗略地画了些东西,所以你毫无疑问能够告诉我我是否正确!我唯一不能100%确定的是,我的方法是否真的给出了5x5正方形的左下角坐标,但我非常确定它是)

假设你从(0,0)开始对单元格进行编号(botton left). 这是单元格编号
0

下一个单元格是右侧的相邻单元格:c1(0,1)。接下来是c2(0,2)

当此行已满时,最后一个单元格为c1000(0999),位于右下角

所以,下一个单元格从新行开始:c1000(1,0)。接下来是c1001(1,1),等等

c12345单元位于哪里?因为您有一个行长度为1000的网格,所以必须找到该数字中适合的行数:

numberOfRows= Math.floor(12345/1000)
这使得numberOfRows=12。分区中有一个rest,
rest=345
。因此,单元格12345位于第13行(其他12行已填充)。并位于
列=345

到现在为止,我们一直在计算细胞,现在我们想要用距离来测量坐标

每个单元为5个单位(英寸或其他)。因此,单元格1从0变为5,单元格2从5变为10,单元格
n
(n-1)*5变为n*5
。垂直距离的计算也一样

因此,以单位表示的单元格12345角是
(345-1)*5,13*5
。请注意,我在左侧使用了“rest”(当前列),在上部使用了“13”(当前行)

相反的问题是,你有坐标
(x,y)
(单位,而不是单元格),你想知道哪个单元格对应。
除以得到的行和列的每个单元格的大小:

row = Math.floor(x/5)
col = Math.floor(y/5)
如果知道一行有1000个单元格,可以通过以下方式获得单元格编号:

cellNum = (row - 1)*1000 + col

假设您开始在(0,0)处对单元格进行编号(botton左)。这是单元格编号
0

下一个单元格是右侧的相邻单元格:c1(0,1)。接下来是c2(0,2)

当此行已满时,最后一个单元格为c1000(0999),位于右下角

所以,下一个单元格从新行开始:c1000(1,0)。接下来是c1001(1,1),等等

c12345单元位于哪里?因为您有一个行长度为1000的网格,所以必须找到该数字中适合的行数:

numberOfRows= Math.floor(12345/1000)
这使得numberOfRows=12。分区中有一个rest,
rest=345
。因此,单元格12345位于第13行(其他12行已填充)。并位于
列=345

到现在为止,我们一直在计算细胞,现在我们想要用距离来测量坐标

每个单元为5个单位(英寸或其他)。因此,单元格1从0变为5,单元格2从5变为10,单元格
n
(n-1)*5变为n*5
。垂直距离的计算也一样

因此,以单位表示的单元格12345角是
(345-1)*5,13*5
。请注意,我在左侧使用了“rest”(当前列),在上部使用了“13”(当前行)

相反的问题是,你有坐标
(x,y)
(单位,而不是单元格),你想知道哪个单元格对应。
除以得到的行和列的每个单元格的大小:

row = Math.floor(x/5)
col = Math.floor(y/5)
如果知道一行有1000个单元格,可以通过以下方式获得单元格编号:

cellNum = (row - 1)*1000 + col

这是编程中的一个经典问题,将2D坐标转换为1D,通常从2D转换为1D,索引从0开始到长度-1

首先,您必须确定自己是在行专业还是列专业:

最常见的情况是row major。在本例中,假设您有一个坐标为
(x,y)