Questions tagged «rectangles»

22
确定两个矩形是否相互重叠?
我正在尝试编写一个C ++程序,该程序需要用户输入以下内容以构造矩形(2到5之间):高度,宽度,x-pos,y-pos。所有这些矩形将平行于x和y轴存在,也就是说,它们的所有边缘的斜率均为0或无穷大。 我试图实现在此提到的内容问题中但运气并不好。 我当前的实现执行以下操作: // Gets all the vertices for Rectangle 1 and stores them in an array -> arrRect1 // point 1 x: arrRect1[0], point 1 y: arrRect1[1] and so on... // Gets all the vertices for Rectangle 2 and stores them in an array -> arrRect2 // rotated …

1
寻找最少的矩形以覆盖一组矩形而不重叠的算法
我有一组矩形,我想“减少”该矩形,所以我用最少的矩形来描述与原始矩形相同的区域。如果可能的话,我希望它也很快,但是我更关心的是使矩形的数量越少越好。我现在有一种方法在大多数时间都有效。 目前,我从最左上角的矩形开始,看看是否可以在保持矩形的同时向右和向下扩展它。我这样做直到它无法再扩展,然后删除并拆分所有相交的矩形,然后将扩展的矩形添加回列表中。然后,我使用最左上角的下一个矩形再次开始该过程,依此类推。但是在某些情况下,它不起作用。例如: 使用这组三个矩形,正确的解决方案将以两个矩形结束,如下所示: 但是,在这种情况下,我的算法从处理蓝色矩形开始。这会向下扩展并分裂黄色矩形(正确)。但是,当处理完黄色矩形的其余部分时,它没有向下扩展,而是先向右扩展,然后取回先前拆分的部分。然后处理最后一个矩形,它不能向右或向下扩展,因此保留了原来的矩形集。我可以调整算法,使其首先向下扩展,然后再向右扩展。这样可以解决这种情况,但是在翻转的类似情况下会导致相同的问题。 编辑:只是为了澄清,原始的矩形集不重叠,也不必连接。如果连接了矩形的子集,则完全覆盖矩形的多边形可能会在其中带有孔。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.