繁体   English   中英

CGAL:识别“非边界”边缘

[英]CGAL: identify "non-border" edges

我正在发现 CGAL,我尝试了 3D 凸包。 我用立方体的顶点进行了尝试,我观察到凸包是三角剖分(我使用的是Surface_mesh ,而不是Polyhedron_3 )。 因此 CGAL 在边列表中包含立方体面的对角线。 我想识别这些边缘(例如,因为我不想 plot 这些边缘)。

我预计 function 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的意义上,什么是边界?

  • 没有更方便的方法来识别“非边界”边缘(即立方体情况下的对角线)?

边界边是仅与一个面相关的边,这意味着您有一个非封闭的 output。 显然,对于 3D 凸包,这不会发生,除非您处于退化情况并且点集不是 3D。 即使我们应该直接从算法中获取此信息,您也可以使用几何谓词(CGAL::coplanar()与边缘的点和入射面的相对顶点)。 我将打开一个问题以直接获取此信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM