软件:VS Code
目标:计算多边形面积
一、基本原理
鞋带公式 (Shoelace Formula),又称为高斯面积公式 (Gauss's Area Formula),是GIS中计算多边形面积经典算法。假设一个多边形有n个顶点,其坐标按逆时针或顺时针顺序排列为:(x1,y1),(x2,y2),…,(xn,yn),其计算公式:

就是将多边形每条边向x轴投影形成梯形。以沿顺时针遍历为例,向右走的边产生正面积,向左走的边产生负面积,两者之差恰好等于多边形面积。把梯形面积公式1/2(yi+yi+1)(xi+1−xi) 展开化简,逆时针相反,就得到了鞋带公式中的交叉相乘形式,如图所示。

二、实现
1.定义点集合
points = [(0, 0), (4, 0), (5, 3), (2, 5), (0, 3)]
2.计算面积
area_sum = sum(p1[0] * p2[1] - p2[0] * p1[1] for p1, p2 in zip(points, points[1:] + points[:1]))
zip就是将2个元素组对应位置的元素进行配对
points第一个元素组
points[1:]+ points[:1]:第二个元素组
points[1:]:在points数组中去掉第一个元素
points[:1]:在points数组中只保留第一个元素
points[1:]+ points[:1]:[P2, P3, P4, P5, P1]
sum:求和,将正向和负向叉积求和
3.显示面积
print(f"多边形面积: {abs(area_sum)/2}")
4.完整代码
points = [(0, 0), (4, 0), (5, 3), (2, 5), (0, 3)]
area_sum = sum(p1[0] * p2[1] - p2[0] * p1[1] for p1, p2 in zip(points, points[1:] + points[:1]))
print(f"多边形面积: {abs(area_sum)/2}")
5.效果



被折叠的 条评论
为什么被折叠?



