diff --git a/Surface_mesh_simplification/benchmark/Surface_mesh_simplification/bench_garland_heckbert.cpp b/Surface_mesh_simplification/benchmark/Surface_mesh_simplification/bench_garland_heckbert.cpp index e95335b4572..6ff4ba18c24 100644 --- a/Surface_mesh_simplification/benchmark/Surface_mesh_simplification/bench_garland_heckbert.cpp +++ b/Surface_mesh_simplification/benchmark/Surface_mesh_simplification/bench_garland_heckbert.cpp @@ -4,13 +4,14 @@ #include #include #include -#include -#include -#include +#include +#include #include +#include + #include #include @@ -35,8 +36,13 @@ typedef SMS::GarlandHeckbert_plane_policies typedef SMS::GarlandHeckbert_probabilistic_plane_policies Prob_plane; typedef SMS::GarlandHeckbert_triangle_policies Classic_tri; typedef SMS::GarlandHeckbert_probabilistic_triangle_policies Prob_tri; -typedef SMS::GarlandHeckbert_line_policies Line_quadric; -typedef SMS::GarlandHeckbert_composed_policies Classic_line; +typedef SMS::GarlandHeckbert_policies Classic_plane_plus_line; + +// Old policies composed with line policies +typedef SMS::internal::GarlandHeckbert_line_policies Line_quadric; +typedef SMS::internal::GarlandHeckbert_composed_policies Proba_plane_plus_line; +typedef SMS::internal::GarlandHeckbert_composed_policies Classic_tri_plus_line; +typedef SMS::internal::GarlandHeckbert_composed_policies Proba_tri_plus_line; double mean_aspect_ratio(Surface_mesh& mesh){ double total_aspect_ratio=0; @@ -90,6 +96,8 @@ int main(int argc, char** argv) { Surface_mesh mesh; const std::string filename = (argc > 1) ? argv[1] : CGAL::data_file_path("meshes/cube-meshed.off"); + PMP::duplicate_non_manifold_vertices(mesh); + PMP::autorefine(mesh); if(!CGAL::IO::read_polygon_mesh(filename, mesh)) { @@ -117,11 +125,17 @@ int main(int argc, char** argv) else if(policy == "Prob_triangle") time=collapse_gh(tmesh, ratio, Prob_tri(tmesh)); else if(policy == "Plane_plus_line_0.1") - time=collapse_gh(tmesh, ratio, Classic_line(tmesh, 10)); + time=collapse_gh(tmesh, ratio, Classic_plane_plus_line(tmesh, 100, 0.1)); else if(policy == "Plane_plus_line_0.01") - time=collapse_gh(tmesh, ratio, Classic_line(tmesh, 100)); + time=collapse_gh(tmesh, ratio, Classic_plane_plus_line(tmesh, 100, 0.01)); else if(policy == "Plane_plus_line_0.001") - time=collapse_gh(tmesh, ratio, Classic_line(tmesh, 1000)); + time=collapse_gh(tmesh, ratio, Classic_plane_plus_line(tmesh, 100, 0.001)); + else if(policy == "Classic_tri_line") + time=collapse_gh(tmesh, ratio, Classic_tri_plus_line(tmesh, 100)); + else if(policy == "Proba_plane_line") + time=collapse_gh(tmesh, ratio, Proba_plane_plus_line(tmesh, Prob_plane(tmesh), Line_quadric(tmesh), 100)); + else if(policy == "Proba_tri_line") + time=collapse_gh(tmesh, ratio, Proba_tri_plus_line(tmesh, Prob_tri(tmesh), Line_quadric(tmesh), 100)); std::cout << policy << " " << PMP::approximate_Hausdorff_distance(tmesh, mesh) << " " << PMP::max_distance_to_triangle_mesh(tmesh.points(),mesh) @@ -130,13 +144,16 @@ int main(int argc, char** argv) CGAL::IO::write_polygon_mesh("out_"+policy+".off", tmesh, CGAL::parameters::stream_precision(17)); }; - collapse("Classic_plane"); - collapse("Classic_triangle"); + // collapse("Classic_plane"); + // collapse("Classic_triangle"); collapse("Prob_plane"); collapse("Prob_triangle"); - collapse("Plane_plus_line_0.1"); + // collapse("Plane_plus_line_0.1"); collapse("Plane_plus_line_0.01"); - collapse("Plane_plus_line_0.001"); + collapse("Classic_tri_line"); + collapse("Proba_plane_line"); + collapse("Proba_tri_line"); + // collapse("Plane_plus_line_0.001"); return EXIT_SUCCESS; }