From aa2bdbdb5ea53e838a453059bc76d1b53252a228 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Tue, 21 Jul 2020 16:40:45 +0200 Subject: [PATCH] Add new iterative authalic example --- .../examples.txt | 1 + .../CMakeLists.txt | 6 ++-- .../compare_parameterization.cpp | 21 -------------- ...p => iterative_authalic_parameterizer.cpp} | 29 ++++++++++--------- 4 files changed, 18 insertions(+), 39 deletions(-) delete mode 100644 Surface_mesh_parameterization/examples/Surface_mesh_parameterization/compare_parameterization.cpp rename Surface_mesh_parameterization/examples/Surface_mesh_parameterization/{square_border_iterative_parameterizer.cpp => iterative_authalic_parameterizer.cpp} (74%) diff --git a/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/examples.txt b/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/examples.txt index a548836cd4c..db7aa8e187c 100644 --- a/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/examples.txt +++ b/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/examples.txt @@ -5,4 +5,5 @@ \example Surface_mesh_parameterization/seam_Polyhedron_3.cpp \example Surface_mesh_parameterization/simple_parameterization.cpp \example Surface_mesh_parameterization/square_border_parameterizer.cpp + \example Surface_mesh_parameterization/iterative_authalic_parameterizer.cpp */ diff --git a/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/CMakeLists.txt b/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/CMakeLists.txt index 46851fe79b0..cfb737623d5 100644 --- a/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/CMakeLists.txt +++ b/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/CMakeLists.txt @@ -63,10 +63,8 @@ if ( CGAL_FOUND ) target_link_libraries(simple_parameterization PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "square_border_parameterizer.cpp" ) target_link_libraries(square_border_parameterizer PUBLIC CGAL::Eigen_support) - create_single_source_cgal_program( "square_border_iterative_parameterizer.cpp" ) - target_link_libraries(square_border_iterative_parameterizer PUBLIC CGAL::Eigen_support) - create_single_source_cgal_program( "compare_parameterization.cpp" ) - target_link_libraries(compare_parameterization PUBLIC CGAL::Eigen_support) + create_single_source_cgal_program( "iterative_authalic_parameterizer.cpp" ) + target_link_libraries(iterative_authalic_parameterizer PUBLIC CGAL::Eigen_support) if(SuiteSparse_FOUND) target_link_libraries(orbifold PRIVATE ${SuiteSparse_LIBRARIES}) diff --git a/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/compare_parameterization.cpp b/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/compare_parameterization.cpp deleted file mode 100644 index 60b9da8c4ef..00000000000 --- a/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/compare_parameterization.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include -#include -#include - -int main(int argc, char** argv) -{ - std::string inputMesh = (argc>1) ? argv[1] : "data/mannequin-devil.off"; - std::string bash; - int out; - - bash = "./square_border_authalic_parameterizer " + inputMesh; - out = system(bash.c_str()); - if (out == 0) - std::cout << "square_border_authalic_parameterizer output written in discrete_result.off\n"; - - bash = "./square_border_iterative_parameterizer " + inputMesh; - out = system(bash.c_str()); - if (out == 0) - std::cout << "square_border_iterative_parameterizer output written in discrete_result.off\n"; - -} diff --git a/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/square_border_iterative_parameterizer.cpp b/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/iterative_authalic_parameterizer.cpp similarity index 74% rename from Surface_mesh_parameterization/examples/Surface_mesh_parameterization/square_border_iterative_parameterizer.cpp rename to Surface_mesh_parameterization/examples/Surface_mesh_parameterization/iterative_authalic_parameterizer.cpp index c8c71bfa054..f3833b8d146 100644 --- a/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/square_border_iterative_parameterizer.cpp +++ b/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/iterative_authalic_parameterizer.cpp @@ -1,11 +1,10 @@ #include - #include #include #include +#include #include -#include #include #include @@ -19,8 +18,8 @@ typedef Kernel::Point_2 Point_2; typedef Kernel::Point_3 Point_3; typedef CGAL::Surface_mesh Surface_mesh; -typedef boost::graph_traits::halfedge_descriptor halfedge_descriptor; -typedef boost::graph_traits::vertex_descriptor vertex_descriptor; +typedef boost::graph_traits::vertex_descriptor vertex_descriptor; +typedef boost::graph_traits::halfedge_descriptor halfedge_descriptor; typedef CGAL::Unique_hash_map UV_uhm; typedef boost::associative_property_map UV_pmap; @@ -30,9 +29,10 @@ namespace SMP = CGAL::Surface_mesh_parameterization; int main(int argc, char** argv) { std::ifstream in((argc>1) ? argv[1] : "data/nefertiti.off"); - if(!in){ + if(!in) + { std::cerr << "Error: problem loading the input data" << std::endl; - return 1; + return EXIT_FAILURE; } Surface_mesh sm; @@ -44,18 +44,19 @@ int main(int argc, char** argv) UV_uhm uv_uhm; UV_pmap uv_map(uv_uhm); - typedef SMP::Square_border_arc_length_parameterizer_3 Border_parameterizer; + typedef SMP::Circular_border_arc_length_parameterizer_3 Border_parameterizer; + Border_parameterizer border_parameterizer; // the border parameterizer will automatically compute the corner vertices + typedef SMP::Iterative_authalic_parameterizer_3 Parameterizer; + Parameterizer parameterizer(border_parameterizer); - Border_parameterizer border_param; // the border parameterizer will compute the corner vertices + const int iterations = (argc > 2) ? std::atoi(argv[2]) : 15; + SMP::Error_code err = parameterizer.parameterize(sm, bhd, uv_map, iterations); - int iterations = 15; - double error; - SMP::Error_code err = SMP::parameterize(sm, Parameterizer(border_param), bhd, uv_map, iterations, error); - - if(err != SMP::OK) { + if(err != SMP::OK) + { std::cerr << "Error: " << SMP::get_error_message(err) << std::endl; - return 1; + return EXIT_FAILURE; } std::ofstream out("iterative_result.off");