我在平面和目标区域 P 中有 n 个点。我试图找到四个点,其中一个区域是四边形的角,其区域最接近 P 。以下是 n = 5且 P = 30的示例:
答案应该是30.0(最接近 P ,在这种情况下它是相等的。)
你有什么想法我怎么能这样做?我知道我可以使用Heron的公式计算每个四边形的面积,但我是否必须尝试每种组合或者是否有更短的方法?
答案 0 :(得分:1)
你可以
为其添加乘法比例因子t
,使其坐标看起来像
0, 0
10t, 0
0, 10t
10t, 10t
7t, 3t
使用shoelace formula找出该区域,例如f(t)
。
求解缩放因子f(t) = 30.0
的多项式方程t
以及多边形的相关坐标。
这应该为您提供所需区域的多边形(30.0
)。
顺便说一句,我假设您知道多边形的形状,否则,(无限)有许多解决方案可以适合您的目标区域。
答案 1 :(得分:0)
总的来说,我无法想到一种能够改善所有可能的四边形上最坏情况迭代的算法。如果该区域与点扩散的区域相比较小,则可以使用quadtree排列来清除距离太远而无法形成合理四边形的点。但即使在那里你也要小心,因为有一个非常薄的四边形与远点可能只有正确的区域,所以你可能不得不让自己屈服于四次算法。
但你可以使用加速:当你有三个点时,找到相关三角形的面积,如果它大于abs(目标区域 - 目前为止的最佳区域),那么你就不要需要尝试第四点的任何值。
正如我在评论中提到的,对于四边形区域,您需要Bretschneider's formula,Heron是针对三角形的。