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

news2024/11/19 22:44:13

文章目录

  • 工具步骤
  • 应用场景
  • 算法输入
  • 算法输出
  • 算法示意图
  • 算法原理

工具步骤

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

应用场景

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

算法输入

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

算法输出

分割后的多面

算法示意图

在这里插入图片描述

算法原理

该算法参考该原理:几何计算-基于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.coloradmin.cn/o/1683255.html

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

相关文章

云曦2024年春季学期期中考复现

目录 Web Web_SINGIN 简简单单的文件上传 好玩的PHP 渗透的本质 简简单单的sql re baby_re easy xor Crypto easy_rsa Rsa2 Crypto_Singin Pwn pwn_Sing Misc easy_singin Xjpg 流量分析1 流量分析3 流量分析2 Web Web_SINGIN 1.使用右键检查&#xff0c…

如何在没有密码或Face ID的情况下解锁iPhone

iPhone 是一款以其一流的安全功能而闻名的设备,包括面容 ID 和密码。但是,你有没有想过,如果没有这些安全措施,你是否可以解锁iPhone?无论您是忘记了密码,Face ID不起作用,还是只是对其他方法感…

提权方式及原理汇总

一、Linux提权 1、SUID提权 SUID(设置用户ID)是赋予文件的一种权限,它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。 为可执行文件添加suid权限的目的是简…

VUE使用screenfull实现网页全屏显示

使用方法 首先安装 npm install screenfull --save在使用.vue文件中 引入 import screenfull from screenfull在按钮方法中调用 screenfull.toggle()还可以检测全屏状态 screenfull.isFullscreen测试浏览器是否支持全screenfull screenfull.isEnabled API .request(ele) 全屏…

谓词逻辑(一)

一、句子的谓词符号化 谓词逻辑,也叫一阶逻辑,它对每个最简单的命题尽一步进行分解。 1个体词:可以独立存在的客体。 2谓词:描述一个个体词的属性或多个个体词之间的关系(可用一元函数和多元函数来理解)…

基于树的存储数据结构demo

一.简介 由于之前博主尝试Java重构redis,在redis中的的字典数据结构底层也是采用数组实现,字典中存在两个hash表,一个是用于存储数据,另一个被用于rehash扩容为前者两倍。但是我注意到了在redis的数据结构中,并没有像…

linux系统硬盘读写慢的排查方法

如果服务器硬盘读写慢,可能会导致处理性能降低,用户响应慢。因此及时排除故障至关重要。下面是硬盘读写慢的排查思路。 1、top命令查看硬盘是否繁忙。 2、找出占用硬盘带宽高的进程。 通过iotop命令进行查看,iotop命令是用于展示硬盘读写操作…

高中数学:平面向量-数乘运算

一、定义 顾名思义 向量的数乘运算,就是数量与向量相乘的运算 λ a → \mathop{a}\limits ^{\rightarrow} a→,λ∈R 二、λ a → \mathop{a}\limits ^{\rightarrow} a→的性质 1、长度 |λ|*| a → \mathop{a}\limits ^{\rightarrow} a→| |λ a …

设计模式6——单例模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用,主要是下面的UML图可以起到大作用,在你学习过一遍以后可能会遗忘,忘记了不要紧,只要看一眼UML图就能想起来了。同时也请大家多多指教。 单例模式(Singleto…

python科研数据可视化之折线图

例如 : 下面的配色表画出的图很好看。选择喜欢的颜色,找到代码中颜色部分进行修改即可。 代码部分已经有详细的注释,就不一一解释了。另外,如果想要坐标轴从设定的值开始就把下面代码中的范围xlim,ylim进行注释。 imp…

Goby 漏洞发布|Sonatype Nexus Repository Manager 文件读取漏洞(CVE-2024-4956)

漏洞名称:Sonatype Nexus Repository Manager 文件读取漏洞(CVE-2024-4956) English Name: Sonatype Nexus Repository Manager File Read Vulnerability(CVE-2024-4956) CVSS core: 7.5 影响资产数:93784 漏洞描述…

QT--TCP网络通讯工具编写记录

QT–TCP网络通讯工具编写记录 文章目录 QT--TCP网络通讯工具编写记录前言演示如下:一、服务端项目文件:【1.1】server_tcp.h 服务端声明文件【1.2】thread_1.h 线程处理声明文件【1.3】main.cpp 执行源文件【1.4】server_tcp.cpp 服务端逻辑实现源文件【…

开箱测评!吸猫毛除味神器,希喂FreAir Lite宠物空气净化器实测

掉毛季又来了,猫咪的毛发满天飞,怎么办?我家掉毛怪一到季节就开始掉老多毛,关键还喜欢在家里打架跑酷!天上地下都是毛!为了减少家里空气中浮毛,你做过那些努力呢?最近猫掉毛掉的&…

02-结构型设计模式(共7种)

上一篇:01-创建型设计模式(共6种) 1. Adapter(适配器模式) 适配器模式是一种结构型设计模式,它允许将一个类的接口转换成客户端所期望的另一个接口。这种模式通常用于解决接口不兼容的情况,使得原本由于接口不匹配而无法工作的类可以一起工作…

20232810 2023-2024-2 《网络攻防实践》实验十

1.实践内容 1.1SEED SQL注入攻击与防御实验 (1)使用数据库熟悉SQL查询: 我们已经创建了一个名为Users的数据库,其中包含一个名为creditential的表。该表存储了每个员工的个人信息(例如,eid,密…

DOS学习-目录与文件应用操作经典案例-rd

欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.使用 三.案例 一.前言 rd命令,全称Remove Directory,是DOS操作系统中的一个重要命令,用于删除指定的目录及其所有内容。 二.使用 命令格式…

Kubeblocks系列2-redis尝试之出师未捷身先死

背景: 上一节,完成了Kubeblocks系列1-安装。现在就想拿一个简单的应用测试一下kubeblocks这个所谓的神器是否好用,是否可以应用与生产! Kubeblocks系列2-redis尝试 参照官方文档:创建并连接到 Redis 集群 确保 Red…

ORACLE 资源管理参数与等待事件resmgr:cpu quantum

RESOURCE_MANAGER_PLAN 先来看下参数的含义 官网链接:RESOURCE_MANAGER_PLAN (oracle.com) 意思翻译过来这个参数用于资源计划。后边的看完也不是很明白具体的作用 于是参考了以下文章 Oracle 参数 RESOURCE_MANAGER_PLAN 官方解释,作用,…

RH850F1KM-S4-100Pin_ R7F7016453AFP MCAL Gpt 配置

1、Gpt组件包含的子配置项 GptDriverConfigurationGptDemEventParameterRefsGptConfigurationOfOptApiServicesGptChannelConfigSet2、GptDriverConfiguration 2.1、GptAlreadyInitDetCheck 该参数启用/禁用Gpt_Init API中的GPT_E_ALREADY_INITIALIZED Det检查。 true:开启Gpt_…