diff --git a/Surface_mesh_approximation/test/Surface_mesh_approximation/vsa_class_interface_test.cpp b/Surface_mesh_approximation/test/Surface_mesh_approximation/vsa_class_interface_test.cpp index 8a158ac1d1b..7adda3177b9 100644 --- a/Surface_mesh_approximation/test/Surface_mesh_approximation/vsa_class_interface_test.cpp +++ b/Surface_mesh_approximation/test/Surface_mesh_approximation/vsa_class_interface_test.cpp @@ -39,15 +39,15 @@ int main() const double target_edge_length = 0.05; const unsigned int nb_iter = 3; - std::cout << "Start remeshing. " - << " (" << num_faces(mesh) << " faces)..." << std::endl; + std::cout << "Start remeshing. (" + << std::distance(faces(mesh).first, faces(mesh).second) << " faces)..." << std::endl; PMP::isotropic_remeshing( faces(mesh), target_edge_length, mesh, PMP::parameters::number_of_iterations(nb_iter)); - std::cout << "Remeshing done. " - << " (" << num_faces(mesh) << " faces)..." << std::endl; + std::cout << "Remeshing done. (" + << std::distance(faces(mesh).first, faces(mesh).second) << " faces)..." << std::endl; // face area map std::map face_index; diff --git a/Surface_mesh_approximation/test/Surface_mesh_approximation/vsa_error_decrease_test.cpp b/Surface_mesh_approximation/test/Surface_mesh_approximation/vsa_error_decrease_test.cpp index 8f62d3815de..6ec2b01eced 100644 --- a/Surface_mesh_approximation/test/Surface_mesh_approximation/vsa_error_decrease_test.cpp +++ b/Surface_mesh_approximation/test/Surface_mesh_approximation/vsa_error_decrease_test.cpp @@ -48,15 +48,15 @@ int main() const double target_edge_length = 0.05; const unsigned int nb_iter = 3; - std::cout << "Start remeshing. " - << " (" << num_faces(mesh) << " faces)..." << std::endl; + std::cout << "Start remeshing. (" + << std::distance(faces(mesh).first, faces(mesh).second) << " faces)..." << std::endl; PMP::isotropic_remeshing( faces(mesh), target_edge_length, mesh, PMP::parameters::number_of_iterations(nb_iter)); - std::cout << "Remeshing done. " - << " (" << num_faces(mesh) << " faces)..." << std::endl; + std::cout << "Remeshing done. (" + << std::distance(faces(mesh).first, faces(mesh).second) << " faces)..." << std::endl; // algorithm instance L21_metric error_metric(mesh, diff --git a/Surface_mesh_approximation/test/Surface_mesh_approximation/vsa_kernel_test.cpp b/Surface_mesh_approximation/test/Surface_mesh_approximation/vsa_kernel_test.cpp index 55efc29c749..2a6c391566d 100644 --- a/Surface_mesh_approximation/test/Surface_mesh_approximation/vsa_kernel_test.cpp +++ b/Surface_mesh_approximation/test/Surface_mesh_approximation/vsa_kernel_test.cpp @@ -30,15 +30,15 @@ int load_and_remesh_sm(TM &mesh) { const double target_edge_length = 0.05; const unsigned int nb_iter = 3; - std::cout << "Start remeshing. " - << " (" << num_faces(mesh) << " faces)..." << std::endl; + std::cout << "Start remeshing. (" + << std::distance(faces(mesh).first, faces(mesh).second) << " faces)..." << std::endl; PMP::isotropic_remeshing( faces(mesh), target_edge_length, mesh, PMP::parameters::number_of_iterations(nb_iter)); - std::cout << "Remeshing done. " - << " (" << num_faces(mesh) << " faces)..." << std::endl; + std::cout << "Remeshing done. (" + << std::distance(faces(mesh).first, faces(mesh).second) << " faces)..." << std::endl; return EXIT_SUCCESS; } @@ -54,16 +54,16 @@ int load_and_remesh_poly(TM &mesh) { const double target_edge_length = 0.05; const unsigned int nb_iter = 3; - std::cout << "Start remeshing. " - << " (" << num_faces(mesh) << " faces)..." << std::endl; + std::cout << "Start remeshing. (" + << std::distance(faces(mesh).first, faces(mesh).second) << " faces)..." << std::endl; PMP::isotropic_remeshing( faces(mesh), target_edge_length, mesh, PMP::parameters::number_of_iterations(nb_iter). face_index_map(get(boost::face_external_index, mesh))); - std::cout << "Remeshing done. " - << " (" << num_faces(mesh) << " faces)..." << std::endl; + std::cout << "Remeshing done. (" + << std::distance(faces(mesh).first, faces(mesh).second) << " faces)..." << std::endl; return EXIT_SUCCESS; } diff --git a/Surface_mesh_approximation/test/Surface_mesh_approximation/vsa_meshing_manifold_test.cpp b/Surface_mesh_approximation/test/Surface_mesh_approximation/vsa_meshing_manifold_test.cpp index e79ef5dd449..dd3a9633dce 100644 --- a/Surface_mesh_approximation/test/Surface_mesh_approximation/vsa_meshing_manifold_test.cpp +++ b/Surface_mesh_approximation/test/Surface_mesh_approximation/vsa_meshing_manifold_test.cpp @@ -5,6 +5,7 @@ #include #include +#include #include @@ -18,7 +19,7 @@ typedef L21_approx::Error_metric L21_metric; namespace PMP = CGAL::Polygon_mesh_processing; -bool test_manifold(const char *file_name, const FT drop = FT(1e-8)) +bool test_manifold(const char *file_name, const FT drop = FT(1e-2)) { Mesh mesh; std::ifstream input(file_name); @@ -27,18 +28,22 @@ bool test_manifold(const char *file_name, const FT drop = FT(1e-8)) return false; } + const std::size_t nb_removed = PMP::remove_isolated_vertices(mesh); + if (nb_removed > 0) + std::cout << nb_removed << " isolated vertices are removed." << std::endl; + const double target_edge_length = 0.05; const unsigned int nb_iter = 3; - std::cout << "Start remeshing. " - << " (" << num_faces(mesh) << " faces)..." << std::endl; + std::cout << "Start remeshing. (" + << std::distance(faces(mesh).first, faces(mesh).second) << " faces)..." << std::endl; PMP::isotropic_remeshing( faces(mesh), target_edge_length, mesh, PMP::parameters::number_of_iterations(nb_iter)); - std::cout << "Remeshing done. " - << " (" << num_faces(mesh) << " faces)..." << std::endl; + std::cout << "Remeshing done. (" + << std::distance(faces(mesh).first, faces(mesh).second) << " faces)..." << std::endl; std::cout << "Testing \"" << file_name << '\"' << std::endl; // algorithm instance @@ -51,7 +56,8 @@ bool test_manifold(const char *file_name, const FT drop = FT(1e-8)) // approximation, seeding from error, drop to the target error incrementally const std::size_t num_iterations = 20; const std::size_t inner_iterations = 5; - approx.initialize_seeds(CGAL::parameters::seeding_method(CGAL::Surface_mesh_approximation::INCREMENTAL) + approx.initialize_seeds( + CGAL::parameters::seeding_method(CGAL::Surface_mesh_approximation::INCREMENTAL) .min_error_drop(drop) .number_of_relaxations(inner_iterations)); approx.run(num_iterations); @@ -80,7 +86,7 @@ int main() if (!test_manifold("./data/cube-ouvert.off")) return EXIT_FAILURE; - if (!test_manifold("./data/sphere.off", FT(1e-2))) + if (!test_manifold("./data/sphere.off")) return EXIT_FAILURE; return EXIT_SUCCESS; diff --git a/Surface_mesh_approximation/test/Surface_mesh_approximation/vsa_metric_test.cpp b/Surface_mesh_approximation/test/Surface_mesh_approximation/vsa_metric_test.cpp index aa6ada16a03..c8bbc497828 100644 --- a/Surface_mesh_approximation/test/Surface_mesh_approximation/vsa_metric_test.cpp +++ b/Surface_mesh_approximation/test/Surface_mesh_approximation/vsa_metric_test.cpp @@ -68,12 +68,25 @@ typedef CGAL::Variational_shape_approximation< int main() { Mesh mesh; - std::ifstream input("./data/cube-ouvert.off"); + std::ifstream input("./data/sphere.off"); if (!input || !(input >> mesh) || !CGAL::is_triangle_mesh(mesh)) { std::cerr << "Invalid input file." << std::endl; return EXIT_FAILURE; } + const double target_edge_length = 0.05; + const unsigned int nb_iter = 3; + + std::cout << "Start remeshing. (" + << std::distance(faces(mesh).first, faces(mesh).second) << " faces)..." << std::endl; + PMP::isotropic_remeshing( + faces(mesh), + target_edge_length, + mesh, + PMP::parameters::number_of_iterations(nb_iter)); + std::cout << "Remeshing done. (" + << std::distance(faces(mesh).first, faces(mesh).second) << " faces)..." << std::endl; + // construct face normal and area map Vertex_point_map vpmap = get(boost::vertex_point, const_cast(mesh)); Face_area_map area_pmap = @@ -96,7 +109,8 @@ int main() Compact_approx approx(mesh, vpmap, error_metric); std::cout << "random seeding and run" << std::endl; - approx.initialize_seeds(CGAL::parameters::seeding_method(CGAL::Surface_mesh_approximation::RANDOM) + approx.initialize_seeds( + CGAL::parameters::seeding_method(CGAL::Surface_mesh_approximation::RANDOM) .max_number_of_proxies(20)); approx.run(20); if (approx.number_of_proxies() != 20)