Doc modification of autorefine and Polygon mesh processing

This commit is contained in:
Léo Valque 2025-02-17 15:44:10 +01:00
parent d4e66753ad
commit ac7bf3c45f
4 changed files with 23 additions and 6 deletions

View File

@ -152085,3 +152085,16 @@ keywords = {polygonal surface mesh, Surface reconstruction, kinetic framework, s
year={2014}, year={2014},
publisher={Elsevier} publisher={Elsevier}
} }
@unpublished{lazard:hal-04907149,
TITLE = {{Removing self-intersections in 3D meshes while preserving floating-point coordinates}},
AUTHOR = {Lazard, Sylvain and Valque, Leo},
URL = {https://inria.hal.science/hal-04907149},
NOTE = {working paper or preprint},
YEAR = {2025},
MONTH = Jan,
KEYWORDS = {Snap rounding ; mesh intersection ; robustness},
PDF = {https://inria.hal.science/hal-04907149v1/file/Snap-HAL.pdf},
HAL_ID = {hal-04907149},
HAL_VERSION = {v1},
}

View File

@ -4,7 +4,7 @@ namespace CGAL {
\anchor Chapter_PolygonMeshProcessing \anchor Chapter_PolygonMeshProcessing
\cgalAutoToc \cgalAutoToc
\authors David Coeurjolly, Jaques-Olivier Lachaud, Konstantinos Katrioplas, Sébastien Loriot, Ivan Pađen, Mael Rouxel-Labbé, Hossam Saeed, Jane Tournois, and Ilker %O. Yaz \authors David Coeurjolly, Jaques-Olivier Lachaud, Sylvain Lazard, Konstantinos Katrioplas, Sébastien Loriot, Ivan Pađen, Mael Rouxel-Labbé, Hossam Saeed, Jane Tournois, Léo Valque and Ilker %O. Yaz
\image html neptun_head.jpg \image html neptun_head.jpg
\image latex neptun_head.jpg \image latex neptun_head.jpg
@ -889,8 +889,10 @@ would then also includes overlaps of duplicated points.
The function `CGAL::Polygon_mesh_processing::autorefine_triangle_soup()` provides a way to refine a triangle soup The function `CGAL::Polygon_mesh_processing::autorefine_triangle_soup()` provides a way to refine a triangle soup
using the intersections of the triangles from the soup. In particular, if some points are duplicated they will be using the intersections of the triangles from the soup. In particular, if some points are duplicated they will be
merged. Note that if a kernel with exact predicates but inexact constructions is used, some new self-intersections merged. Note that if a kernel with exact predicates but inexact constructions is used, some new self-intersections
might be introduced due to rounding issues of points coordinates. might be introduced due to rounding issues of points coordinates. The `do_snap` option can be used to resolve this issue.
To guarantee that the triangle soup is free from self-intersections, a kernel with exact constructions must be used. When set to `true`, it ensures the coordinates are rounded to fit in `double` with potential additional subdivisions,
preventing any self-intersections from occurring.
\subsection PMPRemoveCapsNeedles Removal of Almost Degenerate Triangle Faces \subsection PMPRemoveCapsNeedles Removal of Almost Degenerate Triangle Faces
Triangle faces of a mesh made up of almost collinear points are badly shaped elements that Triangle faces of a mesh made up of almost collinear points are badly shaped elements that
@ -1439,5 +1441,7 @@ used as a reference during the project.
The curvature-based sizing field version of isotropic remeshing was added by Ivan Pađen during GSoC 2023, under the supervision of Sébastien Loriot and Jane Tournois. The curvature-based sizing field version of isotropic remeshing was added by Ivan Pađen during GSoC 2023, under the supervision of Sébastien Loriot and Jane Tournois.
The `do_snap` option for autorefinement were implemented during 2025. This was implemented by Léo Valque and Sylvain Lazard. The implementation is based on \cgalCite{lazard:hal-04907149}.
*/ */
} /* namespace CGAL */ } /* namespace CGAL */

View File

@ -15,8 +15,6 @@
#include <iostream> #include <iostream>
#include <CGAL/Polygon_mesh_processing/internal/snap_polygon_soup.h>
typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel; typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel;
typedef CGAL::Cartesian<double> Cartesian; typedef CGAL::Cartesian<double> Cartesian;
typedef Kernel::Point_3 Point; typedef Kernel::Point_3 Point;

View File

@ -1090,7 +1090,7 @@ bool autorefine_triangle_soup(PointRange& soup_points,
if(do_snap) if(do_snap)
{ {
CGAL_PMP_AUTOREFINE_VERBOSE("Snap polygon soup"); CGAL_PMP_AUTOREFINE_VERBOSE("Snap polygon soup");
return internal::snap_polygon_soup(soup_points, soup_triangles, parameters::point_map(pm).snap_grid_size(grid_size).number_of_iterations(nb_of_iteration).erase_all_duplicates(ead).concurrency_tag(Concurrency_tag())); return internal::snap_polygon_soup(soup_points, soup_triangles, parameters::point_map(pm).visitor(visitor).snap_grid_size(grid_size).number_of_iterations(nb_of_iteration).erase_all_duplicates(ead).concurrency_tag(Concurrency_tag()));
} }
constexpr bool parallel_execution = std::is_same_v<Parallel_tag, Concurrency_tag>; constexpr bool parallel_execution = std::is_same_v<Parallel_tag, Concurrency_tag>;
@ -1760,4 +1760,6 @@ autorefine( TriangleMesh& tm,
#endif #endif
#endif #endif
#include <CGAL/Polygon_mesh_processing/internal/snap_polygon_soup.h>
#endif // CGAL_POLYGON_MESH_PROCESSING_AUTOREFINEMENT_H #endif // CGAL_POLYGON_MESH_PROCESSING_AUTOREFINEMENT_H