我是CGAL的新手,我正在尝试在3d中切割一个具有任意曲面网格的立方体(没有自相交,没有闭合/没有体积)。目标是获得一个由切割立方体的一个"边"组成的体积,该边由立方体内部的曲面部分封闭。
曲面本身由无序的三角形组成,这些三角形应该具有相同的缠绕顺序(一致的法线方向),但没有邻域信息,并且可以多次包含不同三角形的相同点。
我试着使用剪辑功能,比如:
CGAL::Polygon_mesh_processing::clip(cube,surface,true);
这当然不起作用,因为曲面不是闭合的(据我所知)。但它显示了操作应该如何工作的想法。
布尔运算(https://doc.cgal.org/latest/Polygon_mesh_processing/index.html#title14))也不能用于此,因为它们是根据体积计算的,并且曲面没有体积。
我还考虑过延伸曲面的外侧,使其闭合。然而,这似乎不是一个好办法。
遗憾的是,我对类似问题的研究并不成功。
我确信在CGAL中有一个很好的方法可以做到这一点。也许在CGAL更有经验的人知道如何做到这一点。
获得此卷的最佳方法是什么?
问候
编辑:
通过删除曲面网格中的多余点,我可以让剪辑开始工作。尽管如此,我并不总是得到体积的右侧,即使缠绕顺序应该产生指向外部的法线。是否有必要在切割前计算法线并将其作为曲面的额外参数(请参见此处)传递,以便始终获得体积的相同"内侧"?
此外,剪辑功能似乎相当慢。我必须对大量的立方体和不同的表面进行切割。我只使用CGAL作为头库,没有GMP和MPFR,因为它破坏了我的其他应用程序。使用这些库的加速有多大?有没有其他技巧可以用来加速计算,例如使用并行化?
我看到CGAL使用英特尔的TBB。但是在剪切算法CGAL_LINKED_WITH_TBB所包括的头文件中没有进行测试。
感谢
裁剪网格时出现问题。剪辑无法正确完成。我增加了它的大小,现在它总是与体积相交。