diff --git a/Documentation/doc/biblio/cgal_manual.bib b/Documentation/doc/biblio/cgal_manual.bib index 6dcd0e958c7..81578322225 100644 --- a/Documentation/doc/biblio/cgal_manual.bib +++ b/Documentation/doc/biblio/cgal_manual.bib @@ -3133,7 +3133,18 @@ pages = "207--221" title = {Multi-Material Adaptive Volume Remesher}, journal = {Compurer and Graphics Journal (proc. Shape Modeling International 2016)}, year = {2016}, -} +} + +@article{cgal:Wwshap-eepec-20, + title={Exact and Efficient Polyhedral Envelope Containment Check}, + author={Bolun Wang and Teseo Schneider and Yixin Hu and Marco Attene and Daniele Panozzo}, + journal = {ACM Trans. Graph.}, + volume = {39}, + number = {4}, + month = jul, + year = {2020}, + publisher = {ACM} +} % ---------------------------------------------------------------------------- % END OF BIBFILE diff --git a/Polygon_mesh_processing/doc/Polygon_mesh_processing/PackageDescription.txt b/Polygon_mesh_processing/doc/Polygon_mesh_processing/PackageDescription.txt index 412bd685539..518643fc6ad 100644 --- a/Polygon_mesh_processing/doc/Polygon_mesh_processing/PackageDescription.txt +++ b/Polygon_mesh_processing/doc/Polygon_mesh_processing/PackageDescription.txt @@ -125,6 +125,7 @@ The page \ref bgl_namedparameters "Named Parameters" describes their usage. - `CGAL::Polygon_mesh_processing::degenerate_faces()` - `CGAL::Polygon_mesh_processing::is_needle_triangle_face()` - `CGAL::Polygon_mesh_processing::is_cap_triangle_face()` +- `CGAL::Envelope` \cgalCRPSection{Location Functions} - \link PMP_locate_grp Point Location \endlink @@ -215,7 +216,6 @@ The page \ref bgl_namedparameters "Named Parameters" describes their usage. \cgalCRPSection{Miscellaneous} - `CGAL::Polygon_mesh_slicer` - `CGAL::Side_of_triangle_mesh` -- `CGAL::Envelope` - `CGAL::Polygon_mesh_processing::bbox()` - `CGAL::Polygon_mesh_processing::vertex_bbox()` - `CGAL::Polygon_mesh_processing::edge_bbox()` diff --git a/Polygon_mesh_processing/doc/Polygon_mesh_processing/Polygon_mesh_processing.txt b/Polygon_mesh_processing/doc/Polygon_mesh_processing/Polygon_mesh_processing.txt index 0eea8a6e3f2..d5128d4f31a 100644 --- a/Polygon_mesh_processing/doc/Polygon_mesh_processing/Polygon_mesh_processing.txt +++ b/Polygon_mesh_processing/doc/Polygon_mesh_processing/Polygon_mesh_processing.txt @@ -515,7 +515,7 @@ input triangle mesh. \subsection PMPEnvelope Polyhedral Envelope Containment Check The class `CGAL::Envelope` provides functors that test whether a query point, segment or triangle -is fully contained in a polyhedral envelope of a triangle mesh. While the user provides a distance +is fully contained in a polyhedral envelope of a triangle mesh. While the user provides a distance the envelope is not the Minkowski sum with a sphere, because this would have cylindrical and spherical patches at convex edges and vertices of the input triangle mesh. Instead, the envelope consists of a collection of prisms that are guaranteed to be inside the Minkowski sum envelope, hence the @@ -523,12 +523,13 @@ term polyhedral envelope. This containment test is exact for the polyhedral env conservative in the sense that, if a query is inside the polyhedral envelope, we can be sure that it is also in the Minkowski sum envelope, but if it is outside we do not know. -Such a test is used in the class `Surface_mesh_simplification::Envelope_filter` of the +Such a test is used by the class `Surface_mesh_simplification::Envelope_filter` of the package \refPkgSurfaceMeshSimplification, in order to simplify respecting a tolerance. \subsubsection InsideExample Polyhedral Envelope Example \cgalExample{Polygon_mesh_processing/polyhedral_envelope.cpp} +The algorithm is described in \cgalCite{cgal:wshap-eepec-20} and can be summarized as follows. \subsection PMPShapePredicates Shape Predicates @@ -930,8 +931,15 @@ A prototype of mesh and shape smoothing was developed during the 2017 edition of by Konstantinos Katrioplas, under supervision of Jane Tournois. It was finalized by Mael Rouxel-Labbé and integrated in \cgal 5.0. -Functionalities related to mesh and polygon soup reparation have been introduced steadily over multiple versions +Functionalities related to mesh and polygon soup repair have been introduced steadily over multiple versions since \cgal 4.10, in joint work between Sébastien Loriot and Mael Rouxel-Labbé. +The polyhedral envelope containment check was integrated in \cgal 5.2. The implementation makes use of the +version of https://github.com/wangbolun300/fast-envelope +avaiable on 7th of October 2020. It only uses the high level algorithm of checking that a query +is covered by a set of prisms, where each prism is an offset for an input triangle. +That is, we do not use indirect predicates. + + */ } /* namespace CGAL */ diff --git a/Polygon_mesh_processing/doc/Polygon_mesh_processing/dependencies b/Polygon_mesh_processing/doc/Polygon_mesh_processing/dependencies index 67c7449e39d..ef149451cf7 100644 --- a/Polygon_mesh_processing/doc/Polygon_mesh_processing/dependencies +++ b/Polygon_mesh_processing/doc/Polygon_mesh_processing/dependencies @@ -9,9 +9,9 @@ BGL Solver_interface Surface_mesh Surface_mesh_deformation +Surface_mesh_simplification AABB_tree Triangulation_2 Spatial_sorting Generator Property_map - diff --git a/Polygon_mesh_processing/include/CGAL/Envelope.h b/Polygon_mesh_processing/include/CGAL/Envelope.h index cff1308ca4f..2f01568f937 100644 --- a/Polygon_mesh_processing/include/CGAL/Envelope.h +++ b/Polygon_mesh_processing/include/CGAL/Envelope.h @@ -1,4 +1,3 @@ -// Copyright (c) 2019 Bolun Wang, Teseo Schneider, Yixin Hu, Marco Attene, and Daniele Panozzo // Copyright (c) 2020 GeometryFactory (France). // All rights reserved. // @@ -9,12 +8,32 @@ // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial // // Author(s) : Andreas Fabri - -// This work is derived work from // -// https://github.com/wangbolun300/fast-envelope avaiable on 7th of October 2020 +// This file incorporates work covered by the following copyright and permission notice: +// +// MIT License +// +// Copyright (c) 2019 Bolun Wang, Teseo Schneider, Yixin Hu, Marco Attene, and Daniele Panozzo +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// // -// and the original work is distributed under the MIT License // // @article{Wang:2020:FE, // title={Exact and Efficient Polyhedral Envelope Containment Check}, @@ -27,6 +46,9 @@ // publisher = {ACM} // } // +// The code below uses the version of +// https://github.com/wangbolun300/fast-envelope avaiable on 7th of October 2020 +// // The code below only use the high level algorithms of checking that a query // is covered by a set of prisms, where each prism is an offset for an input triangle. // That is, we do not use indirect predicates