我在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_descriptor
和edge_descriptor
。它们是图形元素的标识符。在CGAL中,我们将其扩展到具有面和半边的图形。 FaceGraph
概念说明了face_descriptor
可以做什么。在此页面上,您可以通过Refines:进入 HalfedgeGraph
概念,它告诉您可以使用其他描述符执行的操作。
这些链接可以访问即将发布的CGAL版本的在线手册,我们在其中改进了有关描述符的文档-因此您并不孤单。
关于c++ - CGAL:遍历所有面的所有顶点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48104677/