基于地理坐标的高阶几何编辑工具算法(4)——线分割面

devtools/2024/10/21 10:01:28/

文章目录

工具步骤

选中待分割面,点击“线分割面”工具,绘制和面至少两个交点的线,双击结束,执行分割操作

应用场景

快速切分大型几何面,以降低面的复杂度,提升编辑效率。常与合并操作共同使用。

算法输入

待分割的面和一条绘制的线

算法输出

分割后的多面

算法示意图

在这里插入图片描述

算法原理

算法参考该原理:几何计算-基于Turf.js实现多边形的拆分及合并
该原理示意图
在这里插入图片描述
上述方法存在以下问题:

  1. lineSplit方法利用lineIntersect的相交点,无法正确切割线,因为lineSplit对splitter取了7位精度
  2. 根据质心判断分割面是否在输入面内有局限性,特殊场景判断有误
    因此,本算法主要在这两部分做出改进:

对1改进:

  1. 先利用lineIntersect方法,计算出面的外轮廓outerL和线L的交点intersects = [S0,S1]
  2. 遍历intersects,对每一个交点,利用nearestPointOnLine方法,算出交点在outerL和L中的索引outerLinds和Linds
  3. 对outerLinds和Linds按照距离线段起始点距离从小到大排序,得到outerLinds_sort和Linds_sort
  4. 遍历outerLinds_sort和Linds_sort,生成多个线段outerPieces和lPieces,全部放入pieceCollection中
  5. 利用polygonize处理pieceCollection,得到多面splittedCollection

对2改进:
在这里插入图片描述

  1. 遍历splittedCollection,利用intersect方法判断是否和outerP相交,如果相交,则保留,得到filterCollection(这里不能用booleanIntersect方法,有精度问题)

最终,遍历filterCollection,和孔洞做diff,得到finalCollection


http://www.ppmy.cn/devtools/42447.html

相关文章

我在去哪儿薅到了5块钱火车票代金券,速薅

哈哈,亲爱的薅羊毛小伙伴们! 刚刚在去哪儿大佬那儿发现了一个超级薅羊毛福利!我只花了短短两分钟,就搞到了一张5块钱火车票代金券,简直是天上掉馅饼的节奏啊! 话不多说,薅羊毛的姿势给你们摆好…

第13章 Python建模库介绍

以下内容参考自https://github.com/iamseancheney/python_for_data_analysis_2nd_chinese_version/blob/master/%E7%AC%AC05%E7%AB%A0%20pandas%E5%85%A5%E9%97%A8.md 《利用Python进行数据分析第2版》 用以学习和记录。 本书中,我已经介绍了Python数据分析的编程基…

Ubuntu系统版本查看办法

Ubuntu系统版本查看办法 1. 使用 lsb_release 命令2. 查看 /etc/issue 文件3. 使用 hostnamectl 命令4. 查看 /etc/os-release 文件5. 查看内核版本6. 使用 neofetch 命令(如果已安装)总结 在 Ubuntu 操作系统中,查看当前系统版本的详细信息可…

MySQL之Schema与数据类型优化(四)

Schema与数据类型优化 日期和时间类型 MySQL可以使用许多类型来保存日期和时间值,例如YEAR和DATE.MySQL能存储的最小时间粒度为秒(MariaDB支持微秒级别的时间类型)。但是MySQL也可以使用微秒级别的粒度进行临时运算,接下来会展示如何绕开这种存储限制。…

谷歌I/O开发者大会速览,推出谷歌版GPT-4o?

北京时间 5 月 15 日凌晨1点,谷歌 I/O 开发者大会在美国加州山景城举行。本次大会聚焦 AI 领域最新进展,发布了全新大模型 Gemini 系列,并展示了 Android 15 集成 AI 的新体验。 以下是本次大会的要点速览: Gemini 1.5 Pro模型升…

盲人社区生活支持体系:织就一张温暖的网

在当今社会,构建一个全面、包容的盲人社区生活支持体系成为了推动社会进步、保障残障人士权益的重要议题。随着科技的不断革新,一款名为“蝙蝠避障”的辅助软件走进了盲人的日常生活,它如同一位无形的向导,通过实时避障与拍照识别…

Stanford-Coursera 算法Week1 笔记

题外话:全文免费放心食用,作者在此求个 三连关注 1. Integer Multiplication(引入) (很小的时候我们就学过:两个数字相乘的算法——将输入(两个数字)转换为输出(它们的乘积)的一组定义良好的规则&#xf…

【YOLO改进】换遍MMPretrain主干网络之ConvNeXt-Tiny(基于MMYOLO)

ConvNeXt-Tiny ConvNeXt-Tiny 是一种改进的卷积神经网络架构,其设计目的是在保持传统卷积神经网络优势的同时,借鉴了一些Transformer架构的成功经验。 ConvNeXt-Tiny 的优点 架构优化: ConvNeXt-Tiny 对经典ResNet架构进行了多种优化&#…