
CGAL 编程实践指南
文章平均质量分 81
《CGAL 编程实践指南》系统而深入地介绍了 CGAL(Computational Geometry Algorithms Library)的使用方法与核心算法,面向有 C++ 基础的开发者,特别适用于从事几何建模、网格处理、计算机辅助设计(CAD)、3D 打印、科学计算以及地理信息系统(GIS)等
《雨声》
拥有十年以上从事三维模型处理与图像处理算法研发的经验,精通使用VTK、ITK、CGAL、OpenCascade(OCC)、OpenSceneGraph(OSG)、PCL以及OpenCV等主流图形图像处理库。
在口腔医疗领域,主导并参与开发了多款专业软件,包括口腔齿科CAD设计软件、义齿CAM加工软件、正畸设计软件及种植手术规划软件。
在工业领域,积累了丰富的软件开发经验,涉及工业检测、工业测量、工业CAD/CAE、焊接仿真、离线编程及虚拟仿真系统,能够基于不同场景灵活应用三维建模与视觉算法。
此外,在视觉计算方向,参与了物体跟踪、手势识别及物体识别等项目
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
第 23 章: CGAL 点集的骨架提取
CGAL 的骨架提取算法是基于平均曲率流收缩(Mean Curvature Flow Skeletonization)的思想实现的,适用于封闭三角网格。核心步骤如下:将网格收缩到其骨架结构(迭代移动点到平均位置)提取节点(骨架点)和连接结构(骨架边)输出为一棵或多棵树状结构。原创 2025-04-19 11:41:44 · 111 阅读 · 0 评论 -
第 22 章:CGAL 与 VTK (vtkPolyData) 互转
CGAL 的几何算法可以与 VTK 的强大可视化功能结合,在进行网格处理和分析后,可以将结果输出到 VTK 中进行高效渲染和交互。:CGAL 和 VTK 提供了不同的网格数据结构,通过点云和面数据的提取与转换,可以实现两者之间的数据互转。:CGAL 提供强大的几何算法,VTK 提供高效的可视化功能,二者结合可以实现复杂的几何处理和可视化任务。),同样涉及将 VTK 中的顶点和面信息提取出来,并构建 CGAL 的网格数据结构。:CGAL 的通用网格数据结构,适用于表示多面体、三角网格等。原创 2025-04-19 10:38:32 · 76 阅读 · 0 评论 -
第 21 章:CGAL 与 PCL(点云库)协同处理
CGAL 和 PCL 都是开源的、广泛应用于计算机图形学、机器人、计算几何等领域的工具库。两者都提供了针对几何体、点云和网格的高效处理算法。通过协同使用这两个库,可以在点云数据的处理和几何分析中得到更高效和精确的结果。原创 2025-04-19 10:38:06 · 77 阅读 · 0 评论 -
第 20 章:CGAL 与 OpenMesh 数据互转
CGAL 和 OpenMesh 都提供了强大的网格处理功能,但它们的数据结构不同。CGAL 提供了基于或等数据类型的网格表示,而 OpenMesh 提供了其独特的网格数据结构TriMesh。在许多应用中,需要将二者之间的数据进行互转,从而利用两者的优势。原创 2025-04-19 10:37:48 · 88 阅读 · 0 评论 -
第 19 章:CGAL 中计算几何算法集锦
CGAL 提供了丰富的计算几何算法,涵盖了从基本的几何运算到复杂的图形处理。无论是处理点、线段、三角形、凸包,还是进行空间划分、最近邻查询、最短路径计算等,都可以在 CGAL 中找到高效的实现。原创 2025-04-19 10:37:33 · 65 阅读 · 0 评论 -
第 18 章:CGAL 中空间划分与 AABB 树
AABB 树(Axis-Aligned Bounding Box Tree)是 CGAL 提供的高效空间加速结构,用于:点、射线、线段与三角网格的交查询碰撞检测最近点查询包围盒层次结构其底层构建在或上,支持静态构建、高速查询,并适合三维场景分析与几何算法加速。// AABB 构建相关类型你可以使用。原创 2025-04-19 10:37:16 · 86 阅读 · 0 评论 -
第 17 章:CGAL 中曲面参数化与 UV 映射
**曲面参数化(Surface Parameterization)**是将三维曲面展开到二维平面上的过程,产生 UV 坐标,可用于纹理映射、重建、压缩等任务。CGAL 提供多种参数化算法,并支持对 、 等网格结构进行 UV 展开。CGAL 参数化主要支持:注意: 需满足 拓扑要求(例如有明确边界)。以下为基于 的完整示例。17.4.2 类型定义17.4.3 参数化主函数17.5 提取与保存 UV 映射将 UV 写入 或 可用于纹理渲染:搭配 文件头中的 和原创 2025-04-19 10:36:53 · 107 阅读 · 0 评论 -
第 16 章:CGAL 中点云处理与曲面重建
步骤说明平滑(Smoothing)降低测量噪声,提高拟合质量法线估计(Normal Estimation)用于指导重建方向重采样(Resampling)提高均匀性,减少冗余点曲面重建(Surface Reconstruction)构造三角网格模型。原创 2025-04-18 09:49:20 · 77 阅读 · 0 评论 -
第 15 章:CGAL 中网格平滑与曲率估计
(拉普拉斯平滑)(切向保形)(隐式平滑,保边界)原创 2025-04-18 09:45:11 · 82 阅读 · 0 评论 -
第 14 章:CGAL 中网格修复与清理
问题类型描述孔洞(holes)网格缺面,形成边界环非流形结构顶点或边与多个面相交异常自交(self-intersection)网格与自身相交重复几何重复顶点、边或面不一致的面法线面朝向不一致无效面(三角形退化)面积为0或共线顶点组成的面CGAL 提供多种自动化修复工具:填洞、去孤立点、法线重定向、重复点合并。通常推荐使用模块做预处理。复杂网格问题(如自交)需结合多工具链处理。原创 2025-04-18 09:42:17 · 122 阅读 · 0 评论 -
第 13 章:CGAL 中网格简化与压缩
三维网格模型通常具有大量的顶点和面,在渲染、传输、存储等方面造成负担。**网格简化(Mesh Simplification)压缩(Compression)**是几何处理中的重要手段。本章将深入讲解 CGAL 提供的网格简化工具,主要基于模块,包括:网格简化基本概念使用 CGAL 进行边折叠简化简化策略(Cost 和 Placement 策略)保留边界/几何特征/属性示例与高级用法。原创 2025-04-18 09:37:43 · 107 阅读 · 0 评论 -
第 12 章:CGAL 中网格读写与格式支持
CGAL 提供丰富的标准网格格式读写接口。是读写多种格式的首选数据结构。OFF 是最稳定、推荐的通用格式。属性支持依赖于的 property_map 和格式本身(如 PLY 支持点法线、颜色)。原创 2025-04-18 09:34:10 · 48 阅读 · 0 评论 -
第 11 章:CGAL中Polyhedron_3 与 Surface_mesh 数据结构
是 CGAL 中基于半边(Halfedge)实现的多面体数据结构,它可以表达拓扑关系清晰、结构完整的封闭或带边界的三角网格或多边形网格。结构严谨,适合需要精确拓扑的建模任务;更现代和高效,推荐用于大多数通用网格处理任务;在设计新项目时建议优先考虑,除非必须使用的高级拓扑功能。原创 2025-04-18 09:29:41 · 86 阅读 · 0 评论 -
第 10 章:CGAL 中的布尔运算与多边形集合
运算说明符号并集两区域合并A ∪ B交集两区域重叠部分A ∩ B差集A 去除 B 的部分A - B对称差(XOR)A 与 B 的非重叠部分A △ B。原创 2025-04-18 09:22:00 · 134 阅读 · 0 评论 -
第 9 章:CGAL 中的三角剖分
将点集或区域分割为互不重叠的三角形(2D)或四面体(3D)。可生成 2D 网格图像,结合 Qt/QPainter 绘制。三维四面体剖分(Tetrahedralization):最大化最小角,避免“瘦长三角形”,常用于计算几何。从 2D 到 3D 的 Delaunay 剖分。二维三角剖分(普通、Delaunay、受限):保留输入中的边界(例如多边形边或孔洞)。为网格生成、点集重建等后续任务提供结构基础。实际应用:地形建模、几何重建、物理仿真等。用于将多边形(可能带孔)进行剖分。给定一个带孔多边形,使用。原创 2025-04-18 09:21:49 · 203 阅读 · 0 评论 -
第 8 章:CGAL 2D Polyline Simplification(2D 折线简化)
折线简化是一个减少折线顶点数量的过程,同时尽量保持整体形状不变。保持拓扑结构的折线简化意味着不会引入新的交叉点,也不会改变多边形的嵌套层级:岛屿不会与简化后的海岸线相交,且岛屿仍然保持在水域内。本包实现的方法基于文献[1],它可以简化任意集合的折线,无论是开口还是闭合的,且这些折线可能相互或自身相交。该方法通过迭代地将两条边 (p,q)(p,q)(p,q) 和 (q,r)(q,r)(q,r) 替换为单条边 (p,r)(p,r)(p,r),即从某条折线上移除顶点 qqq 来简化折线集合。原创 2025-04-18 09:21:36 · 217 阅读 · 0 评论 -
第 7 章:CGAL 2D Minkowski Sums(2D 闵可夫斯基求和)
给定两个集合 A,B⊂RdA, B \subset \mathbb{R}^dA,B⊂Rd,它们的 Minkowski 和(Minkowski sum),记作 A⊕BA \oplus BA⊕B,定义为它们的逐点和,即集合Minkowski 和在许多应用中都有使用,例如运动规划以及计算机辅助设计和制造等。本包包含计算两个多边形平面 Minkowski 和的函数。(这里的 AAA 和 BBB 是位于 R2\mathbb{R}^2R2 中的两个封闭多边形,可能带有孔;原创 2025-04-18 09:21:24 · 462 阅读 · 0 评论 -
第 6 章:CGAL 2D Straight Skeleton and Polygon Offsetting(2D 直骨架和多边形偏移)
我们现在详细定义什么是直线骨架,从输入多边形开始。原创 2025-04-18 09:21:11 · 392 阅读 · 0 评论 -
第 5 章:CGAL 2D Polygon Partitioning(2D多边形分区)
多边形 PPP 的划分是由一组多边形组成的集合,这些多边形的内部不相交,且它们的并集等于原始多边形 PPP 的内部。本章介绍将平面多边形划分为两类子多边形的函数——y 单调多边形和凸多边形。这些划分过程不会引入新的(Steiner)顶点。所有划分函数对用户提供相同的接口。用户需要提供一对输入迭代器 first,beyondfirst, beyondfirst,beyond,一个输出迭代器 resultresultresult,以及一个 traits 类。原创 2025-04-18 09:20:59 · 206 阅读 · 0 评论 -
第 4 章:CGAL Nef_2 包 — 2D Nef多边形的布尔操作
它有三个面,分别是无限大边界框外部的面 和位于无限大边界框内部的另外两个面。它有三个面,分别是无限大边界框外部的面 和位于无限大边界框内部的另外两个面。这个平面被无限大边界框(infimaximal frame)“限制”,该边界框的顶点位于无穷远处,而该 Nef 多面体包含两个面。这里的平面图是指带有面对象的直线嵌入双向图,使得平面上的每一点都能唯一地对应于由该图定义的平面细分中的一个对象(顶点、边、面)。面 有三个洞,分别是由顶点 组成的洞,由顶点 组成的洞,以及由顶点 组成的洞。原创 2025-04-18 09:20:46 · 249 阅读 · 0 评论 -
第 3 章:CGAL Polygon Repair (多边形修复)
这个包实现了多边形修复算法,能将可能无效的输入(多边形、带洞多边形或带洞多多边形)转成有效的多边形结构。输入边被构造成一个平面图(arrangement),然后对每个面进行标记(外部、多边形内部或洞),最后重建有效的带洞多多边形输出。目前只支持“偶-奇”规则(even-odd rule)对面进行标记,未来计划支持绕数规则(winding number rule)。有效多边形:由不自交的简单闭合边界构成(外边界)。有效带洞多边形:有一个外边界和零个或多个内边界(洞),每条边界都是简单闭合的。原创 2025-04-18 09:20:36 · 230 阅读 · 0 评论 -
第 2 章:CGAL 三维凸包(3D Convex Hulls)
Kernel是 CGAL 的核心模块之一,提供了几何对象(如点、向量、线段、圆等)的表示以及相关几何运算。通过泛型编程,CGAL 允许用户灵活选择不同的几何内核(如或),为不同的应用提供支持。在 CGAL 中,Kernel是所有几何计算的基础,它提供了精确且高效的几何对象和运算支持。掌握了这些核心类型后,你将能更好地使用 CGAL 完成点集、网格、几何优化等任务。下一步,你可以通过简单的代码实验来加深对这些几何类型的理解,例如计算点集的凸包、直线与多边形的交点等。原创 2025-04-18 09:20:16 · 443 阅读 · 0 评论 -
第 1 章:CGAL 二维凸包与极值点(2D Convex Hulls and Extreme Points)
是一个功能强大的开源计算几何库,提供了丰富且可靠的几何算法实现,适用于计算机图形、CAD/CAM、仿真、机器人路径规划、3D 建模、地理信息系统(GIS)等领域。支持布尔运算、网格生成、点集处理、曲面重建、凸包、排列、Delaunay 三角剖分等。自动建模几何布尔操作(Boolean operations on solids)三维表面重建与网格处理(Surface reconstruction)Bilibili 视频教程(搜索“CGAL 编程”)安装 GMP 与 MPFR(可选)多边形与点集的处理分析。原创 2025-04-17 19:16:05 · 106 阅读 · 0 评论