简介
网格补洞操作,里面有有奖征集答案,欢迎大家踊跃回答。第一个留言为有效留言那个horse.off请到
github下载
算法描述
找到网格的所有的边界半边。
for循环选定一个孔洞的关键点
以来点来遍历整个孔洞
补洞
代码
// 网格 补洞的操作
#include <iostream>
#include <OpenMesh/Core/IO/MeshIO.hh>
#include <OpenMesh/Core/Mesh/TriMesh_ArrayKernelT.hh>
#include <cmath>
#include <vector>
#include <map>
#define pi 3.1415926
using namespace std;
typedef OpenMesh::TriMesh_ArrayKernelT<> MyMesh;
int main() {
MyMesh mesh;
map<MyMesh::HalfedgeHandle, int>holeHalfedgeHandle;// 半边 对应的 int
vector<MyMesh::HalfedgeHandle> halfedgeHandle;//选定的孔洞集合
MyMesh::VertexHandle vertexHandle;
if (!OpenMesh::IO::read_mesh(mesh, "horse.off")) {
std::cerr << "Cannot read mesh to file ' horse.off ' " << std::endl;
return 1;
}
for (auto he_it = mesh.halfedges_begin(); he_it != mesh.halfedges_end(); ++he_it) {
if (mesh.is_boundary(*he_it)) {
holeHalfedgeHandle.insert(make_pair(*he_it, 0));// 在有边界半边加入到集合中
}
}
for (map<MyMesh::HalfedgeHandle, int>::iterator mh_it = holeHalfedgeHandle.begin(