python之求平面离散点集围成的面积

news/2024/12/19 13:25:24/

鞋带公式(Shoelace Formula)是一种计算多边形面积的数学公式,特别适用于已知顶点坐标的多边形。这个公式的名字来源于计算过程中的交叉相乘,类似于系鞋带时的交叉方式。

假设一个多边形有n 个顶点,顶点的坐标依次为((x_1, y_1), (x_2, y_2), \ldots, (x_n, y_n),并且最后一个顶点与第一个顶点相连,即 (x_{n+1}, y_{n+1}) = (x_1, y_1)。那么,这个多边形的面积\ A可以通过以下公式计算:

A = \frac{1}{2} \left| \sum_{i=1}^{n} (x_i y_{i+1} - y_i x_{i+1}) \right|

这个公式可以这样理解:我们把多边形的顶点坐标按顺序排列,然后将每个顶点的 \( x \) 坐标与下一个顶点的 \( y \) 坐标相乘,再减去每个顶点的 \( y \) 坐标与下一个顶点的 \( x \) 坐标相乘,最后将所有这些乘积的差求和并取绝对值,再除以 2,就得到了多边形的面积

鞋带公式的计算过程可以直观地表示为:

A = \frac{1}{2} \left| x_1y_2 + x_2y_3 + \cdots + x_ny_1 - (y_1x_2 + y_2x_3 + \cdots + y_nx_1) \right|

这个公式在计算多边形面积时非常有用,特别是在编程和计算机图形学中,因为它可以很容易地通过循环和数组来实现。

对于平面离散点集围成的面积,只要这些点能够形成一个简单的多边形(即不自交的多边形),就可以使用鞋带公式来计算。首先,需要确定这些点的顺序,使得它们能够形成一个闭合的多边形。然后,按照鞋带公式的步骤,计算出多边形的面积

例如,假设我们有四个点((1, 1), (4, 1), (4, 5), (1, 5)),它们可以形成一个矩形。按照鞋带公式,我们可以这样计算面积

A = \frac{1}{2} \left| 1 \cdot 1 + 4 \cdot 5 + 4 \cdot 5 + 1 \cdot 1 - (1 \cdot 4 + 1 \cdot 4 + 5 \cdot 1 + 5 \cdot 1) \right|

A = \frac{1}{2} \left| 1 + 20 + 20 + 1 - (4 + 4 + 5 + 5) \right|

A = \frac{1}{2} \left| 42 - 18 \right|

A = \frac{1}{2} \times 24 = 12

所以,这个矩形的面积是 12。
下面通过python实现圆的面积计算:

python">import numpy as np
def shoelace_formula(x,y):x=np.append(x,x[0])y=np.append(y,y[0])n=len(x)-1area=0for i in range(n):area+=(x[i]*y[i+1])-(y[i]*x[i+1])area=abs(area)/2.0return area
theta = np.arange(0, 2 * np.pi, 0.01)
r=1
x =  r * np.cos(theta)
y =  r * np.sin(theta)
area_theory=np.pi*r**2
area_cal=shoelace_formula(x,y)
print("area_theory:",area_theory)
print("area_cal:",area_cal)


http://www.ppmy.cn/news/1556389.html

相关文章

基于微信小程序的小区疫情防控ssm+论文源码调试讲解

第2章 程序开发技术 2.1 Mysql数据库 为了更容易理解Mysql数据库,接下来就对其具备的主要特征进行描述。 (1)首选Mysql数据库也是为了节省开发资金,因为网络上对Mysql的源码都已进行了公开展示,开发者根据程序开发需…

深入理解数据库 JOIN 操作

数据库中的JOIN操作是关系型数据库查询中的重要组成部分,它允许我们将多个表的数据结合起来,形成一个新的结果集。你可能已经在不同场景下使用过它,但今天我们将深入探讨JOIN的各种类型、实际应用以及如何高效使用它。 什么是 JOIN 操作&…

跑步训练(蓝桥杯2020试题A)

【问题描述】 小明要进行一个跑步训练。初始时,小明体力充沛,体力值计为10000。小明跑步时每分钟损耗600体力值。小明休息时每分钟增加300体力值。体力值的损耗和增加都是均匀变化的。 小明打算跑一分钟,休息一分钟,再跑一分钟&am…

【zlm】 webrtc源码讲解三(总结)

目录 setsdp onwrite ​编辑 play 参考 setsdp onwrite play 参考 【zlm】 webrtc源码讲解_zlm webrtc-CSDN博客 【zlm】 webrtc源码讲解(二)_webrtc 源码-CSDN博客

深度学习在日志分析中的应用:智能运维的新前沿

在现代信息技术环境中,系统日志记录了系统运行的详细信息,是保障系统稳定运行的重要数据来源。通过对日志数据的分析,可以及时发现系统异常和潜在问题,提升运维效率和系统稳定性。随着深度学习技术的迅速发展,深度学习…

回归预测 | MATLAB实现SVM-Adaboost集成学习结合支持向量机多输入单输出回归预测

回归预测 | MATLAB实现SVM-Adaboost集成学习结合支持向量机多输入单输出回归预测 目录 回归预测 | MATLAB实现SVM-Adaboost集成学习结合支持向量机多输入单输出回归预测基本介绍程序设计基本介绍 SVM-Adaboost集成学习是一种将支持向量机(SVM)与AdaBoost算法相结合的集成学习…

偷懒算法第二天

1 注意:最后一排如果是奇数就拿中间数;如果是偶数就拿中间比较大的哪一个 左右距离为1. 2 注意:思路为先构造数组,0-9各2021个,再遍历数字,取出数字1-9,当数字都用完后,拿出i-这个…

代码开发相关操作

使用Vue项目管理器创建项目:(vue脚手架安装一次就可以全局使用) windowR打开命令窗口,输入vue ui,进入GUI页面,点击创建-> 设置项目名称,在初始化git下面输入:init project&…