【问题标题】:How do you calculate the area of a series of random points?如何计算一系列随机点的面积?
【发布时间】:2011-04-05 22:29:34
【问题描述】:

所以我正在编写一段代码来获取 RC 平面作物除尘器的位置数据并计算横向的总表面积(不重复计算任何面积)。我无法弄清楚如何计算给定操作期间的面积。

给定下表计算点覆盖的面积。

x,y
1,2
1,5
4,3
6,6
3,4
3,1

有什么想法吗?我浏览了 Greens Theorem,但我没有一个实用的编码概念。

感谢您的建议

【问题讨论】:

    标签: python math area rc redgreen


    【解决方案1】:
    1. 从给定点构建convex hull

      算法描述here

      See a very nice python demo + src

    2. 计算它的面积

      Python 代码是here

    【讨论】:

    【解决方案2】:

    使用QHull 对该区域进行三角剖分,然后将所得三角形的面积相加。

    【讨论】:

      【解决方案3】:

      如果您的点保证在整数网格上 - 就像在您的示例中一样 - (并且您真的在寻找封闭区域)Pick's Theorem 会帮助吗?

      【讨论】:

        【解决方案4】:

        您必须将复杂的多边形大致划分为标准多边形(三角形、矩形等),然后找到所有这些多边形的面积。这就像常规积分一样(唯一的区别是您还没有找到近似数据的公式)。

        以上几点是您假设您正在用您的数据形成一个封闭的多边形。

        【讨论】:

        • 或者,更好的是,将该区域积分转换为等高线积分,然后使用高斯求积绕周长走一圈。
        【解决方案5】:

        比我更懂数学的人可能需要在这里验证信息。但它看起来合法:http://www.wikihow.com/Calculate-the-Area-of-a-Polygon 并且相当容易在代码中应用。

        【讨论】:

          【解决方案6】:

          我不完全确定您在寻找“表面积”的程度与寻找距离的程度相同。似乎您想计算该列表的一个点与下一个点之间的距离。如果是这种情况,只需使用Distance Formula

          如果飞机在这些点之间飞行时落下的灰尘宽度恒定,那么面积就是这些点之间的距离乘以喷雾的宽度。

          【讨论】:

          • 我很喜欢这种方法,我忘记在描述中写了,这种方法存在重复计算区域覆盖两次的缺陷。有没有一种简单的方法可以过滤掉重复计算的金额?
          • @TelsaBoil - 我没有意识到重复计算会是一个问题。看看 Lior Kogan 的回答,好像很有用。
          猜你喜欢
          • 2011-06-07
          • 2013-08-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-05-17
          • 2016-06-16
          相关资源
          最近更新 更多