Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/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
Geometry 非均匀时确定LR和TB顺序的算法_Geometry_2d_Rectangles - Fatal编程技术网

Geometry 非均匀时确定LR和TB顺序的算法

Geometry 非均匀时确定LR和TB顺序的算法,geometry,2d,rectangles,Geometry,2d,Rectangles,想知道是否有人对如何确定大小不同的矩形从左到右和从上到下的顺序有什么见解,因为它们尚未与任何网格对齐,并且它们的大小和/或旋转也不同。有些人可能也失踪了 正如任何人都可以从图中看到的那样,对象应该按图所示进行编号。但是,我如何从数学上或编程上确定这一点呢?逻辑是什么?我甚至不知道用什么词来描述这个问题。这看起来是一个相当复杂的问题;也许有些算法已经存在了,IDK 方法1:网格定位。 一种方法可以从尝试在网格上定位矩形开始,网格大小必须计算;也许最适合矩形的大小(H&W,或者曲面,也许?) 一

想知道是否有人对如何确定大小不同的矩形从左到右和从上到下的顺序有什么见解,因为它们尚未与任何网格对齐,并且它们的大小和/或旋转也不同。有些人可能也失踪了


正如任何人都可以从图中看到的那样,对象应该按图所示进行编号。但是,我如何从数学上或编程上确定这一点呢?逻辑是什么?我甚至不知道用什么词来描述这个问题。

这看起来是一个相当复杂的问题;也许有些算法已经存在了,IDK


方法1:网格定位。 一种方法可以从尝试在网格上定位矩形开始,网格大小必须计算;也许最适合矩形的大小(H&W,或者曲面,也许?)

一旦确定了合理的网格,就必须将其适当地放置在矩形上;也许这样可以最大限度地减少矩形的行重叠和列重叠

最后一步是逐行遍历网格,并为每个矩形指定一个标签;可能基于网格单元和矩形共享的最大公共曲面

将有许多边缘案例需要识别和解决


方法2:扫描线。 或者,从N、S、E和W开始对矩形进行扫掠线编号,并从每个方向对矩形编号进行适当的加权/平均,可能会产生良好的结果?
在确定行和列之后,可能需要多次传递才能找到“最佳匹配”。

第二种方法可能更容易实现。

这看起来是一个相当复杂的问题;也许有些算法已经存在了,IDK


方法1:网格定位。 一种方法可以从尝试在网格上定位矩形开始,网格大小必须计算;也许最适合矩形的大小(H&W,或者曲面,也许?)

一旦确定了合理的网格,就必须将其适当地放置在矩形上;也许这样可以最大限度地减少矩形的行重叠和列重叠

最后一步是逐行遍历网格,并为每个矩形指定一个标签;可能基于网格单元和矩形共享的最大公共曲面

将有许多边缘案例需要识别和解决


方法2:扫描线。 或者,从N、S、E和W开始对矩形进行扫掠线编号,并从每个方向对矩形编号进行适当的加权/平均,可能会产生良好的结果?
在确定行和列之后,可能需要多次传递才能找到“最佳匹配”。

第二种方法可能更容易实施。

谢谢,RM。这是一个令人惊讶的困难的问题,解决一个程序,当眼睛这么容易做到这一点。我正在考虑的另一种选择是,如何使用矩形的中心点来“带”垂直相似定位的矩形,然后根据每个矩形的左侧对每个带(即行)进行稳定排序。我们认为如果一个点在矩形高度的1/2范围内,那么它就在同一行。(这样我就可以为它指定一个常量来进行稳定排序。)谢谢你的建议!谢谢,RM。这是一个令人惊讶的困难的问题,解决一个程序,当眼睛这么容易做到这一点。我正在考虑的另一种选择是,如何使用矩形的中心点来“带”垂直相似定位的矩形,然后根据每个矩形的左侧对每个带(即行)进行稳定排序。我们认为如果一个点在矩形高度的1/2范围内,那么它就在同一行。(这样我就可以为它指定一个常量来进行稳定排序。)谢谢你的建议!