使用 CGAL,是否可以在开放多边形网格上执行布尔运算



我得到了多边形网格,即AB

A是封闭网格,B是任意曲面。我想做的是切断位于A之外的B部分。例如,如果A是多边形球体,B是矩形平原,则结果应为多边形圆形平原。

我想使用 CGAL 执行上述操作(或者如果 CGAL 无法执行此操作,则可能是其他库)。对此有什么想法吗?

我想你想要"Nef Polyhedra上的3D布尔运算"库:

http://doc.cgal.org/latest/Nef_3/index.html

常规布尔运算在这里是无用的,例如CGAL::P olygon_mesh_processing::corefine_and_compute_intersection(mesh1, mesh2, meshout)要求 mesh1 和 mesh2 都是绑定某些体积的封闭网格。

对于开放式网格使用:

CGAL::P olygon_mesh_processing::clip()

假设 mesh1

是开放的网格(例如正方形),并且 mesh2 边界一定的体积(例如体),那么您可以通过调用以下命令获得 mesh1 和 mesh2 的交集

CGAL::Polygon_mesh_processing::clip(mesh1, mesh2);

结果(一个)将被保存到mesh1中。

如果您需要差分运算(带圆孔的正方形),则相同的clip()可能会有所帮助。在这种情况下,您需要首先通过将 mesh2 中每个三角形的方向从逆时针方向交换为顺时针来反转 mesh2。要反转网格方向,请使用:

CGAL::Polygon_mesh_processing::reverse_face_orientations(mesh2);

相关内容

  • 没有找到相关文章

最新更新