我有一个函数可以找到两个顶点v1
和的共同邻居v2
,即那些连接到 v1
和的顶点v2
:
std::vector<MyMesh::VertexHandle> find_common_neighbors(MyMesh & mesh, MyMesh::VertexHandle & v1, MyMesh::VertexHandle & v2){
std::vector<MyMesh::VertexHandle> common_neighbors;
//iterate over neighbors of v1
for(MyMesh::VertexVertexIter it1 = mesh.vv_iter(v1); it1.is_valid(); ++it1) {
//neighbors of v2
for(MyMesh::VertexVertexIter it2 = mesh.vv_iter(v2); it2.is_valid(); ++it2) {
if ((*it1)==(*it2)){
common_neighbors.push_back(*it1);
}
}
}
return common_neighbors;
该函数简单地遍历 和 的邻域v1
并v2
检查是否找到出现在两个邻域中的任何顶点。不幸的是,这个函数似乎是我代码的瓶颈,因此我的问题是在 OpenMesh 中是否有更优化的方法来完成这个?