OpenMesh用到的主要数据定义
#pragma once
#ifndef MYMESH_H
#define MYMESH_H
#include <iostream>
#include <string>
#include <vector>
#include <queue>
#include <list>
#include <map>
#include "vertex.h"
#include "OpenMesh/Core/IO/MeshIO.hh"
#include "OpenMesh/Core/Mesh/PolyMesh_ArrayKernelT.hh"
#include "OpenMesh/Core/Utils/Property.hh"
using namespace std;
//属性项
struct MyTraits : public OpenMesh::DefaultTraits
{
typedef OpenMesh::Vec3d Point;
};
using OpenMesh::VertexHandle;
using OpenMesh::FaceHandle;
using OpenMesh::HalfedgeHandle;
using OpenMesh::EdgeHandle;
typedef OpenMesh::PolyMesh_ArrayKernelT<MyTraits> MyMesh; //网格
typedef MyMesh::Point Point; //点
typedef MyMesh::VertexIter VertexIter; //顶点迭代器
typedef MyMesh::FaceIter FaceIter; //面片迭代器
typedef MyMesh::EdgeIter EdgeIter; //边迭代器
typedef MyMesh::HalfedgeIter HalfedgeIter; //半边迭代器
typedef MyMesh::FaceFaceIter FaceFaceIter; //面-面-循环器
typedef MyMesh::FaceVertexIter FaceVertexIter; //面-顶点-循环器
typedef MyMesh::FaceHalfedgeIter FaceHalfedgeIter; //面-半边-循环器
typedef MyMesh::VertexVertexIter VertexVertexIter; //顶点-顶点-循环器
typedef MyMesh::VertexFaceIter VertexFaceIter; //顶点-面-循环器
//数据转换
void convert_openmesh_to_array(MyMesh& mesh, vector<array<double,3> >& nodes,\
vector<array<int,4> >& elems, int type);
void convert_openmesh_to_array(MyMesh& mesh, vector<double>& nodes, \
vector<int>& elems, int type);
void convert_array_to_openmesh(MyMesh& mesh, const vector<array<double,3> >& nodes, \
const vector<array<int,4> >& elems, int type);
#endif