C++ 如何确定顶点是否位于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

我试图为每个顶点计算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
  //is on border
  for(; hv != vi -> vertex_begin(); vi++){
    if(hv -> is_border())
      return true;
  }
  return false;
}

所以我的问题是,有没有其他方法来检查顶点是否在边界上?

没有。您实现的解决方案是我推荐的解决方案,但是使用
Vertex\u handle
而不是
Vertex\u迭代器
,因为后者隐式转换为前者

该函数
非常昂贵。如果您需要在同一个顶点上多次调用它,无论出于何种原因,您都应该投资一种方法来缓存结果