从四面体数据中提取表面
四面体网格数据存储方式
四面体网格数据是这样存储的:
分为两部分:
第一部分:
所有顶点的三维坐标数据。
第二部分
每个四面体的顶点编号。
四面体顶点编号顺序满足外法线约定
假如我们随便指定4个顶点编号的顺序,那么四面体顶点编号,则有24种排列方式。
为什么是24种呢?首先4个顶点里任选3个组成一个面,那么有4种选法,这就代表了四个面。四个面中,每个面的三个顶点有6种排列方式,因此共有4x6=24种排列方式。
然而四面体的四个顶点顺序不是随便指定的,而是约定:
法线约定:所有面的法线方向朝外(或朝内)
(我们这里只取朝外)
这里法向的判断就是右手定则
即
(wxl)
这里我们先要进行分类讨论:
当3处于012面法向那一侧的时候(即3在底面的正面侧):
0和1和2这三个顶点,必须得是021的顺序,这样才符合外法线的约定。
而0和1和3这三个顶点,必须的是013的顺序
以此类推
0和2和3这三个顶点,必须的是032的顺序
1和2和3这三个顶点,必须的是123的顺序
即图中的a组
同理:
当3处于底面的背面侧的时候
即图中的b组
无论是a还是b,只要任意给出3个顶点,它们的顺序一定是确定了的。
因此实际上顶点的编号顺序只有2种组合(即a和b)。
提取四面体所有面
上面讲过
随意给定三个点,一定在a或b两种情况之一。
那么,对于每个四面体,我们就拥有了两组面(a或者b)。
然后再去掉a或者b其中的一种。这就需要去比较外法线和3号点是不是再同一侧了。
用01和12边叉乘,再与03点乘,假如结果为正数,就是情况a,结果为负数,就是情况b。
如何找到并剔除内部面(或提取网格的表面)
只要看有没有被共享的面即可
4个点中随意取出3点(3个点本身的顺序无关紧要,但是要保证唯一性,即012和021、120等是完全一样的,只是标识这个面)
然后看其他四面体内是否出现了这三个点即可。
具体操作:
为了保证3点的唯一性,可以使用哈希表或者C++中的unordered_set,或者人为规定一个顺序(比如升序)
然后遍历所有的四面体,取出所有的面。
最后剔除所有重复出现的面。
还可以这么干:
在遍历的同时就剔除掉重复的面,可以使用unordered_set保证唯一性(因为这个数据结构只要重复值就会自动剔除掉,是自动保证唯一性的)。
参考资料
https://stackoverflow.com/questions/66607716/how-to-extract-surface-triangles-from-a-tetrahedral-mesh
从四面体数据中提取表面相关推荐
- arcgis dem栅格立体感_如何使用ArcGIS从DEM数据中提取水系
1. 概述 在比较偏远的地方,往往会缺少水文信息,我们可以通过ArcGIS对高程DEM数据进行水文分析,为地表水流建立模型,进而获取到该地的水文信息,DEM数据精度越高,获取到的水文数据精度也就越高, ...
- arcmap提取dem高程_如何使用ArcGIS从DEM数据中提取水系
1. 概述 在比较偏远的地方,往往会缺少水文信息,我们可以通过ArcGIS对高程DEM数据进行水文分析,为地表水流建立模型,进而获取到该地的水文信息,DEM数据精度越高,获取到的水文数据精度也就越高, ...
- gis怎么提取水系_如何使用ArcGIS从DEM数据中提取水系
1. 概述 在比较偏远的地方,往往会缺少水文信息,我们可以通过ArcGIS对高程DEM数据进行水文分析,为地表水流建立模型,进而获取到该地的水文信息,DEM数据精度越高,获取到的水文数据精度也就越高, ...
- wireshark提取流量包中的文件_从Wireshark监听的数据中提取需要的数据
最近,需要将wireshark监听的数据进行提取,分两步:首先,应该得出wireshark的数据包吧,在图形化界面中可以非常直观的将监听数据进行存储,但是这样需要手动操作非常麻烦,而且容易出错(随着处 ...
- html怎么拿json数据,如何使用Python从HTML数据中提取JSON数据?
我正在尝试制作一个python脚本,可以在outlook中读取JSON数据电子邮件.但是问题是如何从HTML数据中提取JSON数据.这是我要提取的原始JSON数据.在{ "vpn_detai ...
- 数据库sql创建标量值函数_使用JSON_VALUE()从JSON数据中提取标量值
数据库sql创建标量值函数 In this article, we will explore JSON_VALUE() function in SQL Server to extract scalar ...
- halcon边缘提取颜色相近_初学者福利!三种用Python从图像数据中提取特征的技术...
全文共4073字,预计学习时长8分钟 你之前是否使用过图像数据?也许你想建立自己的物体检测模型,或者仅仅是想统计走进某栋建筑物的人数,使用计算机视觉技术处理图像拥有无穷无尽的可能性. 但数据科学家最近 ...
- xlsx表格怎么筛选重复数据_excel表格如何筛选重复数据 在Excel表格的两列数据中提取不重复值的四种方法...
excel表格如何筛选重复数据 在Excel表格的两列数据中提取不重复值的四种方法,最近到了季度汇报的时候,掌握一手excel技能在此刻显得多么重要,为了是你的excel看起来更高大上,今天教大家设置 ...
- Excel如何从混合数据中提取出手机号码
今天跟大家分享一下Excel如何从混合数据中提取出手机号码 1.打开要处理的Excel文件 2.选中数据文本单元格区域 3.点击下图选项(Excel工具箱,百度即可了解详细下载安装信息,本文这里就不做 ...
- python json接口数据提取_返回数据中提取数据的方法(JSON数据取其中某一个值的方法)...
返回数据中提取数据的方法 比如下面的案例是,取店铺名称 接口返回数据如下: {"Code":0,"Msg":"ok","Data& ...
最新文章
- “中药资源创新院士团队”诚聘结构、合成和计算生物学博士后5-10名
- python 项目生成 requirements.txt 文件
- 用SQL语句添加删除修改字段及一些表与字段的基本操作 .
- 基于GIS的视频管理指挥平台
- ajax jquery php_基于Ajax jquery的使用php登录
- 3.1 读入一个参数
- VC++获取文本框1内容在文本框2显示
- JDK1.8版本,java并发框架支持锁包括
- 呕心之作:支付宝的手机网站支付接口的应用
- Shelld5的使用
- 浅谈URL生成方式的演变
- windows及iis网站配置https证书
- C语言爱心代码,C语言爱心代码合集(附源码)
- 宏基aspire拆机触摸_Acer宏基E1471G笔记本怎么拆机拆主板?
- U盘写保护,量产工具修复。
- Squid安装及运行控制_wuli大世界_新浪博客
- Win10+阿里云ECS+Hexo搭建个人博客笔记
- 证明调和级数发散的方法
- .ts 音频文件转换成 .mp3 文件
- 一天发十万封邮件方法_网上投递简历,如何避免求职邮件成为垃圾?
热门文章
- 在桌面计算机找不到驱动,电脑杀毒后桌面不见了的原因是什么_怎么解决 - 驱动管家...
- 小白入门之HTML--第五章 块状元素,行内元素,盒子模型
- Hi,欢迎大家来到阿毛小猪的博客,分享自己学习中的经验,默默的前行,聆听心的声音...
- Java金额大写转换
- 微信小程序----Grid(九宫格)(flex实现九宫格布局)
- oliver什么意思java_英语名字“oliver”是什么意思?
- HTML实现简单的贪吃蛇小游戏(附完整源码)
- 淘宝秒杀半价前N名半价商品
- “商务网”,聚合头头网商务开放室,集群式商务推广平台
- 如何在InfoPath2007中接受URL参数