【发布时间】:2022-01-01 01:37:00
【问题描述】:
我正在发现 CGAL,我尝试了 3D 凸包。我用立方体的顶点进行了尝试,我观察到凸包是三角剖分(我使用的是Surface_mesh,而不是Polyhedron_3)。因此 CGAL 在边列表中包含立方体面的对角线。我想识别这样的边缘(例如,因为我不想绘制这些边缘)。
我预计函数 is_border 会识别其他边,但它会为所有边返回 false。那么什么是边框呢?
我找到了解决方案。我遍历边缘,并为每一对对应的半边缘获取附加面:
Mesh::Halfedge_index h0 = mesh.halfedge(ed, 0);
Mesh::Face_index face0 = mesh.face(h0);
Mesh::Halfedge_index h1 = mesh.halfedge(ed, 1);
Mesh::Face_index face1 = mesh.face(h1);
然后我计算这两个面的法线,如果这两个法线相等,我声称边是对角线。这是正确的吗?这似乎行得通。
但我的问题是:
-
在
is_border的意义上,什么是边框? -
难道没有更方便的方法来识别“非边界”边缘(即立方体中的对角线)吗?
【问题讨论】:
标签: c++ cgal convex-hull