Update bench_garland_heckbert

This commit is contained in:
lvalque 2025-09-01 16:49:46 +02:00
parent 260af72d6e
commit 708efa82b5
1 changed files with 29 additions and 12 deletions

View File

@ -4,13 +4,14 @@
#include <CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Edge_count_ratio_stop_predicate.h>
#include <CGAL/Surface_mesh_simplification/Policies/Edge_collapse/Bounded_normal_change_placement.h>
#include <CGAL/Surface_mesh_simplification/Policies/Edge_collapse/GarlandHeckbert_policies.h>
#include <CGAL/Surface_mesh_simplification/Policies/Edge_collapse/GarlandHeckbert_composed_policies.h>
#include <CGAL/Surface_mesh_simplification/edge_collapse.h>
#include <CGAL/Surface_mesh_simplification/edge_collapse.h>
#include <CGAL/Polygon_mesh_processing/autorefinement.h>
#include <CGAL/Polygon_mesh_processing/manifoldness.h>
#include <CGAL/Polygon_mesh_processing/distance.h>
#include <CGAL/Surface_mesh_simplification/edge_collapse.h>
#include <CGAL/IO/polygon_mesh_io.h>
#include <chrono>
@ -35,8 +36,13 @@ typedef SMS::GarlandHeckbert_plane_policies<Surface_mesh, Kernel>
typedef SMS::GarlandHeckbert_probabilistic_plane_policies<Surface_mesh, Kernel> Prob_plane;
typedef SMS::GarlandHeckbert_triangle_policies<Surface_mesh, Kernel> Classic_tri;
typedef SMS::GarlandHeckbert_probabilistic_triangle_policies<Surface_mesh, Kernel> Prob_tri;
typedef SMS::GarlandHeckbert_line_policies<Surface_mesh, Kernel> Line_quadric;
typedef SMS::GarlandHeckbert_composed_policies<Surface_mesh, Kernel, Classic_plane, Line_quadric> Classic_line;
typedef SMS::GarlandHeckbert_policies<Surface_mesh, Kernel> Classic_plane_plus_line;
// Old policies composed with line policies
typedef SMS::internal::GarlandHeckbert_line_policies<Surface_mesh, Kernel> Line_quadric;
typedef SMS::internal::GarlandHeckbert_composed_policies<Surface_mesh, Kernel, Prob_plane, Line_quadric> Proba_plane_plus_line;
typedef SMS::internal::GarlandHeckbert_composed_policies<Surface_mesh, Kernel, Classic_tri, Line_quadric> Classic_tri_plus_line;
typedef SMS::internal::GarlandHeckbert_composed_policies<Surface_mesh, Kernel, Prob_tri, Line_quadric> 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<TAG>(tmesh, mesh)
<< " " << PMP::max_distance_to_triangle_mesh<TAG>(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;
}