2 #include <OpenMesh/Core/IO/MeshIO.hh> 3 #include <OpenMesh/Core/Mesh/DefaultTriMesh.hh> 4 #include <OpenMesh/Core/Utils/PropertyManager.hh> 11 int main(
int argc,
char** argv)
16 std::cerr <<
"Usage: " << argv[0] <<
" #iterations infile outfile" << std::endl;
19 const int iterations = argv[1];
20 const std::string infile = argv[2];
21 const std::string outfile = argv[3];
25 std::cerr <<
"Error: Cannot read mesh from " << infile << std::endl;
37 auto points = OpenMesh::getPointsProperty(mesh);
40 for (
int i = 0; i < iterations; ++i) {
42 for (
const auto& vh : mesh.vertices())
43 laplace(vh) = vh.vertices().avg(points) - points(vh);
46 for (
const auto& vh : mesh.vertices())
47 bi_laplace(vh) = (vh.vertices().avg(laplace) - laplace(vh));
50 for (
const auto& vh : mesh.vertices())
51 points(vh) += -0.5 * bi_laplace(vh);
58 std::cerr <<
"Error: Cannot write mesh to " << outfile << std::endl;
bool read_mesh(Mesh &_mesh, const std::string &_filename)
Read a mesh from file _filename.