94、计算多边形面积

from shapely.geometry import Polygonclass Point:def __init__(self, x, y):self.x = xself.y = ydef __repr__(self):return str([self.x, self.y])#多边形标准化
def polygonTransform(P):return [Point(p[0], p[1]) for p in P]#计算多边形的面积官方
def calculateAreaOffice(P):p = Polygon([(p.x, p.y) for p in P])return p.area#计算多边形的面积,鞋带公式,可用于计算简单多边形
def calculateArea(P):p0, plast = P[0], P[-1]#把起点补充为终点if p0.x != plast.x or p0.y != plast.y:P.append(p0)area = 0for i in range(len(P)-1):xi, yi, xj, yj = P[i].x, P[i].y, P[i+1].x, P[i+1].yarea += 0.5*(yi+yj)*(xi-xj)return abs(area)#计算三角形面积
def calculateAreaTriangle(a, b, c):ab = [b.x-a.x, b.y-a.y]ac = [c.x-a.x, c.y-a.y]return 0.5*abs(ab[0]*ac[1]-ab[1]*ac[0])#计算多边形面积,拆成三角形的和,只适用于凸多边形
def calculateAreaConvex(P):return sum([calculateAreaTriangle(P[0], P[i], P[i+1]) for i in range(1, len(P)-2)])#多边形面积计算case
def case():LP = []LP.append([[0, 0], [1, 0], [1, 1], [0, 1]])LP.append([[0, 0], [1, 0], [1, 1]])LP.append([[0, 0], [2, 0], [1, 1], [0, 0]])LP.append([[3, 4], [5, 11], [12, 8], [9, 5], [5, 6]]) #凹多边形LP = [polygonTransform(P) for P in LP]return LPif __name__ == '__main__':P = case()[3]#0-计算多边形的面积官方print(calculateAreaOffice(P))#1-计算多边形的面积,鞋带公式,可用于计算简单多边形,推荐使用print(calculateArea(P))#2-计算多边形面积,拆成三角形的和,仅适用于凸多边形print(calculateAreaConvex(P))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/634111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

EMI抑制的方法

1 EMI抑制 抑制电磁干扰(EMI)是在电子电路和系统设计中非常重要的一项任务,以确保设备的正常运行并遵守电磁兼容性(EMC)标准。以下是一些常见的方法,用于在电子系统中进行EMI抑制: 滤波器的使…

安装JDK: 错误1316.指定的账户已存在

安装JDK: 错误1316.指定的账户已存在 引方案尝试JDK卸载重装JDK注册表清理JDK21JDK1.8 解压版JDK1.8 8u3xx 引 在执行了某个神秘脚本后,我电脑的很多软件就不可用了,怀疑是注册表被动到了,包括java开发必备的JDK,也无…

TortoiseSVN客户端如何安装配置并实现公网访问服务端提交文件到本地服务器

文章目录 前言1. TortoiseSVN 客户端下载安装2. 创建检出文件夹3. 创建与提交文件4. 公网访问测试 前言 TortoiseSVN是一个开源的版本控制系统,它与Apache Subversion(SVN)集成在一起,提供了一个用户友好的界面,方便用…

【Docker】在Windows操作系统上安装Docker

欢迎来到《小5讲堂》,大家好,我是全栈小5。 这是《Docker容器》序列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对…

Lucas求大组合数C(n,m)%p

将大组合数C&#xff08;n,m&#xff09;%p分解为小组合数C&#xff08;n,m&#xff09;%p乘积的模&#xff0c;n<10^18,m<10^18。 其中求解小组合数可以根据定义式计算&#xff08;质因子分解&#xff09;&#xff0c;也可以通过定义式的变形计算&#xff08;逆元&…

Golang个人web框架开发-学习流程

Golang-个人web框架 github仓库创建github仓库 web框架学习开发周期第一阶段--了解第一阶段思考小结 第二阶段第三阶段 github仓库 github地址&#xff1a;ameamezhou/golang-web-frame 后续还将继续学习更新 创建github仓库 设置免密登录 ssh-keygen 一路回车就OK 上面有告…

docker安装marcocesarato/php-conventional-changelog报错

composer require --dev marcocesarato/php-conventional-changelog --no-update “marcocesarato/php-conventional-changelog”: “^1.17” 在小皮环境没问题&#xff0c;在dockerswoole环境下报错 "scripts": {"changelog": "conventional-chang…

【Numpy】 字典映射

字典映射 import numpy as np dict_map {5: 1, 20: 2, 25: 3} labels1 [5, 5, 20, 5, 20, 25, 25, 20, 5, 5, 5] # __getitem__返回所给键对应的值。 labels2 np.vectorize(dict_map.__getitem__)(labels1) print(labels1) print(labels2)[5, 5, 20, 5, 20, 25, 25, 20, 5,…

压栈方式调用函数

gdb操作技巧 开启汇编调试set disassemble-next-line on2.汇编单步调试命令 (gdb) si (gdb) ni退出layout&#xff1a;ctrlx 再a键 代码 基于64位&#xff0c;用pushl会编译报错&#xff0c;查看了C编的程序都用pushq 压栈8字节 .section .data base:.int 100 plus_no:.int…

CentOS 7.9 安装图解

特特特别的说明 CentOS发行版已经不再适合应用于生产环境&#xff0c;客观条件不得不用的话&#xff0c;优选7.9版本&#xff0c;8.5版本次之&#xff0c;最次6.10版本&#xff08;比如说Oracle 11GR2就建议在6版本上部署&#xff09;&#xff01; 引导和开始安装 选择倒计时结…

vue3 + antd 封装动态表单组件(一)

前置条件&#xff1a; vue版本 v3.3.11 ant-design-vue版本 v4.1.1 创建动态组件配置文件config.js import { Input, Textarea, InputNumber, Select, RadioGroup, CheckboxGroup, DatePicker } from ant-design-vue;// 表单域组件类型 export const componentsMap {Text: …

Python 异源mesh裁剪融合实现与优化

Python 异源mesh裁剪融合实现与优化 一、项目需求二、解决方案1. 代码2. 结果3. 耗时 三、优化探索0. 分析1. 在体素边界处进行裁剪2. 用mesh分块进行裁剪3. 用缓冲区的思路裁剪 一、项目需求 对mesh进行裁剪&#xff0c;但发现若非mesh是致密的&#xff0c;那么裁剪边会出现锯…

JVM工作原理与实战(十六):运行时数据区-Java虚拟机栈

专栏导航 JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、运行时数据区 二、Java虚拟机栈 1.栈帧的组成 2.局部变量表 3.操作数栈 4.帧数据 总结 前言 JVM作为Java程序的运行环境&#xff0c;其负责解释和执行字节码&#xff0c;管理…

图片太模糊我们怎么提高清晰度呢

在数字时代&#xff0c;图片是我们日常生活中不可或缺的一部分。然而&#xff0c;有时候由于各种原因&#xff0c;我们得到的图片清晰度可能并不理想。这篇文章将介绍三款软件&#xff0c;帮助你提高图片的清晰度&#xff0c;让你的图片更加生动、清晰。 一、水印云 水印云是…

小型机故障案例

小型机故障案例 小型机往往应用于金融、电力、电信等行业&#xff0c;Unix操作系统和专用服务器RAS特性、纵向扩展性和高并发访问下的出色处理能力**&#xff0c;如HP RX6600**本文章记录在机房直连服务器进行故障原因排查及解决过程 故障现象 HP RX6600小型机关机后&#xff…

uniapp 微信小程序 内嵌H5网页办法

uniapp 微信小程序 内嵌H5网页办法 如图所示 1.新建webView页面 <template><web-view v-ifhttpUrl :srchttpUrl></web-view> </template><script>export default {data() {return {httpUrl: "",};},onLoad(options) {options.http…

脏牛漏洞(CVE-2016-5195)复现过程(详细完整版)

1、实验环境 KaLi 攻击机 Linux靶机 靶场 实验目的&#xff1a; 掌握漏洞利用的方法 掌握脏牛漏洞的原理 提高对内核安全性的认识 2、靶场搭建 VMware导入靶场 靶场地址&#xff1a;链接&#xff1a;百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。…

element表格复选框回显,取消选择

this.dataList response.rowsthis.tableColumnListresponse.tableColumnListthis.queryParams.totalresponse.totalif (this.pointitle修改) {console.log("xxxx")let arrthis.dataListlet arr1this.tagsthis.$nextTick(()>{arr.forEach((row)>{arr1.forEach(…

Pypputeer自动化

Pyppeteer简介 pyppeteer 是 Python 语言的一个库&#xff0c;它是对 Puppeteer 的一个非官方端口&#xff0c;Puppeteer 是一个 Node 库&#xff0c;Puppeteer是Google基于Node.js开发的一个工具&#xff0c;它提供了一种高层次的 API 来通过 DevTools 协议控制 Chrome 或 Ch…

Gradio转换为API调用

Gradio UI应用转化调用的API接口&#xff0c; 1、Flask Web库框架创建一个API服务器。 2、下面是一个简单的代码示例&#xff1a; from flask import Flask, jsonify, request import gradio as grapp Flask(__name__)# define your Gradio interface function def say_hell…