diff --git a/BGL/include/CGAL/boost/graph/parameters_interface.h b/BGL/include/CGAL/boost/graph/parameters_interface.h index 9f29000f296..371c9db021c 100644 --- a/BGL/include/CGAL/boost/graph/parameters_interface.h +++ b/BGL/include/CGAL/boost/graph/parameters_interface.h @@ -138,7 +138,7 @@ CGAL_add_named_parameter(optimize_anchor_location_t, optimize_anchor_location, o CGAL_add_named_parameter(pca_plane_t, pca_plane, pca_plane) // tetrahedral remeshing parameters -CGAL_add_named_parameter(protect_boundaries_t, protect_boundaries, protect_boundaries) +CGAL_add_named_parameter(remesh_boundaries_t, remesh_boundaries, remesh_boundaries) CGAL_add_named_parameter(cell_selector_t, cell_selector, cell_selector) // output parameters diff --git a/Polyhedron/demo/Polyhedron/Plugins/Tetrahedral_remeshing/Tetrahedral_remeshing_plugin.cpp b/Polyhedron/demo/Polyhedron/Plugins/Tetrahedral_remeshing/Tetrahedral_remeshing_plugin.cpp index 13ffe77fcf9..c75285b8e39 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Tetrahedral_remeshing/Tetrahedral_remeshing_plugin.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/Tetrahedral_remeshing/Tetrahedral_remeshing_plugin.cpp @@ -218,7 +218,7 @@ public Q_SLOTS: time.restart(); CGAL::tetrahedral_adaptive_remeshing(tr, target_length, - CGAL::parameters::protect_boundaries(protect) + CGAL::parameters::remesh_boundaries(!protect) .number_of_iterations(nb_iter)); std::cout << "Remeshing done (" << time.elapsed() << " ms)" << std::endl; diff --git a/Tetrahedral_remeshing/doc/Tetrahedral_remeshing/Concepts/RemeshingCellBase_3.h b/Tetrahedral_remeshing/doc/Tetrahedral_remeshing/Concepts/RemeshingCellBase_3.h index 6794e123497..0dd0d1822a1 100644 --- a/Tetrahedral_remeshing/doc/Tetrahedral_remeshing/Concepts/RemeshingCellBase_3.h +++ b/Tetrahedral_remeshing/doc/Tetrahedral_remeshing/Concepts/RemeshingCellBase_3.h @@ -4,7 +4,7 @@ /// The concept `RemeshingCellBase_3` defines the requirements for the cell base /// used in the triangulation given as input to the remeshing algorithm /// -/// \cgalRefines `TriangulationCellBaseWithInfo_3`, `CopyConstructible` +/// \cgalRefines `TriangulationCellBase_3`, `CopyConstructible` /// \cgalHasModel `CGAL::Tetrahedral_remeshing::Remeshing_cell_base`. diff --git a/Tetrahedral_remeshing/doc/Tetrahedral_remeshing/NamedParameters.txt b/Tetrahedral_remeshing/doc/Tetrahedral_remeshing/NamedParameters.txt index 51ddbf316c2..35611019fc2 100644 --- a/Tetrahedral_remeshing/doc/Tetrahedral_remeshing/NamedParameters.txt +++ b/Tetrahedral_remeshing/doc/Tetrahedral_remeshing/NamedParameters.txt @@ -38,13 +38,14 @@ in the mesh.\n \b Default value is `1` \cgalNPEnd -\cgalNPBegin{protect_boundaries} +\cgalNPBegin{remeshing_boundaries} \anchor Remeshing_protect_boundaries -a Boolean that states whether the boundaries should be preserved by the remeshing +a Boolean that states whether the boundaries should be remeshed or +exactly preserved by the remeshing process. Boundaries are between the exterior and the interior, between two subdomains, and between the areas selected or not for remeshing (cf \ref Remeshing_cell_is_selected_map). -If `true`, they are preserved. Otherwise, they can be modified.\n +If `true`, they are remeshed. Otherwise, they cannot be modified by the remeshing process.\n \b Type : `bool` \n \b Default value is `false` \cgalNPEnd @@ -77,7 +78,7 @@ the atomic operations that are performed, so the property map must be writable. It must be default constructible.\n Default: a default property map where all cells of the domain -(i.e. with a non-zero `Subdomain_index` are selected) +(i.e. with a non-zero `Subdomain_index`) are selected. \cgalNPEnd \cgalNPTableEnd diff --git a/Tetrahedral_remeshing/doc/Tetrahedral_remeshing/Tetrahedral_remeshing.txt b/Tetrahedral_remeshing/doc/Tetrahedral_remeshing/Tetrahedral_remeshing.txt index 08c5bfcbb56..995b3270785 100644 --- a/Tetrahedral_remeshing/doc/Tetrahedral_remeshing/Tetrahedral_remeshing.txt +++ b/Tetrahedral_remeshing/doc/Tetrahedral_remeshing/Tetrahedral_remeshing.txt @@ -10,13 +10,13 @@ namespace CGAL { \section secTetRemeshing Multi-Material Tetrahedral Remeshing This package implements an algorithm for quality tetrahedral remeshing, -introduced by N.Faraj et al in%\cgalCite{faraj2016mvr}. +introduced by N.Faraj et al in \cgalCite{faraj2016mvr}. This practical iterative remeshing algorithm is designed to remesh multi-material tetrahedral meshes, by iteratively performing a sequence of simple elementary operations such as edge collapses, edge splits, edge flips, and vertex relocations following a Laplacian smoothing. The algorithm results in high quality isotropic meshes, with the desired mesh density, -while preserving the input geometric polyline and surfacic features. +while preserving the input geometric linear and surfacic features. Specific remeshing rules have been designed to satisfy the following criteria. First, the algorithm preserves the geometric complex topology, including @@ -33,7 +33,6 @@ The tetrahedral remeshing algorithm improves the quality of dihedral angles, while targetting the user-defined uniform sizing field and preserving the topology of the feature complex, as highlighted by Figure \cgalFigureRef{Remesh_liver}. - \cgalFigureBegin{Remesh_liver, tetrahedral_remeshing_before_after.png} Tetrahedral mesh, modified by our uniform tetrahedral remeshing method. (Left) Before remeshing, dihedral angles were in the interval [1.3; 177.8]. @@ -41,6 +40,8 @@ Tetrahedral mesh, modified by our uniform tetrahedral remeshing method. dihedral angles were are the interval [9.5; 161.9]. \cgalFigureEnd +Experimental evidence show that a higher number of remeshing iterations +lead to a mesh with a better fitted sizing criterion, and higher quality dihedral angles. \section secTetRemeshingAPI API diff --git a/Tetrahedral_remeshing/examples/Tetrahedral_remeshing/tetrahedral_remeshing_example.cpp b/Tetrahedral_remeshing/examples/Tetrahedral_remeshing/tetrahedral_remeshing_example.cpp index b786380e7f3..a9f6922d80a 100644 --- a/Tetrahedral_remeshing/examples/Tetrahedral_remeshing/tetrahedral_remeshing_example.cpp +++ b/Tetrahedral_remeshing/examples/Tetrahedral_remeshing/tetrahedral_remeshing_example.cpp @@ -47,10 +47,10 @@ int main(int argc, char* argv[]) T3 t3; if (!input) - return false; + return EXIT_FAILURE; if( !load_binary_triangulation(input, t3)) - return false; + return EXIT_FAILURE; CGAL::tetrahedral_adaptive_remeshing(t3, target_edge_length); diff --git a/Tetrahedral_remeshing/examples/Tetrahedral_remeshing/tetrahedral_remeshing_with_features.cpp b/Tetrahedral_remeshing/examples/Tetrahedral_remeshing/tetrahedral_remeshing_with_features.cpp index 18fa43ee700..a1947b7e2cc 100644 --- a/Tetrahedral_remeshing/examples/Tetrahedral_remeshing/tetrahedral_remeshing_with_features.cpp +++ b/Tetrahedral_remeshing/examples/Tetrahedral_remeshing/tetrahedral_remeshing_with_features.cpp @@ -26,7 +26,6 @@ typedef Remeshing_triangulation::Vertex_handle Vertex_handle; typedef Remeshing_triangulation::Cell_handle Cell_handle; typedef Remeshing_triangulation::Edge Edge; -template class Constrained_edges_property_map { public: @@ -74,7 +73,7 @@ void add_edge(Vertex_handle v1, Cell_handle c; int i, j; if(tr.is_edge(v1, v2, c, i, j)) - constraints.insert(std::make_pair(c->vertex(i), c->vertex(j))); + constraints.insert(std::make_pair(v1, v2)); } void generate_input(const std::size_t& n, @@ -156,7 +155,7 @@ int main(int argc, char* argv[]) CGAL::tetrahedral_adaptive_remeshing(t3, target_edge_length, CGAL::parameters::edge_is_constrained_map( - Constrained_edges_property_map(&constraints)) + Constrained_edges_property_map(&constraints)) .number_of_iterations(nb_iter)); save_ascii_triangulation("tet_remeshing_with_features_after.mesh", t3); diff --git a/Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/Remeshing_cell_base.h b/Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/Remeshing_cell_base.h index 67e50c8e501..85f11d1981e 100644 --- a/Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/Remeshing_cell_base.h +++ b/Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/Remeshing_cell_base.h @@ -41,15 +41,11 @@ used in the tetrahedral remeshing process. \tparam Gt is the geometric traits class. It has to be a model of the concept `RemeshingTriangulationTraits_3`. -\tparam Info is the information the user would like to add to a cell. -It has to be `DefaultConstructible` and `Assignable`. - \tparam Cb is a cell base class from which `Remeshing_cell_base` derives. It must be a model of the `TriangulationCellBase_3` concept. It has the default value `Triangulation_cell_base_3`. \cgalModels `RemeshingCellBase_3` -\cgalRefines `Triangulation_cell_base_with_info_3` */ template