网格剖分-耳切法效果展示

news2024/10/9 20:37:37

1.前言

将简单多边形转换成一组由同样顶点组成的三角形集合是计算机图形学中的一个经典问题。问题中,简单多边形是指由一组有序顶点组成的,点V0~点Vn-1。相邻的顶点之间通过边(Vi,Vi-1)连接,并且边(Vn-1,V0)连接起始点。每个顶点被两条边所共享,而边的所有交点都是顶点。

将一个简单多边分解成三角形集合的方法称之为多边形的三角形化(triangulation of thePolygon)。几何学的知识告诉我们,由n个顶点组成的简单多边形总是可以分解成n-2个三角形。

2.耳切法

简单多边形的耳朵,是指由连续顶点V0,V1和V2组成的内部不包含其他任意顶点的三角形。在计算机几何术语中,v0与V2之间的连线 称之为多边形的对角线,点V1称之为耳尖。虽然你可以将耳尖放到三角形的任意一个顶点上,但是我们认为三角形包含一个耳尖。一个由四个顶点(或者更多)组成的多变形至少有两个不重叠的耳尖。这个特性提供了一个通过递归来解决三角化分割的方法。针对由N个定点组成的多边形,找到其耳尖,移除唯一耳尖上的顶点,此时剩余顶点组成了一个n-1个顶点的简单多边形。我们重复这个操作知道剩余三个顶点。这样的话会产生一个复杂度为O(N3)的算法。随着一些细节改进,耳朵消除可以在O ( N2)的时间来完成。

3.关键点

  1. 需要实现简单多边形轮廓的耳切法网格剖分;
  2. 对于带洞口的情况可以先寻找内外轮廓可见点,并双向联通可见点得到贯通内外轮廓的简单多边形,再进行上述网格化;

  3. 由于部分内轮廓不存在与原始外轮廓的可见点对,需要通过轮廓排序等方式先处理具有可见点对的内轮廓,将问题简化;

  4. 当多个内轮廓外部可见点重合时可能会造成问题,构造的简单多边形outer在耳切法处理时可能会找不到有效耳朵点。再寻找内轮廓的外部可见点时需要避免与此前轮廓的外部可见点重合的情况;
  5. 对于洞口中可能继续层层嵌套轮廓的情况,可以简化为带洞口轮廓情况处理,深度优先或广度优先遍历轮廓树,以每两级轮廓(外轮廓和内轮廓)为处理单元进行耳切法网格剖分,将结果数据进行归并得到整体的网格数据。

4.效果

 

5.写在后面

1、网格化处理是基础几何算法内容,其准确性和效率是评判几何内核质量的重要指标;

几何算法学习实践和应用(二维)_工程师要掌握的几何图形算法-CSDN博客文章浏览阅读1.4k次。几何算法底层的原理很多是相通的,用到的也都是基础的工具函数,学习和积累非常重要。很多原理可由二维推广到三维,一些复杂三维算法可以分解为二维实现。_工程师要掌握的几何图形算法https://blog.csdn.net/baidu_38621657/article/details/129509086

几何算法学习实践(三维)_三维图形算法-CSDN博客文章浏览阅读2k次,点赞2次,收藏4次。将个人几何算法学习和实践进行记录,方便自己和有需要的人。学习和实践相结合,建立小项目进行练手,该项目包含几何工具库与图形显示两部分。_三维图形算法https://blog.csdn.net/baidu_38621657/article/details/129473678 

2、上述结果展示使用了WPF技术,在数据预处理过程中调用了轮廓提取、组织处理轮廓树等算法接口;详细可参考博主此前文章。

