文章目录
- 一、简介
- 二、实现代码
- 三、实现效果
- 参考资料
一、简介
CGAL中并不存在真正的平面与Mesh的裁切功能,CGAL的是将平面转换为一个TriangleMesh(三角网格),之后将其与我们输入的Mesh数据求交集来获取最终的裁切数据。大致的过程如下所述:
- 首先,CGAL会求出Mesh数据的包围盒,之后会判断我们指定的平面是否与这个包围盒存在交集,存在则求出这个相交的多边形,反之则直接退出裁剪过程。
- 基于相交的多边形,构建一个平面Mesh。
- 将平面Mesh与我们输入的Mesh进行求交处理。CGAL的求交的大概过程可以描述为:遍历面片定位存在交集的面片,之后基于面片的拓扑信息,求取所有与平面的交线,并重新整形Mesh(remesh),最后输出结果算法停止。
由于CGAL网上的资料很少,这个过程是我大概看了一下源码,简单的总结了一些计算过程,如果有所出入还请以CGAL的源代码为准。具体使用方式,如下所示:
二、实现代码
//CGAL