如何确定顶点是否位于CGAL中网格的边框上

时间:2014-05-15 12:58:39

标签: 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
  //is on border
  for(; hv != vi -> vertex_begin(); vi++){
    if(hv -> is_border())
      return true;
  }
  return false;
}

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

1 个答案:

答案 0 :(得分:1)

不,没有。您实施的解决方案是我推荐的解决方案,但使用Vertex_handle代替Vertex_iterator,因为后者隐式转换为前者。

该职能is_border相当昂贵。如果你需要在同一个顶点上多次调用它,无论出于何种原因,你应该投资一种方法来缓存结果。