我在CGAL中有一个SurfaceMesh:

https://doc.cgal.org/latest/Surface_mesh/index.html

如示例所示,我了解如何遍历每张脸:

typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel;
typedef Kernel::Point_3                    Point;
typedef CGAL::Surface_mesh<Point>          Surface_mesh;
BOOST_FOREACH(boost::graph_traits<Surface_mesh>::face_descriptor fit, faces(mesh)){
  //do something here
}

在这里,网格是一个Surface_mesh。对我来说根本不清楚的是什么是face_descriptor,以及如何使用它。当一个人拥有一个face_descriptor时,如何去访问它的半边和顶点呢?特别是,如何遍历半边的所有顶点并获得其坐标?

最佳答案

Boost Graph Library有一个概念 Graph ,它定义了vertex_descriptoredge_descriptor。它们是图形元素的标识符。在CGAL中,我们将其扩展到具有面和半边的图形。 FaceGraph 概念说明了face_descriptor可以做什么。在此页面上,您可以通过Refines:进入 HalfedgeGraph 概念,它告诉您可以使用其他描述符执行的操作。

这些链接可以访问即将发布的CGAL版本的在线手册,我们在其中改进了有关描述符的文档-因此您并不孤单。

关于c++ - CGAL:遍历所有面的所有顶点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48104677/

10-14 05:41