当前位置: 首页 > news >正文

使用Python计算平面多边形间最短距离

要计算平面多边形间的最短距离,首先需要导入Excel表格中的多边形数据,然后使用GJK(Gilbert-Johnson-Keerthi)算法来判断两个多边形是否重叠。如果两个多边形不重叠,可以计算它们之间的最短距离。

以下是一个基本的Python代码示例,用于导入多边形数据并使用GJK算法计算最短距离。在此示例中,我们使用openpyxl库来处理Excel数据和gjk库来执行GJK算法。请注意,要使用这些库,您需要安装它们。

import openpyxl
from gjk import GJK# 从Excel表格中导入多边形数据
def import_polygons_from_excel(file_path):workbook = openpyxl.load_workbook(file_path)sheet = workbook.activepolygons = []for row in sheet.iter_rows(values_only=True):# 假设表格的格式为:类型, x1, y1, x2, y2, ...polygon_type = row[0]points = [(row[i], row[i + 1]) for i in range(1, len(row), 2)]polygons.append((polygon_type, points))return polygons# 计算多边形间的最短距离
def calculate_shortest_distance(polygons):for i in range(len(polygons)):for j in range(i + 1, len(polygons)):type_a, points_a = polygons[i]type_b, points_b = polygons[j]# 使用GJK算法检查两个多边形是否重叠gjk = GJK(points_a, points_b)if not gjk.intersection():# 如果未重叠,计算最短距离distance = gjk.distance()print(f"最短距离 between {type_a} and {type_b}: {distance}")if __name__ == "__main__":file_path = "polygons.xlsx"  # 请替换为您的Excel文件路径polygons = import_polygons_from_excel(file_path)calculate_shortest_distance(polygons)

请确保将Excel文件路径替换为您实际使用的文件路径,并根据您的Excel表格格式进行相应的数据导入。此示例仅演示了基本的多边形间距离计算,您可能需要根据您的具体需求进一步扩展和完善代码。

相关文章:

使用Python计算平面多边形间最短距离

要计算平面多边形间的最短距离,首先需要导入Excel表格中的多边形数据,然后使用GJK(Gilbert-Johnson-Keerthi)算法来判断两个多边形是否重叠。如果两个多边形不重叠,可以计算它们之间的最短距离。 以下是一个基本的Pyt…...

【Python】Python语言基础(中)

第十章 Python的数据类型 基本数据类型 数字 整数 整数就是整数 浮点数 在编程中,小数都称之为浮点数 浮点数的精度问题 print(0.1 0.2) --------------- 0.30000000000000004 ​​1.可以通过round()函数来控制小数点后位数 round(a b),则表示…...

观察者模式、订阅者发布者模式、vtk中的观察者模式

文章目录 什么是观察者模式vtk是如何实现的观察者模式.AddObserver什么时候使用观察者模式?什么使用订阅发布者模式?观察者模式的实现订阅发布者的实现总结知识补充: 什么是观察者模式 用于在对象之间建立一对多的依赖关系,当一个对象的状态发生变化时…...

关于element-ui中,页面上有多个el-table并通过v-if、v-else等控制是否显示时,type=selection勾选框失效或不显示的问题

刚开始是勾选框那一列直接空了什么都不显示,搜索了一下说是给el-table标签增加id,加了之后是显示了,但是点击任何选框都会直接取消全部选中效果,翻了半天源码也没发现到底是哪里事件冲突了还是怎么回事,烦了&#xff0…...

Stewart六自由度正解、逆解计算-C#和Matlab程序

目录 一、Stewart并联六自由度正解计算 (一)概况 (二)Matlab正解计算 1、参考程序一 2、参考程序二 (三)C#程序正解计算 1、工程下载链接 2、正解运行计算 (四)正程…...

C语言 驼峰命名法和下划线命名法

在C语言中,变量命名遵循以下规则: 变量名只能由字母、数字和下划线组成。变量名必须以字母或下划线开头。变量名不能使用C语言中的关键字。变量名中不能出现连续的两个下划线。变量名区分大小写,例如,count和Count被视为两个不同…...

大数据学习(8)-hive压缩

&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博>主哦&#x…...

[sqoop]hive导入mysql,其中mysql的列存在默认值列

一、思路 直接在hive表中去掉有默认值的了列,在sqoop导入时,指定非默认值列即可, 二、具体 mysql的表 hive的表 create table dwd.dwd_hk_rcp_literature(id string,literature_no string,authors string,article_title string,source_title string…...

Stream流中的常用方法(forEach,filter,map,count,limit,skip,concat)和Stream流的特点

1、forEach方法 该方法接收一个Consumer接口是一个 消费型 的函数式接口,可以传递Lambda表达式,消费数据用来遍历流中的数据,是一个 终结 方法,遍历 之后就不能继续调用Stream流中的其他方法 package com.csdn.stream; import jav…...

2023大联盟2比赛总结

比赛链接 反思 T1 奇怪的贪心和构造题一直是我的软肋部分 T2 简单题 T3 也不难 T4 套路没学过,感觉还是太菜了 题解 A 考虑先给图随便染色,然后调整 因为每个点的度数为 3 3 3,所以如果有 x → u → v x\to u\to v x→u→v 的颜…...

Flutter笔记:电商中文货币显示插件Money Display

Flutter笔记 电商中文货币显示插件 Money Display 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/details/1338…...

腾讯云上创建 对象存储cos

1. 登录腾讯云, 找到对象存储cos 2. 创建存储桶 3. 获取4个配置参数 桶名称 / 地域secretId / secretKey...

微信小程序生成海报

效果: js1: const cloudHelper = require(../../../helper/cloud_helper.js);async function config1({cover,title,desc,qr,bg = }) {var qr1 ="images/qr.png"var qr2 ="https://636c-cloud1-0gu29f2j63906b7e-1319556650.tcb.qcloud.la/activitycomm/setu…...

stm32学习笔记:EXIT中断

1、中断系统 中断系统是管理和执行中断的逻辑结构,外部中断是众多能产生中断的外设之一。 1.中断: 在主程序运行过程中,出现了特定的中断触发条件 (中断源,如对于外部中断来说可以是引脚发生了电平跳变,对于定时器来…...

css 块元素、行内元素、行内块元素相互转换

在HTML和CSS中,元素可以分为三类:块级元素(Block-level Elements)、内联元素(Inline Elements)和内联块级元素(Inline-block Elements)。 块级元素(Block-level Elements…...

【JUC】多线程基础概述

文章目录 1. 一锁二并三程2. 用户线程和守护线程 1. 一锁二并三程 一锁:synchronized 二并: 并发:一台处理器“同时”处理多个任务,同一时刻只有一个事件发生并行:多台处理器同时处理多个任务,同一时刻多个处理器分…...

Git 回退代码的两种方法对比

Git 回退代码版本 在项目的开发中,有时候还是会出现,一些误提交了一些代码,这时候就会想撤回提交的代码,在Git中有两种方法可以使用,现在通过对比方法比较这两种方法的区别,分别适用于哪些情况&#xff1f…...

Avalonia常用小控件Charts

1.项目下载地址:https://gitee.com/confusedkitten/avalonia-demo 2.UI库Semi.Avalonia,项目地址 https://github.com/irihitech/Semi.Avalonia 3.Charts库,LiveChartsCore.SkiaSharpView.Avalonia,Nuget获取只有预览库&#x…...

【Hugging Face】管理 huggingface_hub 缓存系统

摘要 这篇文档介绍了Hugging Face Hub的缓存系统。该系统旨在提供一个中央缓存,以便不同版本的文件可以被下载和缓存。缓存系统将文件组织成模型、数据集和空间等不同的目录,每个目录包含特定类型的文件。系统确保如果文件已经下载并更新,除非明确要求,否则不会再次下载。…...

Python学习基础笔记六十六——对象的方法

我们已经学习到的对象类型: 整数类型的对象 字符串类型的对象 列表类型的对象 元组类型的对象 对象通常都有属于自己的方法(method) 调用对象的方法和调用函数差不多,只要在前面加上所属对象的一个点。 var1 [1, 2, 3,4, 5,…...

Performance-Fish:深度解析《环世界》400%性能优化核心技术

Performance-Fish:深度解析《环世界》400%性能优化核心技术 【免费下载链接】Performance-Fish Performance Mod for RimWorld 项目地址: https://gitcode.com/gh_mirrors/pe/Performance-Fish Performance-Fish 是专为《环世界》(RimWorld&#…...

恶劣环境下LED发光服饰的可靠系统构建:从设计到工艺的工程实践

1. 项目概述与核心挑战如果你曾经尝试过制作一件会发光的服装,无论是为了音乐节、万圣节还是水下表演,你大概都体会过那种“亮一次,修三次”的挫败感。LED灯带在工作室的桌面上测试时完美无瑕,一旦穿到身上,开始活动、…...

从零构建现代化Web控制面板:安全架构与实时监控实践

1. 项目概述:一个为开发者设计的现代化控制面板最近在GitHub上看到一个挺有意思的项目,叫clawpanel,作者是kweephyo-pmt。光看名字,你可能会联想到“爪子”和“面板”,感觉像是个带点攻击性或工具属性的管理界面。实际…...

YimMenu终极配置指南:从零开始掌握GTA V高级菜单工具

YimMenu终极配置指南:从零开始掌握GTA V高级菜单工具 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMe…...

百度网盘直链解析终极指南:如何实现高速下载的完整技术方案

百度网盘直链解析终极指南:如何实现高速下载的完整技术方案 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 在云存储服务普及的今天,百度网盘作为国内用…...

PowerInfer:基于热点神经元预测的LLM高性能推理引擎部署指南

1. 项目概述:当推理速度成为AI落地的瓶颈最近在折腾本地大模型推理的朋友,估计都绕不开一个核心痛点:速度。模型效果再好,生成一句话要等上十几秒,那种“卡顿感”足以劝退绝大多数想把它集成到实际应用里的开发者。我自…...

AI编程助手安全规则实战:从SQL注入防御到团队安全基线构建

1. 项目概述:当AI编程助手遇上安全红线最近在GitHub上看到一个挺有意思的项目,叫“cursor-security-rules”。光看名字,你大概能猜到它和Cursor这个AI编程工具有关,而且重点是“安全规则”。没错,这个项目本质上是一个…...

Arm Neoverse CMN-700互连架构与寄存器编程详解

1. Arm Neoverse CMN-700架构概览在现代高性能计算系统中,处理器核心数量的快速增长对互连架构提出了严峻挑战。作为Arm Neoverse平台的核心组件,CMN-700一致性互连网络采用创新的Mesh拓扑结构,解决了多核处理器间的通信瓶颈问题。我在实际芯…...

基于WLED分段功能与激光切割的多层智能艺术灯板制作全攻略

1. 项目概述与核心价值如果你和我一样,对那种能随着音乐呼吸、或者能独立变换不同区域色彩的智能灯光装置着迷,那么你一定会喜欢这个项目。它远不止是把LED灯条粘在板子后面那么简单,而是将激光切割的精密工艺、分层的艺术设计,与…...

DIY热熔螺母压入装置:从原理到实践,解决3D打印螺纹连接痛点

1. 项目概述:为什么我们需要一台热熔螺母压入装置?如果你和我一样,是个热衷于用3D打印制作原型、工具甚至小批量功能件的爱好者,那你一定遇到过这个痛点:如何在塑料件上实现一个坚固、耐用且能反复拆装的螺纹连接&…...