Python中的鞋带算法

2025年3月15日 | 4分钟阅读

引言

鞋带算法,又称鞋带定理,通过对多边形的 x 和 y 坐标进行交叉相乘,高效地计算出多边形的面积。

该算法在测量、林业和计算机图形学等领域尤其有用,它提供了一种简单的方法来确定多边形面积,同时通过将计算保持在可控的总和范围内,最大限度地降低了整数溢出的风险。

Shoelace Algorithm in Python

为了计算多边形的面积,需要将每个顶点的相应坐标进行交叉相乘。由于多边形中的坐标不断地进行交叉相乘,就像系鞋带一样,因此该公式被称为“鞋带公式”。请参考下表。该算法在测量、林业以及二维和三维计算机图形学等领域都有应用。

Shoelace Algorithm in Python

为了使用鞋带算法,您必须

  • 在一个表中按逆时针顺序(例如,A、B、C、D 和 E)列出每个顶点,并在两个不同的表格列中记录 x 和 y 坐标,
  • 将每一行的 x 坐标乘以下面一行的 y 坐标以得到总和(在表格底部时,将回到第一行),
  • 将每一行的 y 坐标乘以下面一行的 x 坐标以得到总和(在表格底部时,将回到第一行)。
  • 为了得到绝对值,从第一个总和中减去第二个总和(绝对差值 |sum1-sum2|),
  • 将结果除以二以得到多边形的真实面积。
Shoelace Algorithm in Python
Shoelace Algorithm in Python

Python 中鞋带算法的实现

为了实现鞋带算法,我们将多边形定义为按逆时针顺序排列的顶点列表。每个顶点的坐标(包括 x 和 y)将作为两个数字列出。

输出

 
Polygon Vertices:
[[2, 7], [10, 1], [8, 6], [11, 7], [7, 10]]
Area = 32.0 cm²   

说明

Python 应用程序使用高斯面积公式(也称为鞋带定理)来确定多边形的面积。将代表顶点或点的列表提供给 calculatePolygonArea() 函数,每个顶点由其 (x, y) 坐标表示。该函数计算两个总和:total_x_product 和 total_y_product,分别代表相邻顶点坐标的交叉乘积。通过考虑连接到第一个顶点的最后一个顶点,它还处理了循环。在加总乘积后,通过计算两个总和之间的绝对差值并除以二来确定面积。通过此实现,计算了具有五个顶点的多边形的面积。

另一种方法

上述过程要求计算机执行两次单独的总和计算,这可能导致值非常大。有时,如果这些值超过了整数的最大值,则可能会发生溢出错误。

这是重写鞋带公式的另一种方法

Shoelace Algorithm in Python

在这种情况下,可以修改前面提供的 Python 代码以包含更新的公式并降低溢出错误的发生可能性。

输出

 
Polygon Vertices:
[[2, 7], [10, 1], [8, 6], [11, 7], [7, 10]]
Area = 32.0 cm²   

说明

此 Python 应用程序应用鞋带定理来确定多边形的面积。将代表多边形顶点 (x, y) 坐标的点的列表提供给 calculate Polygon Area 函数。鞋带公式对每个顶点进行迭代应用,其中一个顶点的 x 坐标乘以下一个顶点的 y 坐标,然后减去当前顶点 y 坐标与下一个顶点 x 坐标的乘积。多边形的绝对面积使用这些总和来计算。然后,应用程序会打印以平方厘米为单位计算出的面积以及顶点。


下一个主题应会记使用 Python