diff --git a/Surface_mesh_simplification/test/Surface_mesh_simplification/CMakeLists.txt b/Surface_mesh_simplification/test/Surface_mesh_simplification/CMakeLists.txt index 9c1e010e5ef..dabc2c49c08 100644 --- a/Surface_mesh_simplification/test/Surface_mesh_simplification/CMakeLists.txt +++ b/Surface_mesh_simplification/test/Surface_mesh_simplification/CMakeLists.txt @@ -6,6 +6,7 @@ project(Surface_mesh_simplification_Tests) find_package(CGAL REQUIRED) +create_single_source_cgal_program("issue_8213.cpp") create_single_source_cgal_program("edge_collapse_topology.cpp") create_single_source_cgal_program("test_edge_collapse_bounded_distance.cpp") create_single_source_cgal_program("test_edge_collapse_Envelope.cpp") diff --git a/Surface_mesh_simplification/test/Surface_mesh_simplification/data/issue_8213.off b/Surface_mesh_simplification/test/Surface_mesh_simplification/data/issue_8213.off new file mode 100644 index 00000000000..4669828bf08 --- /dev/null +++ b/Surface_mesh_simplification/test/Surface_mesh_simplification/data/issue_8213.off @@ -0,0 +1,16 @@ +OFF +5 4 0 + + 0.60153250345565623 3.2925554343503594 -0.93390733763467004 + 0.50125687092531912 3.266008536541555 -0.80580753798383942 + 0.57499779785916183 3.2558452065056969 -0.97860403852322797 + 0.56586410588624558 3.2541065339825863 -0.99341202997519495 + 0.56756366821062887 3.2478315549358072 -0.99100621040927039 + + 3 0 1 2 + 3 1 3 2 + 3 1 0 3 + 3 0 4 3 + + + diff --git a/Surface_mesh_simplification/test/Surface_mesh_simplification/issue_8213.cpp b/Surface_mesh_simplification/test/Surface_mesh_simplification/issue_8213.cpp new file mode 100644 index 00000000000..be6b26d0fb7 --- /dev/null +++ b/Surface_mesh_simplification/test/Surface_mesh_simplification/issue_8213.cpp @@ -0,0 +1,44 @@ +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +namespace SMS = CGAL::Surface_mesh_simplification; + +typedef CGAL::Simple_cartesian Kernel; +typedef CGAL::Surface_mesh Surface_mesh; + +int main() { + + std::string filename("data/issue_8213.off"); + + Surface_mesh surface_mesh; + + std::ifstream in(filename); + in >> surface_mesh; + + const size_t target_number_of_faces = 3; + SMS::Face_count_stop_predicate stop(target_number_of_faces); + + std::cout << "Input mesh number of faces: " << surface_mesh.number_of_faces() << ", target number of faces: " << target_number_of_faces << std::endl; + + SMS::edge_collapse( + surface_mesh, + stop, + CGAL::parameters:: + filter(SMS::Bounded_normal_change_filter<>()) + .get_cost(SMS::LindstromTurk_cost()) + .get_placement(SMS::LindstromTurk_placement()) + ); + + std::cout.precision(17); + std::cout << surface_mesh << std::endl; + return EXIT_SUCCESS; +}