我正在尝试计算每个顶点的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;
}
所以我的问题是,有没有其他方法来检查顶点是否在边界上?
答案 0 :(得分:1)
不,没有。您实施的解决方案是我推荐的解决方案,但使用Vertex_handle
代替Vertex_iterator
,因为后者隐式转换为前者。
该职能is_border
相当昂贵。如果你需要在同一个顶点上多次调用它,无论出于何种原因,你应该投资一种方法来缓存结果。