如果选择为顶点,则确定哪些点最大化多边形的面积

时间:2017-01-18 12:14:10

标签: algorithm geometry polygon

我有一个多边形,其顶点是其他4个多边形的中心点。对于这4个多边形,我也有它们顶点的坐标。我想为每个“角多边形”确定如果选择作为较大多边形的顶点的顶点将最大化它的区域。多边形是一个已经应用了透视变换的矩形,所以我认为它是一个梯形。

polygon

我已经尝试通过将角的(x,y)s相加并且潜水4来计算粗糙的中心。然后我根据距离该中心点最远的距离选择每个顶点。 (像distance = (Xc - X)^2 + (Yc - Y)^2之类的东西,为了达到性能目的,我避免将结果平方根。)

遗憾的是,这并没有给出预期的结果。通常只有一个顶点被最外面的“角多边形”顶点代替,而其他顶点被另外两个“角多边形”顶点中的一个顶点替换,不包括最近的顶点。

什么是创建更好算法的方法?

2 个答案:

答案 0 :(得分:0)

第一种方法只是蛮力:比较通过组合获得的4 ^ 4 = 256个多边形的面积。

稍微好一点,我猜顶点必须属于点集的凸包(需要确认)。然后丢弃内部点并暴力破坏内部点。由于角四边形的一个和三个顶点位于凸包上,最坏的情况下有3 ^ 4 = 81个组合(最多只有一个;给定示例中有四个;实际上最有可能是2 ^ 4 = 16) )。

enter image description here

您需要一种有效的凸包算法才能节省成本。

答案 1 :(得分:0)

我发布的方法确实有效,因为@MBo建议存在实施错误。为了指明未来的读者,这个算法可能只是因为多边形是凸的和/或梯形,但这仍然是基于我的算法是启发式生成的事实的纯粹推测。