52 lines
1.0 KiB
C++
52 lines
1.0 KiB
C++
#include <vector>
|
|
|
|
#include<vcg/simplex/vertex/vertex.h>
|
|
|
|
#include<vcg/simplex/face/with/af.h>
|
|
|
|
#include<vcg/complex/trimesh/base.h>
|
|
|
|
// loader
|
|
#include<wrap/io_trimesh/import_ply.h>
|
|
|
|
// topology computation
|
|
#include<vcg/complex/trimesh/update/topology.h>
|
|
|
|
// half edge iterators
|
|
#include<vcg/simplex/face/pos.h>
|
|
|
|
|
|
|
|
using namespace vcg;
|
|
|
|
class MyFace;
|
|
class MyEdge;
|
|
class MyVertex:public Vertex<float,MyEdge,MyFace>{};
|
|
class MyFace :public FaceAF<MyVertex,MyEdge,MyFace>{};
|
|
class MyMesh: public tri::TriMesh< std::vector<MyVertex>, std::vector<MyFace > >{};
|
|
|
|
|
|
int main(int argc,char ** argv){
|
|
|
|
MyMesh m;
|
|
|
|
//load the mesh
|
|
vcg::tri::io::ImporterPLY<MyMesh>::Open(m,argv[1]);
|
|
|
|
//update the face-face topology
|
|
vcg::tri::UpdateTopology<MyMesh>::FaceFace(m);
|
|
|
|
// declare an iterator on the mesh
|
|
vcg::face::Pos<MyMesh::FaceType> he;
|
|
|
|
// set as the half edge: (first face of the mesh, edge 0,vertex 0)
|
|
he.Set(&*m.face.begin(),0,(*m.face.begin()).V(0));
|
|
|
|
// same vertex and edge..adjacent face
|
|
he.FlipF();
|
|
//again (it went back..it it manifold)
|
|
he.FlipF();
|
|
|
|
}
|
|
|