c++ - 四边形的面积

标签 c++ algorithm math

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

  • 0, 0
  • 10, 0
  • 0, 10
  • 10, 10
  • 7, 3

答案应该是 30.0(最接近 P,在本例中它是相等的)。

你知道我该怎么做吗?我知道我可以使用 Heron 公式计算每个四边形的面积,但我是否必须尝试所有组合或者是否有更短的方法?

最佳答案

你可以

  1. 采用具有所需顶点数和形状的单元/模板多边形。
  2. 给它加一个乘法比例因子t,这样它的坐标看起来像

    0, 0
    10t, 0
    0, 10t
    10t, 10t
    7t, 3t
    
  3. 使用 shoelace formula计算面积,说f(t)

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

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

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

关于c++ - 四边形的面积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42334700/

相关文章:

java - 最长递增序列二维矩阵递归

java - java中的数学计算

c++ - Stroustrup 的 PPP 使用 C++ : chapter 7, 第 7 节 ("Recovering from errors")

c++ - 静态函数内部的动态内存分配

c++ - 将函数指针定义为新类型,并在 C++ 中将模板类型作为参数是不可能的吗?

database - 具有固定列数的可搜索位矩阵的一个好的表示形式是什么?

string - perl中的后缀数组?

c# - 高效乘法

javascript - 浏览器宽度负 25%

c++ - 返回字符串及其 .c_str() 的生命周期