利用WPF绘制轮廓并保存为图片_c#wpf在图片上划线,保存划线后的图片-CSDN博客文章浏览阅读423次。WPF作为显示工具也挺好用,用C#开发应用软件会比较省力,当然也有其缺点,如在对效率要求较高的情况下有性能问题,本文记录用WPF绘制轮廓并保存为图片相关内容。显示效果也还不错,满足调试使用了,_c#wpf在图片上划线,保存划线后的图片https://blog.csdn.net/baidu_38621657/article/details/142340681从线段中搜寻提取闭合轮廓(三)_ai提取图片轮廓线-CSDN博客文章浏览阅读563次,点赞6次,收藏18次。做底层和数据的调试问题也是个麻烦事,如果没有方便的可视化工具辅助,那将令人感到痛苦,借助可视化的工具可以让我们高效、省心,进而心情舒畅,重要的是可以提高调试效率。当然可视化工具也分不同层次的,大致分为手动操作为主的、自动为主的两种,手动操作为主的也要区分工具准确性、易用性,如果碰到难用的也是经常令人心情烦躁,甚至破口大骂;而易用性较好的会比较省心,但由于其手动操作为主的特点,需要耗时耗力,也难以心情很舒畅。(中间吐槽省略......)_ai提取图片轮廓线https://blog.csdn.net/baidu_38621657/article/details/142144804

图形几何、数据处理、并行计算相关研究和研发,公众号:geometrylib,欢迎交流。 

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

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

相关文章

换毛季来临,铲屎官如何应对猫咪掉毛?宠物空气净化器该怎么选?

养猫前,我是潇洒自如的单身汉;养猫后,我就是勤恳辛劳的保姆!每天下班还要“伺候”猫孩子,收拾它一天在家掉落的猫毛。虽说我没有洁癖,但换毛季可不是开玩笑的,稍微偷懒几天没有清理,…

C++竞赛初阶—— 石头剪子布

题目内容 石头剪子布,是一种猜拳游戏。起源于中国,然后传到日本、朝鲜等地,随着亚欧贸易的不断发展它传到了欧洲,到了近现代逐渐风靡世界。简单明了的规则,使得石头剪子布没有任何规则漏洞可钻,单次玩法比…

苹果开发者网站iOS应用创建全流程详解

引言 在当今的移动开发领域,uni-app 和 Flutter 等跨平台开发工具为开发者提供了便利,可以一次编写代码并部署到多个平台。然而,尽管这些工具简化了应用的开发过程,但它们在iOS应用的构建和发布环节往往并不涉及太多。对于希望在…

上传本地项目到GitHub远程仓库(极简洁操作版)

第一步:在GitHub创建一个空的仓库 第二步:将仓库克隆(下载)到本地 第三步:将你要上传的所有文件放到这个克隆的仓库文件夹中 第四步:通过git add .将待上传文件添加到暂存区 此时,可以通过git …

网际报文协议ICMP及ICMP重定向实例详解5

之前在一个项目中遇到了与ICMP重定向相关的问题,因为缺乏对ICMP相关内容的了解,排查了很长一段时间才查出来。本文给大家简要地介绍一下ICMP及ICMP重定向相关的内容。 1、ICMP的概念 ICMP(Internet Control Message Protocol)网际…

156-反溯源隐藏C2项目域前置云函数数据中转DNS转发

演示案例: CS-隐藏防朔源-域前置-C2&CDN CS-隐藏防朔源-云函数-C2&API 触发 CS-隐藏防朔源-DNS 解析-C2&流量伪装 CS-隐藏防朔源-数据转发-C2&Iptables&中间件 接上节课的知识点,上节课只讲了利用CDN进行隐藏的方式 #域前置-CDN 配合…

每日一练:分割回文串Ⅳ

1745. 分割回文串 IV - 力扣(LeetCode) 题目要求: 给你一个字符串 s ,如果可以将它分割成三个 非空 回文子字符串,那么返回 true ,否则返回 false 。 当一个字符串正着读和反着读是一模一样的&#xff0…

Win32 API 控制台鼠标操作、坐标获取与相关函数介绍

