23 #include<vcg/complex/complex.h>
24 #include<wrap/io_trimesh/import_ply.h>
25 #include<wrap/io_trimesh/export_ply.h>
26 #include<vcg/complex/algorithms/update/color.h>
27 #include<vcg/complex/algorithms/update/quality.h>
28 #include<vcg/complex/algorithms/harmonic.h>
36 struct MyUsedTypes :
public UsedTypes< Use<MyVertex> ::AsVertexType,
37 Use<MyFace> ::AsFaceType>{};
39 class MyVertex :
public Vertex<MyUsedTypes, vertex::Coord3f, vertex::Normal3f, vertex::VFAdj, vertex::Qualityf, vertex::Color4b, vertex::BitFlags >{};
40 class MyFace :
public Face< MyUsedTypes, face::VertexRef, face::Normal3f, face::Mark, face::BitFlags, face::VFAdj, face::FFAdj > {};
41 class MyMesh :
public tri::TriMesh< vector<MyVertex>, vector<MyFace> > {};
46 int main(
int argc,
char **argv )
51 printf(
"Usage: trimesh_harmonic mesh.ply\n");
55 int ret= tri::io::ImporterPLY<MyMesh>::Open(m,argv[1]);
58 printf(
"Unable to open %s for '%s'\n",argv[1],tri::io::ImporterPLY<MyMesh>::ErrorMsg(ret));
68 printf(
"Computing harmonic field from vertex %i to vertex %i\n",ind0,ind1);
71 tri::Harmonic<MyMesh, double>::ConstraintVec constraints;
72 constraints.push_back(tri::Harmonic<MyMesh, double>::Constraint(&(m.vert[ind0]), 1.0f));
73 constraints.push_back(tri::Harmonic<MyMesh, double>::Constraint(&(m.vert[ind1]), 2.0f));
76 bool ok = tri::Harmonic<MyMesh, double>::ComputeScalarField(m, constraints, handle);
81 tri::io::ExporterPLY<MyMesh>::Save(m,
"harmonic.ply",tri::io::Mask::IOM_VERTCOLOR | tri::io::Mask::IOM_VERTQUALITY);