C++ 如何确定顶点是否位于CGAL中网格的边界上
我试图为每个顶点计算3D网格上的高斯曲率,因此我想知道顶点是否在边界上,我查看了CGAL在线手册,发现没有方法检查顶点是否在边界上,因此我编写了一个函数,通过围绕顶点的半边循环检查,代码是:C++ 如何确定顶点是否位于CGAL中网格的边界上,c++,cgal,C++,Cgal,我试图为每个顶点计算3D网格上的高斯曲率,因此我想知道顶点是否在边界上,我查看了CGAL在线手册,发现没有方法检查顶点是否在边界上,因此我编写了一个函数,通过围绕顶点的半边循环检查,代码是: bool is_border(Vertex_iterator& vi){ HV_circulator hv = vi-> vertex_begin(); //move around the vertex and check if there is a halfedge which
bool is_border(Vertex_iterator& vi){
HV_circulator hv = vi-> vertex_begin();
//move around the vertex and check if there is a halfedge which
//is on border
for(; hv != vi -> vertex_begin(); vi++){
if(hv -> is_border())
return true;
}
return false;
}
所以我的问题是,有没有其他方法来检查顶点是否在边界上?没有。您实现的解决方案是我推荐的解决方案,但是使用
Vertex\u handle
而不是Vertex\u迭代器
,因为后者隐式转换为前者
该函数非常昂贵。如果您需要在同一个顶点上多次调用它,无论出于何种原因,您都应该投资一种方法来缓存结果