Win32 API 控制台鼠标操作、坐标获取与相关函数介绍 一、前置介绍读取控制台输入缓冲区数据 ReadConsoleInput 函数控制台输入缓冲区中的输入事件 INPUT_RECORD 结构鼠标输入事件 MOUSE_EVENT_RECORD 结构更改输入模式 SetConsoleMode 函数 二、鼠标坐标获取(以下代码环境为 VS…

阿里出品2024版Java架构师面试指南,涵盖Java所有核心技能

最近很多粉丝朋友私信我说:熬过了去年的裁员潮却没熬过现在的内卷;打开Boss直拒一排已读不回,回的基本都是外包,薪资还给的不高,对技术水平要求也远超从前;感觉Java一个初中级岗位有上千人同时竞争&#xf…

面试必备:经典的 Shell 十三问!

1. 为何叫做shell? 我们知道计算机的运作不能离开硬件,但使用者却无法直接操作硬件,硬件的驱动只能通过一种称为操作系统(OS,Operating System)的软件来管控。linux严格来说只是一个操作系统,我们称之为内核(kernel)。 使用者没…

基于vue框架的大学生在线教育jp6jw(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:学生,教师,课程类型,课程信息,资料类型,课程资料,课程名称,选课信息,学生咨询,教师回复 开题报告内容 基于Vue框架的大学生在线教育平台开题报告 一、课题背景 随着互联网技术的飞速发展和全球教育需求的日益多元化,在线教…

单细胞转录组 —— STARsolo 原始数据处理

单细胞转录组 —— STARsolo 原始数据处理实战 前言 前面我们已经介绍了几种原始数据处理工具,最后再介绍一种多平台兼容的快速定量工具 —— STARsolo。 主要使用的还是 STAR 比对软件,只是增加了更多对单细胞数据的处理,不同平台数据的差…

2.5 Spring Boot整合Spring MVC框架

今天,我将向大家介绍如何在Spring Boot中整合Spring MVC框架,并展示如何创建和测试控制层(Controller)。 首先,让我们简要回顾一下Spring MVC。Spring MVC是一个基于Servlet的MVC框架,它简单、侵入性小&am…

安装Node.js环境,安装vue工具

一、安装Node.js 去官方网站自行安装自己所需求的安装包 这是下载的官方网站 下载 | Node.js 中文网 给I accept the terms in the License Agreement打上勾然后点击Next 把安装包放到自己所知道的位置,后面一直点Next即可 等待它安装好 然后winr打开命令提示符cmd 二、安装…

线稿如何快速上色?AI自动线稿上色教程分享

前言 在数字艺术的世界里,上色是一个既耗时又需要技巧的步骤。幸运的是,随着AI技术的发展,我们有了像千鹿AI这样的工具,它可以帮助艺术家和设计师自动完成线稿的上色工作。以下是使用千鹿AI进行自动线稿上色的详细教程。 准备工作…

vue 入门二

参考&#xff1a;丁丁的哔哩哔哩 11.组件基础 传递 props 1.父组件 <BlogPost title"My journey with Vue" />子组件<script setup> defineProps([title]) </script><template><h4>{{ title }}</h4> </template>2.prop…

【springboot9736】基于springboot+vue的逍遥大药房管理系统

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 项目描述 伴随着全球信息化发展&#xff0c;行行业业都与计算机技…

10月9日

没看清x的范围

前端vue-配置请求拦截器

1.配置拦截器&#xff0c;记得20行的导出 2.响应拦截器&#xff0c;记得28行的导出 3.拦截器不止可以拦截&#xff0c;还可以添加内容

KaTeX.js渲染数学公式

什么是KaTeX.js ? KaTeX 是一个集成速度快且功能丰富的数学公式渲染库&#xff0c;专为 Web 设计。它由 Khan Academy 开发&#xff0c;提供接近印刷品质的数学公式展示&#xff0c;同时保持与浏览器的高效互动性。KaTeX 特点包括快速渲染速度、高质量的输出、独立运行、跨平…