Python-基于鞋带公式的面积计算

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

软件: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.效果

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值