我想将一个多边形划分为具有特定区域且没有特定尺寸的非重叠多边形。多边形应为矩形。您可以添加点。
输入多边形:
所需的输出(请注意,所有行都是直线的):
请忽略断开的线路。输入的将是多边形的数量和每个多边形的面积。
所以,我想知道如何解决这个问题?
答案 0 :(得分:0)
下面我将假定输入多边形上的所有角度均为直角。
起初,我对您的图形感到困惑,因为矩形具有不同的面积,并且解决该问题非常容易,只需修改耳朵切割算法即可使用正方形而不是三角形(因为正确的角度而起作用) 。如果它们只需要具有相同的面积,则只需要将每个结果矩形划分为较小的可固定对象,就您迄今为止发现的所有矩形的面积而言,其最大公因数的大小即可。然后剩下的就是为该区域的特定预选择值解决问题。
我们可以使用一些解决方案的性质来解决此问题(假设给定实例是可解决的)。
第一个认识是,多边形需要被其特定区域整除,并且该多边形的任何细分也必须满足这一要求。
第二个认识是,将具有特定区域可分割区域的矩形细分为正确大小的较小矩形是很简单的,只需沿一个方向按正确数量的切片将其划分即可。
第三个认识是,我们需要减少多边形的复杂性,直到只剩下矩形为止。具体来说,必须存在一组细分,每个细分都具有正确面积的多个倍数,每个细分都形成一个矩形。
第四个实现是,第三个实现的(一组)细分必须具有其内部边界,这是我们开始使用的多边形的内部凹角的扩展。弄清楚为什么会这样有些棘手,但是如果我们没有这样的扩展,那么在这样的细分的一侧,我们将需要超越界限,并且最终的形式也不会降低其复杂性,无论我们继续细分多少次,我们都将不断被迫入侵具有该区域的另一个矩形,这意味着该矩形也将具有更高的复杂性,因此我们将永远无法消除该复杂性。 / p>
换句话说,一种将多边形适当地划分为特定区域的矩形的方法是,首先沿着凹角延伸的线寻找多边形的细分(其中每边的面积是倍数)直到所有细分都变成矩形。如果失败,则不存在适当的细分。如果成功,剩下的就是将这些矩形细分为前面提到的内容。
应该注意的是,可能存在细分的矩形不符合实现3和4中描述的细分,但是只有在可以进行这种合适的细分的情况下它们仍然存在,因为它们实际上只是对矩形的重新排列。矩形,使其与这些细分交叉。