四面体网格数据存储方式

四面体网格数据是这样存储的:

分为两部分:

第一部分:
所有顶点的三维坐标数据。

第二部分
每个四面体的顶点编号。

四面体顶点编号顺序满足外法线约定

假如我们随便指定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

从四面体数据中提取表面相关推荐

  1. arcgis dem栅格立体感_如何使用ArcGIS从DEM数据中提取水系

    1. 概述 在比较偏远的地方,往往会缺少水文信息,我们可以通过ArcGIS对高程DEM数据进行水文分析,为地表水流建立模型,进而获取到该地的水文信息,DEM数据精度越高,获取到的水文数据精度也就越高, ...

  2. arcmap提取dem高程_如何使用ArcGIS从DEM数据中提取水系

    1. 概述 在比较偏远的地方,往往会缺少水文信息,我们可以通过ArcGIS对高程DEM数据进行水文分析,为地表水流建立模型,进而获取到该地的水文信息,DEM数据精度越高,获取到的水文数据精度也就越高, ...

  3. gis怎么提取水系_如何使用ArcGIS从DEM数据中提取水系

    1. 概述 在比较偏远的地方,往往会缺少水文信息,我们可以通过ArcGIS对高程DEM数据进行水文分析,为地表水流建立模型,进而获取到该地的水文信息,DEM数据精度越高,获取到的水文数据精度也就越高, ...

  4. wireshark提取流量包中的文件_从Wireshark监听的数据中提取需要的数据

    最近,需要将wireshark监听的数据进行提取,分两步:首先,应该得出wireshark的数据包吧,在图形化界面中可以非常直观的将监听数据进行存储,但是这样需要手动操作非常麻烦,而且容易出错(随着处 ...

  5. html怎么拿json数据,如何使用Python从HTML数据中提取JSON数据?

    我正在尝试制作一个python脚本,可以在outlook中读取JSON数据电子邮件.但是问题是如何从HTML数据中提取JSON数据.这是我要提取的原始JSON数据.在{ "vpn_detai ...

  6. 数据库sql创建标量值函数_使用JSON_VALUE()从JSON数据中提取标量值

    数据库sql创建标量值函数 In this article, we will explore JSON_VALUE() function in SQL Server to extract scalar ...

  7. halcon边缘提取颜色相近_初学者福利!三种用Python从图像数据中提取特征的技术...

    全文共4073字,预计学习时长8分钟 你之前是否使用过图像数据?也许你想建立自己的物体检测模型,或者仅仅是想统计走进某栋建筑物的人数,使用计算机视觉技术处理图像拥有无穷无尽的可能性. 但数据科学家最近 ...

  8. xlsx表格怎么筛选重复数据_excel表格如何筛选重复数据 在Excel表格的两列数据中提取不重复值的四种方法...

    excel表格如何筛选重复数据 在Excel表格的两列数据中提取不重复值的四种方法,最近到了季度汇报的时候,掌握一手excel技能在此刻显得多么重要,为了是你的excel看起来更高大上,今天教大家设置 ...

  9. Excel如何从混合数据中提取出手机号码

    今天跟大家分享一下Excel如何从混合数据中提取出手机号码 1.打开要处理的Excel文件 2.选中数据文本单元格区域 3.点击下图选项(Excel工具箱,百度即可了解详细下载安装信息,本文这里就不做 ...

  10. python json接口数据提取_返回数据中提取数据的方法(JSON数据取其中某一个值的方法)...

    返回数据中提取数据的方法 比如下面的案例是,取店铺名称 接口返回数据如下: {"Code":0,"Msg":"ok","Data& ...

最新文章

  1. “中药资源创新院士团队”诚聘结构、合成和计算生物学博士后5-10名
  2. python 项目生成 requirements.txt 文件
  3. 用SQL语句添加删除修改字段及一些表与字段的基本操作 .
  4. 基于GIS的视频管理指挥平台
  5. ajax jquery php_基于Ajax jquery的使用php登录
  6. 3.1 读入一个参数
  7. VC++获取文本框1内容在文本框2显示
  8. JDK1.8版本,java并发框架支持锁包括
  9. 呕心之作:支付宝的手机网站支付接口的应用
  10. Shelld5的使用
  11. 浅谈URL生成方式的演变
  12. windows及iis网站配置https证书
  13. C语言爱心代码,C语言爱心代码合集(附源码)
  14. 宏基aspire拆机触摸_Acer宏基E1471G笔记本怎么拆机拆主板?
  15. U盘写保护,量产工具修复。
  16. Squid安装及运行控制_wuli大世界_新浪博客
  17. Win10+阿里云ECS+Hexo搭建个人博客笔记
  18. 证明调和级数发散的方法
  19. .ts 音频文件转换成 .mp3 文件
  20. 一天发十万封邮件方法_网上投递简历,如何避免求职邮件成为垃圾?

热门文章

  1. 在桌面计算机找不到驱动,电脑杀毒后桌面不见了的原因是什么_怎么解决 - 驱动管家...
  2. 小白入门之HTML--第五章 块状元素,行内元素,盒子模型
  3. Hi,欢迎大家来到阿毛小猪的博客,分享自己学习中的经验,默默的前行,聆听心的声音...
  4. Java金额大写转换
  5. 微信小程序----Grid(九宫格)(flex实现九宫格布局)
  6. oliver什么意思java_英语名字“oliver”是什么意思?
  7. HTML实现简单的贪吃蛇小游戏(附完整源码)
  8. 淘宝秒杀半价前N名半价商品
  9. “商务网”,聚合头头网商务开放室,集群式商务推广平台
  10. 如何在InfoPath2007中接受URL参数