2021SC@SDUSC
目录
多边形网格处理 [ Polygon_mesh_processing ]
MeshCombiner::Mesh::Mesh()函数分析
分析概述
模块功能
该模块的主要功能为通过各个面和点的信息生成曲面网格,再将不同平面的网格粘合在一起,最终形成可视化曲面网格体
CGAL分析
cgal库概述
CGAL是一个具有强制性依赖项的计算几何算法库。提供计算几何相关的数据结构和算法,例如曲线整理及其应用,网格生成(二维Delaunay网格生成和三维表面和体积网格生成等),几何处理、搜索结构,插值,形状分析,拟合,距离等。
曲面网格生成 [ make_surface_mesh ]
函数make_surface_mesh()是一个曲面网格生成器,它是构建近似于曲面的二维网格的函数。
多边形网格处理 [ Polygon_mesh_processing ]
Polygon_mesh_processing主要实现多边形的网格处理。包括简单对象的基本操作及复杂的几何处理算法。其包含的基本功能有:
- 网格划分:网格划分算法,包括非三角网格的三角化、光顺的细化、优化、三角网格的各向同性重网格化和平滑算法
- 协同细化和布尔运算:协同细化三角形网格和用协同细化的闭合三角形网格计算布尔运算的方法
- 孔填充:可用的孔填充算法,可以结合细化和光顺
- 谓词:可在已处理的多边形上计算的谓词。网格,其中包括点定位和自交测试
- 方向:检查或修复polygon soup的方向
- 组合修复:多边形网格和polygon soups的修复
- 法向计算:多边形网格的顶点和面的法向计算
- 切片器:能够计算多边形网格与任意平面的交点的函子(切片器)
- 连通组件:处理多边形网格的连通组件的方法(提取、标记、移除等)
(参考网址:https://blog.youkuaiyun.com/summer_dew/article/details/116134618)
关键代码分析
meshcombiner.h分析
meshcombiner类定义了在网格粘合中使用到的函数和变量,包括网格类,粘合方式以及粘合网格来源等
class MeshCombiner
{
public:
enum class Method
{
Union, Diff
};
enum class Source
{
None,First,Second
};
class Mesh
{
public:
//构造函数
Mesh() = default;
Mesh(const std::vector<QVector3D> &vertices, const std::vector<std::vector<size_t>> &faces, bool disableSelfIntersects=false);
Mesh(const Mesh &other);
//析构

该博客详细介绍了CGAL库在曲面网格生成和多边形网格处理中的应用。通过对make_surface_mesh函数和Polygon_mesh_processing模块的解析,展示了如何构建和处理三维网格。此外,还分析了MeshCombiner类,用于合并多个网格,形成完整的曲面模型。关键代码分析部分解释了MeshCombiner::Mesh构造函数和combine函数的工作原理,涉及网格的有效性检查、自相交检测和组合操作。

最低0.47元/天 解锁文章
748

被折叠的 条评论
为什么被折叠?



