四边形的面积

Posted

技术标签:

【中文标题】四边形的面积【英文标题】:Area of a quadrilateral 【发布时间】:2017-02-20 00:32:41 【问题描述】:

我在一个平面上有 n 个点和一个目标区域 P。我试图找到四个点,它们的面积是四边形的角,面积最接近 P。以下是 n=5 和 P=30 的示例:

0, 0 10, 0 0, 10 10, 10 7、3

答案应该是 30.0(最接近 P,在这种情况下它是相等的)。

你有什么想法我可以做到这一点吗?我知道我可以使用 Heron 公式计算每个,但是我必须尝试每种组合还是有一些更短的方法?

【问题讨论】:

Heron 的公式适用于三角形,它自然扩展到四边形,称为 Brahmagupta 公式,仅适用于循环四边形,不适用于一般四边形。 你可以使用 Bretschneider 的公式。您需要使用一些触发器。 【参考方案1】:

你可以

    采用具有所需顶点数和形状的单元/模板多边形。

    为其添加一个乘法比例因子t,使其坐标看起来像

    0, 0
    10t, 0
    0, 10t
    10t, 10t
    7t, 3t
    

    使用shoelace formula 找出该区域,例如f(t)

    求解多项式方程f(t) = 30.0 的比例因子t 和多边形的相关坐标。

这应该会为您提供所需区域的多边形 (30.0)。

顺便说一句,我假设您知道多边形的形状,否则,有(无限)许多解决方案可以适合您的目标区域。

【讨论】:

【参考方案2】:

一般来说,我想不出一种算法可以改进对所有可能的四边形的最坏情况迭代。如果该区域与点分布的区域相比较小,您可以使用quadtree 排列来清除距离太远而无法形成合理四边形的点。但即使在那里你也必须小心,因为一个很薄的四边形有远距离的点可能会有恰到好处的面积,所以你可能不得不让自己接受四次算法。

但是你可以使用加速:当你有三个点时,找到相关三角形的面积,如果它大于 abs(target area - best area so far) 那么你不需要尝试任何值第四点。

正如我在 cmets 中提到的,四边形区域需要 Bretschneider's formula,Heron 用于三角形。

【讨论】:

好吧,我知道 Heron 是针对三角形 xd 我想实际上将其面积计算为 2 个三角形。但无论如何,我做了蛮力,有 4 个 for 循环。它适用于我尝试过的测试用例,所以我希望它也能通过他们的测试。谢谢:) @user3751721 是的,您可以这样做。很明显他们不会穿越吗?

以上是关于四边形的面积的主要内容,如果未能解决你的问题,请参考以下文章

已知四点坐标如何求四边形面积

多边形的面积怎么求?

bzoj1069: [SCOI2007]最大土地面积 凸包+旋转卡壳求最大四边形面积

计算四边形的面积

codevs:1249 多边形的面积(多边形面积计算模板)

四边形的面积