Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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
Algorithm 在不相交的凹多边形中查找最小数量的边对齐的重叠矩形_Algorithm_Geometry_Polygon_Computational Geometry - Fatal编程技术网

Algorithm 在不相交的凹多边形中查找最小数量的边对齐的重叠矩形

Algorithm 在不相交的凹多边形中查找最小数量的边对齐的重叠矩形,algorithm,geometry,polygon,computational-geometry,Algorithm,Geometry,Polygon,Computational Geometry,我正在寻找一种算法或算法,我可以使用它来获取一个不相交的凹多边形,并找到一组最小的边对齐矩形来分割多边形。矩形可以重叠(最好最小重叠) 我正在考虑使用耳朵剪辑来寻找最小三角形。我可以用这些三角形做长方形。我想每个三角形都可以有一组矩形。然后我检查矩形并与其他共线矩形合并。我不知道这是不是一个好办法 我想这个问题听起来有点主观,但我仍然认为有一种很好的方法可以用已知的算法和一些启发式方法来解决这个问题 *编辑:更多的启发式,我可以期望轴对齐的矩形,顺便说一句,是一种常见的情况 **编辑:我也可以期

我正在寻找一种算法或算法,我可以使用它来获取一个不相交的凹多边形,并找到一组最小的边对齐矩形来分割多边形。矩形可以重叠(最好最小重叠)

我正在考虑使用耳朵剪辑来寻找最小三角形。我可以用这些三角形做长方形。我想每个三角形都可以有一组矩形。然后我检查矩形并与其他共线矩形合并。我不知道这是不是一个好办法

我想这个问题听起来有点主观,但我仍然认为有一种很好的方法可以用已知的算法和一些启发式方法来解决这个问题

*编辑:更多的启发式,我可以期望轴对齐的矩形,顺便说一句,是一种常见的情况


**编辑:我也可以期望凸角的零度小于90度。

公平警告,我并没有计算几何方面的背景,所以我基本上只是在瞎编。这将是我解决这个问题的初步方法

  • 确定多边形是否为凸多边形。如果是这样,用一个与边对齐的矩形覆盖它。要做到这一点,我会说,只要尝试所有的边缘,看看哪一个给出了面积最小的矩形。也许有更好的方法来确定使用哪种边缘,但同样,在这些东西中没有背景

  • 如果多边形是凹的,那么如果一条边不在多边形的凸包上,我们就称它为“凹边”。在多边形中找到一条凹边,并将其延伸以将多边形切割为两个或多个新的较小多边形。在每个子多边形上递归


  • 如果多边形有足够少的边,我认为彻底搜索是合理的,只需选择覆盖启发式最佳的匹配(最少的矩形,覆盖多边形以外的最小空间,重叠量,前面因素的函数等)

    我不理解这个问题。假设输入是一个等边三角形-分区的矩形集是什么?@mdkess One。我猜你可以说三角形是由三个最小边界重叠的矩形最小边界构成的。然而,我只需要一个。你怎么剪一个三角形的耳朵?也许这就是启发法的作用所在。将此三角形与其他与此三角形共用边的三角形进行比较。我会尽量找到适合的最佳矩形(可以合并成一个矩形),同时尽量减少与不适合的矩形的重叠。嗯,你应该先为凸多边形设置一个算法。一旦你有了这样一个算法,你可以进一步开发它来处理凹多边形,或者,你可以将凹多边形分割成凸多边形并应用相同的方法。@ElKamina,有一些算法可以找到凸多边形的最小边界框。en.wikipedia.org/wiki/Minimum_bounding_box_算法如果不将凹多边形分割成更小的凸多边形,我看不出这种方法是如何工作的。我只是在这里猜测,但我认为这可能比使用边缘对齐的矩形覆盖由耳朵剪辑创建的每个边缘更困难。更多关于启发式,我可以期望轴对齐的矩形偶然出现。只是一个想法-这听起来有点像BSP树。这是一个有趣的方法,但不能保证平分凹边将创建矩形、边对齐或轴对齐。或者,也许这不是重点。