Prepare CGAL-5.5

This commit is contained in:
Laurent Rineau 2022-06-29 14:52:29 +02:00
parent 561cc66264
commit 10f5fa4f1e
8 changed files with 148 additions and 151 deletions

View File

@ -6,9 +6,9 @@
var current_version_local = 'master' var current_version_local = 'master'
var all_versions = [ var all_versions = [
'master', 'master',
'5.5-beta1',
'latest', 'latest',
'5.4.1', '5.5',
'5.4.2',
'5.3.2', '5.3.2',
'5.2.4', '5.2.4',
'5.1.5', '5.1.5',

View File

@ -6,9 +6,9 @@
var current_version_local = 'master' var current_version_local = 'master'
var all_versions = [ var all_versions = [
'master', 'master',
'5.5-beta1',
'latest', 'latest',
'5.4.1', '5.5',
'5.4.2',
'5.3.2', '5.3.2',
'5.2.4', '5.2.4',
'5.1.5', '5.1.5',

View File

@ -6,9 +6,9 @@
var current_version_local = 'master' var current_version_local = 'master'
var all_versions = [ var all_versions = [
'master', 'master',
'5.5-beta1',
'latest', 'latest',
'5.4.1', '5.5',
'5.4.2',
'5.3.2', '5.3.2',
'5.2.4', '5.2.4',
'5.1.5', '5.1.5',

View File

@ -6,9 +6,9 @@
var current_version_local = 'master' var current_version_local = 'master'
var all_versions = [ var all_versions = [
'master', 'master',
'5.5-beta1',
'latest', 'latest',
'5.4.1', '5.5',
'5.4.2',
'5.3.2', '5.3.2',
'5.2.4', '5.2.4',
'5.1.5', '5.1.5',

View File

@ -17,10 +17,10 @@
#define CGAL_VERSION_H #define CGAL_VERSION_H
#ifndef SWIG #ifndef SWIG
#define CGAL_VERSION 5.5-beta2 #define CGAL_VERSION 5.5
#define CGAL_GIT_HASH abcdef #define CGAL_GIT_HASH abcdef
#endif #endif
#define CGAL_VERSION_NR 1050500920 #define CGAL_VERSION_NR 1050501000
#define CGAL_SVN_REVISION 99999 #define CGAL_SVN_REVISION 99999
#define CGAL_RELEASE_DATE 20220531 #define CGAL_RELEASE_DATE 20220531

View File

@ -2,7 +2,7 @@ set(CGAL_MAJOR_VERSION 5)
set(CGAL_MINOR_VERSION 5) set(CGAL_MINOR_VERSION 5)
set(CGAL_BUGFIX_VERSION 0) set(CGAL_BUGFIX_VERSION 0)
include(${CMAKE_CURRENT_LIST_DIR}/CGALConfigBuildVersion.cmake) include(${CMAKE_CURRENT_LIST_DIR}/CGALConfigBuildVersion.cmake)
set(CGAL_VERSION_PUBLIC_RELEASE_VERSION "5.5-beta2") set(CGAL_VERSION_PUBLIC_RELEASE_VERSION "5.5")
set(CGAL_VERSION_PUBLIC_RELEASE_NAME "CGAL-${CGAL_VERSION_PUBLIC_RELEASE_VERSION}") set(CGAL_VERSION_PUBLIC_RELEASE_NAME "CGAL-${CGAL_VERSION_PUBLIC_RELEASE_VERSION}")
if (CGAL_BUGFIX_VERSION AND CGAL_BUGFIX_VERSION GREATER 0) if (CGAL_BUGFIX_VERSION AND CGAL_BUGFIX_VERSION GREATER 0)

View File

@ -1,88 +1,60 @@
The CGAL Open Source Project is pleased to announce the release 5.4 of CGAL, the Computational Geometry Algorithms Library. The CGAL Open Source Project is pleased to announce the release 5.5 of CGAL, the Computational Geometry Algorithms Library.
Besides fixes and general enhancement to existing packages, the following has changed since CGAL 5.3: Besides fixes and general enhancement to existing packages, the following has changed since CGAL 5.4:
### [General changes](https://doc.cgal.org/5.4/Manual/general_intro.html) ### [3D Alpha Wrapping (new package)](https://doc.cgal.org/5.5/Manual/packages.html#PkgAlphaWrap3)
- Added the cmake target `CGAL::CGAL_Basic_viewer` to ease the compilation of programs using the basic viewer-based function `CGAL::draw()`. This target will define the macro and link with `CGAL_Qt5` target when linked with it. - This component takes a 3D triangle mesh, soup, or point set as input, and generates a valid (watertight, intersection-free, and combinatorially 2-manifold) surface triangle mesh that contains the input.
The algorithm proceeds by shrink-wrapping and refining a 3D Delaunay triangulation, starting from a loose bounding box of the input.
Two user-defined parameters, alpha and offset, offer control over the maximum size of cavities where the shrink-wrapping process can enter, and the tightness of the final surface mesh to the input, respectively. Once combined, these parameters provide a means to trade fidelity
to the input for complexity of the output.
- The kernel providing exact constructions and exact predicates ([`CGAL::Exact_predicates_exact_constructions_kernel`](https://doc.cgal.org/5.4/Kernel_23/classCGAL_1_1Exact__predicates__exact__constructions__kernel.html)) is now thread-safe. See changes in `2D and 3D Linear Geometry Kernel` for more details. See also the [announcement page](https://www.cgal.org/2022/05/18/alpha_wrap/).
- The class `Geomview_stream` and all the dependent features have been removed from CGAL. Those features were actually no longer supported since CGAL-5.3 but it was not properly announced. ### [3D Convex Hulls](https://doc.cgal.org/5.5/Manual/packages.html#PkgConvexHull3)
### [Shape Regularization](https://doc.cgal.org/5.4/Manual/packages.html#PkgShapeRegularization) (new package) - Added an [overload of the function `CGAL::convex_hull_3()`](https://doc.cgal.org/5.5/Convex_hull_3/group__PkgConvexHull3Functions.html#ga52fca4745c2ef0351063fbe66b035fd1), which writes the result in an indexed triangle set.
- This package enables to regularize a set of segments and open or closed contours in 2D and a set of planes in 3D such that all input objects are rotated and aligned with respect to the user-specified conditions. In addition, it provides a global regularization framework that can be adjusted for the user needs and any type of geometric objects. ### [2D Polygons](https://doc.cgal.org/5.5/Manual/packages.html#PkgPolygon2)
### [Weights](https://doc.cgal.org/5.4/Manual/packages.html#PkgWeights) (new package) - Add vertex, edge, and hole ranges.
- The concept [`GeneralPolygonWithHoles_2`](https://doc.cgal.org/5.5/Polygon/classGeneralPolygonWithHoles__2.html) now requires the nested type `Polygon_2` instead of `General_polygon_2`.
- This package provides a simple and unified interface to different types of weights. In particular, it groups all weights into three category: analytic weights including all basic weights which can be computed analytically for a query point with respect to its local neighbors in 2D and 3D; barycentric weights, including all weights which can be computed for a query point with respect to the vertices of a planar polygon; and weighting regions, including all weights which are used to balance other weights. ### [2D Regularized Boolean Set-Operations](https://doc.cgal.org/5.5/Manual/packages.html#PkgBooleanSetOperations2)
- The concept [`GeneralPolygonSetTraits_2`](https://doc.cgal.org/5.5/Boolean_set_operations_2/classGeneralPolygonSetTraits__2.html) now requires the nested type `Construct_polygon_with_holes_2` instead of `Construct_general_polygon_with_holes_2`.
### [2D Generalized Barycentric Coordinates](https://doc.cgal.org/5.4/Manual/packages.html#PkgBarycentricCoordinates2) (major changes) ### [Combinatorial Maps](https://doc.cgal.org/5.5/Manual/packages.html#PkgCombinatorialMaps)
- **Breaking change**: The headers `Segment_coordinates_2.h` and `Triangle_coordinates_2.h` are renamed to `segment_coordinates_2.h` and `triangle_coordinates_2.h`. - Removed old code deprecated in CGAL 4.9 and 4.10 (global functions, and information associated with darts).
- The classes [`Segment_coordinates_2`](https://doc.cgal.org/5.4/Barycentric_coordinates_2/classCGAL_1_1Barycentric__coordinates_1_1Segment__coordinates__2.html) and [`Triangle_coordinates_2`](https://doc.cgal.org/5.4/Barycentric_coordinates_2/classCGAL_1_1Barycentric__coordinates_1_1Triangle__coordinates__2.html) are deprecated. The free functions [`compute_segment_coordinates_2()`](https://doc.cgal.org/5.4/Barycentric_coordinates_2/classCGAL_1_1Barycentric__coordinates_1_1Segment__coordinates__2.html#a134d363dccaeecb5621fa608fac76eaf) and [`compute_triangle_coordinates_2()`](https://doc.cgal.org/5.4/Barycentric_coordinates_2/classCGAL_1_1Barycentric__coordinates_1_1Triangle__coordinates__2.html#a958fee3ad9613d7bfa9d7a976aa3548f) are deprecated as well. Instead, the free functions [`segment_coordinates_2()`](https://doc.cgal.org/5.4/Barycentric_coordinates_2/group__PkgBarycentricCoordinates2RefFunctions.html#gab856ca68d37f58e6cdf74c8aac6f4245) and [`triangle_coordinates_2()`](https://doc.cgal.org/5.4/Barycentric_coordinates_2/group__PkgBarycentricCoordinates2RefFunctions.html#gaa378786f8996dbcefe7923ebb711e4dd) should be used.
- The enums [`Query_point_location`](https://doc.cgal.org/5.4/Barycentric_coordinates_2/namespaceCGAL_1_1Barycentric__coordinates.html#aedeeb072a2024053a016afd15e591331) and [`Type_of_algorithm`](https://doc.cgal.org/5.4/Barycentric_coordinates_2/namespaceCGAL_1_1Barycentric__coordinates.html#a5e5682512438422f23d6080edc49c05b) are deprecated. Instead, the enum [`Computation_policy_2`](https://doc.cgal.org/5.4/Barycentric_coordinates_2/namespaceCGAL_1_1Barycentric__coordinates.html#a478bbcec416216b2274ee4b4e97b0e6c) should be used.
- The classes [`Wachspress_2`](https://doc.cgal.org/5.4/Barycentric_coordinates_2/classCGAL_1_1Barycentric__coordinates_1_1Wachspress__2.html), [`Discrete_harmonic_2`](https://doc.cgal.org/5.4/Barycentric_coordinates_2/classCGAL_1_1Barycentric__coordinates_1_1Discrete__harmonic__2.html), [`Mean_value_2`](https://doc.cgal.org/5.4/Barycentric_coordinates_2/classCGAL_1_1Barycentric__coordinates_1_1Mean__value__2.html), and [`Generalized_barycentric_coordinates_2`](https://doc.cgal.org/5.4/Barycentric_coordinates_2/classCGAL_1_1Barycentric__coordinates_1_1Generalized__barycentric__coordinates__2.html) are deprecated. As consequence, the concept [`BarycentricCoordinates_2`](https://doc.cgal.org/5.4/Barycentric_coordinates_2/classCGAL_1_1Barycentric__coordinates_1_1BarycentricCoordinates__2.html) is deprecated as well. Instead, the classes [`Wachspress_coordinates_2`](https://doc.cgal.org/5.4/Barycentric_coordinates_2/classCGAL_1_1Barycentric__coordinates_1_1Wachspress__coordinates__2.html), [`Discrete_harmonic_coordinates_2`](https://doc.cgal.org/5.4/Barycentric_coordinates_2/classCGAL_1_1Barycentric__coordinates_1_1Discrete__harmonic__coordinates__2.html), and [`Mean_value_coordinates_2`](https://doc.cgal.org/5.4/Barycentric_coordinates_2/classCGAL_1_1Barycentric__coordinates_1_1Mean__value__coordinates__2.html) should be used.
- Added the class [`Harmonic_coordinates_2`](https://doc.cgal.org/5.4/Barycentric_coordinates_2/classCGAL_1_1Barycentric__coordinates_1_1Harmonic__coordinates__2.html) to compute approximate harmonic coordinates in 2D. These coordinates satisfy all properties of barycentric coordinates inside any simple polygon.
- Added a new concept [`DiscretizedDomain_2`](https://doc.cgal.org/5.4/Barycentric_coordinates_2/classCGAL_1_1Barycentric__coordinates_1_1DiscretizedDomain__2.html) and a model of this concept called [`Delaunay_domain_2`](https://doc.cgal.org/5.4/Barycentric_coordinates_2/classCGAL_1_1Barycentric__coordinates_1_1Delaunay__domain__2.html), which is based on the [Mesh 2](https://doc.cgal.org/5.4/Manual/packages.html#PkgMesh2) package. A model of this concept is required to use [`Harmonic_coordinates_2`](https://doc.cgal.org/5.4/Barycentric_coordinates_2/classCGAL_1_1Barycentric__coordinates_1_1Harmonic__coordinates__2.html).
- Added free functions to compute Wachspress, discrete harmonic, and mean value coordinates.
- All free functions and classes are now using ranges and property maps.
### [2D and 3D Linear Geometry Kernel](https://doc.cgal.org/5.4/Manual/packages.html#PkgKernel23) ### [2D Arrangements](https://doc.cgal.org/5.5/Manual/packages.html#PkgArrangementOnSurface2)
- Fixed the `intersect_2`, `compare_y_at_x_right`, and `compare_y_at_x_left` function objects of the traits class template [`Arr_geodesic_arc_on_sphere_traits_2`](https://doc.cgal.org/5.5/Arrangement_on_surface_2/classCGAL_1_1Arr__geodesic__arc__on__sphere__traits__2.html) that handles geodesic arcs on sphere and applied a small syntactical fix to the tracing traits.
- Most operations on [`CGAL::Exact_predicates_exact_constructions_kernel`](https://doc.cgal.org/5.4/Kernel_23/classCGAL_1_1Exact__predicates__exact__constructions__kernel.html) objects are now thread-safe if [`CGAL::Exact_rational`](https://doc.cgal.org/5.4/Number_types/group__nt__cgal.html#ga0849ff44771b19582218ebdfa5614f64) is [`mpq_class`](https://doc.cgal.org/5.3/Number_types/classmpq__class.html) (from `GMPXX`), `boost::multiprecision::mpq_rational` or [`CGAL::Quotient<CGAL::MP_Float>`](https://doc.cgal.org/5.3/Number_types/classCGAL_1_1MP__Float.html). The objects are not atomic though, so the usual restrictions on avoiding race conditions apply. For users who do not use threads, this can be disabled with `CGAL_HAS_NO_THREADS`. ### [Tetrahedral Mesh Generation](https://doc.cgal.org/5.5/Manual/packages.html#PkgMesh3)
- Added documentation for the class [`Projection_traits_3`](https://doc.cgal.org/5.4/Kernel_23/classCGAL_1_1Projection__traits__3.html), which enables the use of 2D algorithms on the projections of 3D data onto an arbitrary plane. - Added the function [`remove_isolated_vertices()`](https://doc.cgal.org/5.5/Mesh_3/classCGAL_1_1Mesh__complex__3__in__triangulation__3.html#ace57c4e777da457c6e33b4f6e89949ce) as a post-processing step for the tetrahedral mesh generation.
- Added `construct_centroid_2_object()` and `compute_determinant_2_object()` in [`Projection_traits_xy_3`](https://doc.cgal.org/5.4/Kernel_23/classCGAL_1_1Projection__traits__xy__3.html), [`Projection_traits_xz_3`](https://doc.cgal.org/5.4/Kernel_23/classCGAL_1_1Projection__traits__xz__3.html), and [`Projection_traits_yz_3`](https://doc.cgal.org/5.4/Kernel_23/classCGAL_1_1Projection__traits__yz__3.html) classes. ### [Polygon Mesh Processing](https://doc.cgal.org/5.5/Manual/packages.html#PkgPolygonMeshProcessing)
- Added the function [`CGAL::Polygon_mesh_processing::orient_triangle_soup_with_reference_triangle_soup()`](https://doc.cgal.org/5.5/Polygon_mesh_processing/group__PMP__orientation__grp.html#ga855b1c55c201b91ab04eebd2811a87fd), which enables re-orienting the faces of a triangle soup based on the orientation of the nearest face in a reference triangle soup.
- Added the function [`CGAL::Polygon_mesh_processing::compatible_orientations()`](https://doc.cgal.org/5.5/Polygon_mesh_processing/group__PMP__orientation__grp.html#ga9ac9b9434084b64f3304df636c3178a3), which enables to retrieve the (in)compatibility of orientations of faces from different connected components.
- Added the function [`CGAL::Polygon_mesh_processing::tangential_relaxation()`](https://doc.cgal.org/5.5/Polygon_mesh_processing/group__PMP__meshing__grp.html#ga136c659162e5360354db5879db7431b4), which applies an area-based tangential mesh smoothing to the vertices of a surface triangle mesh.
- Added the named parameter `visitor` to the function [`triangulate_hole()`](https://doc.cgal.org/5.5/Polygon_mesh_processing/group__PMP__hole__filling__grp.html#gad2d3c43bce0ef90a16530478196d7f42), which enables to track progress with callbacks.
- Added more functions in the [visitor of the corefinement based methods](https://doc.cgal.org/5.5/Polygon_mesh_processing/classPMPCorefinementVisitor.html) to track progress.
- Added the functor [`NonZeroCoordinateIndex_3`](https://doc.cgal.org/5.4/Kernel_23/classKernel_1_1NonZeroCoordinateIndex__3.html) to the concept [`Kernel`](https://doc.cgal.org/5.4/Kernel_23/classKernel.html) with `int operator()(Vector_3)` which returns the index of any coordinate of the vector different from zero, or `-1`. ### [Surface Mesh Simplification](https://doc.cgal.org/5.5/Manual/packages.html#PkgSurfaceMeshSimplification)
- Introduced four variations of the Garland-Heckbert simplification algorithm based on the probabilistic approach of Trettner and Kobbelt (Fast and Robust QEF Minimization using Probabilistic Quadrics): [`GarlandHeckbert_plane_policies`](https://doc.cgal.org/5.5/Surface_mesh_simplification/classCGAL_1_1Surface__mesh__simplification_1_1GarlandHeckbert__plane__policies.html), [`GarlandHeckbert_probabilistic_plane_policies`](https://doc.cgal.org/5.5/Surface_mesh_simplification/classCGAL_1_1Surface__mesh__simplification_1_1GarlandHeckbert__probabilistic__plane__policies.html), [`GarlandHeckbert_triangle_policies`](https://doc.cgal.org/5.5/Surface_mesh_simplification/classCGAL_1_1Surface__mesh__simplification_1_1GarlandHeckbert__triangle__policies.html), and [`GarlandHeckbert_probabilistic_triangle_policies`](https://doc.cgal.org/5.5/Surface_mesh_simplification/classCGAL_1_1Surface__mesh__simplification_1_1GarlandHeckbert__probabilistic__triangle__policies.html).
- The class `GarlandHeckbert_policies` has been deprecated, `GarlandHeckbert_plane_policies` replaces it.
### [dD Kernel](https://doc.cgal.org/5.4/Manual/packages.html#PkgKernelD) ### [Point Set Processing](https://doc.cgal.org/5.5/Manual/packages.html#PkgPointSetProcessing3)
- Most operations on [`Epeck_d`](https://doc.cgal.org/5.4/Kernel_d/structCGAL_1_1Epeck__d.html) objects are now thread-safe, see 2D and 3D Linear Geometry Kernel for details. - A new optional named parameter, `min_points_per_cell` has been added to [`grid_simplify_point_set()`](https://doc.cgal.org/5.5/Point_set_processing_3/group__PkgPointSetProcessing3Algorithms.html#ga7757ef9b3900e42fde26f5a0ac56e20f). By adding a minimal number of points in a cell such that a point is retained, one can also filter out low density areas and outliers: in the case of densely sampled point clouds, this yields better results than using grid simplification and then outlier removal, while being very vast. The default value is `1` to keep the previous behavior as default.
### [2D Arrangements](https://doc.cgal.org/5.4/Manual/packages.html#PkgArrangementOnSurface2) ### [dD Spatial Searching](https://doc.cgal.org/5.5/Manual/packages.html#PkgSpatialSearchingD)
- **Breaking Change:** The traits function objects `Compare_x_at_limit_2` and `Compare_x_near_limit_2` are renamed to `Compare_x_on_boundary_2` and `Compare_x_near_boundary_2`, respectively. - Added the member function [`write_graphviz()`](https://doc.cgal.org/5.5/Spatial_searching/classCGAL_1_1Kd__tree.html#ac2851b5cafb8d5cce0dc5fb107c8f13f) to the class `Kd_tree` that writes the tree in a stream in the [Graphviz](https://graphviz.org/) format.
- A [new hierarchy of traits concepts](https://doc.cgal.org/5.4/Arrangement_on_surface_2/group__PkgArrangementOnSurface2Concepts.html) has been introduced. It captures all the valid combinations of boundary conditions for the 4 boundary sides of the parameter space. The 4 boundaries are Bottom, Top, Left, and Right. Each boundary side can be either contracted, identified, close, open, or oblivious. Not all possible combinations are valid. If one side is identified then the other must be as well. Two adjacent sides cannot be contracted. ### [CGAL and the Boost Graph Library (BGL)](https://doc.cgal.org/5.5/Manual/packages.html#PkgBGL)
- A new geometric traits, [`Arr_geodesic_arc_on_sphere_traits_2`](https://doc.cgal.org/5.4/Arrangement_on_surface_2/classCGAL_1_1Arr__geodesic__arc__on__sphere__traits__2.html) has been introduced. It handles arcs of great circles embedded on the unit sphere. - Added the function [`invert_selection()`](https://doc.cgal.org/5.5/BGL/structCGAL_1_1Face__filtered__graph.html#aa428541ebbdd35f9a6e9a3ffd60178df) in the class [`Face_filtered_graph`](https://doc.cgal.org/5.5/BGL/structCGAL_1_1Face__filtered__graph.html), which toggles the selected status of a graph: selected faces are deselected, and unselected faces are selected.
### [2D Regularized Boolean Set-Operations](https://doc.cgal.org/5.4/Manual/packages.html#PkgBooleanSetOperations2)
- Added an extra parameter (`UsePolylines`) to all free functions ( [`complement()`](https://doc.cgal.org/5.4/Boolean_set_operations_2/group__boolean__complement.html), [`do_intersect()`](https://doc.cgal.org/5.4/Boolean_set_operations_2/group__boolean__do__intersect.html), [`intersection()`](https://doc.cgal.org/5.4/Boolean_set_operations_2/group__boolean__intersection.html), [`join()`](https://doc.cgal.org/5.4/Boolean_set_operations_2/group__boolean__join.html), [`difference()`](https://doc.cgal.org/5.4/Boolean_set_operations_2/group__boolean__difference.html), [`symmetric_difference()`](https://doc.cgal.org/5.4/Boolean_set_operations_2/group__boolean__symmetric__difference.html), and [`oriented_side`](https://doc.cgal.org/5.4/Boolean_set_operations_2/group__boolean__oriented__side.html)) to control whether to use `Arr_polyline_traits_2` as default traits. It is the new default as it provides better performances in general.
### [3D Mesh Generation](https://doc.cgal.org/5.4/Manual/packages.html#PkgMesh3)
- Added support of weighted images for an improved quality of meshes generated from labeled images, along with a function [`CGAL::Mesh_3::generate_label_weights()`](https://doc.cgal.org/5.4/Mesh_3/namespaceCGAL_1_1Mesh__3.html#ae5914bf77180ff8948c08046154ee727) to generate the weights.
### [Polygon Mesh Processing](https://doc.cgal.org/5.4/Manual/packages.html#PkgPolygonMeshProcessing)
- Added the function [`CGAL::Polygon_mesh_processing::match_faces()`](https://doc.cgal.org/5.4/Polygon_mesh_processing/group__measure__grp.html#ga10f7cd81645bafe936ac5eb4e58e67ef), which, given two polygon meshes, identifies their common faces as well as faces present in only either of them.
- Added the functions: [`CGAL::Polygon_mesh_processing::bounded_error_Hausdorff_distance()`](https://doc.cgal.org/5.4/Polygon_mesh_processing/group__PMP__distance__grp.html#ga6d4ecea831c33ac10eec42b5021fc183) that computes an estimate of the one-sided Hausdorff distance between two triangle meshes which is bounded by a user-specified error bound; [`CGAL::Polygon_mesh_processing::bounded_error_symmetric_Hausdorff_distance()`](https://doc.cgal.org/5.4/Polygon_mesh_processing/group__PMP__distance__grp.html#ga9a7a682b5d9523135c8502e72117dffd) that computes an estimate of the symmetric Hausdorff distance bounded by a user-specified error bound; and [`CGAL::Polygon_mesh_processing::is_Hausdorff_distance_larger()`](https://doc.cgal.org/5.4/Polygon_mesh_processing/group__PMP__distance__grp.html#gab19e751107025a443e86baa9763aebf3) that returns `true` if the bounded-error Hausdorff distance between two meshes is larger than the user-specified max distance.
- Added the functions [`CGAL::Polygon_mesh_processing::squared_edge_length()`](https://doc.cgal.org/5.4/Polygon_mesh_processing/group__measure__grp.html#ga30fa03722cd7aa599f6dcb115f54fec5) and [`CGAL::Polygon_mesh_processing::squared_face_area()`](https://doc.cgal.org/5.4/Polygon_mesh_processing/group__measure__grp.html#ga6eda3738815fd678df225f79ccfc3e03), which, compared to [`CGAL::Polygon_mesh_processing::edge_length()`](https://doc.cgal.org/5.4/Polygon_mesh_processing/group__measure__grp.html#gae1674775d9fecada7f25710f425cff3a) and [`CGAL::Polygon_mesh_processing::face_area()`](https://doc.cgal.org/5.4/Polygon_mesh_processing/group__measure__grp.html#ga6a1d7a825c09490b1e6613295343482b), enable avoiding square-root operations.
- Added more functions in the [visitor of the corefinement based methods](https://doc.cgal.org/5.4/Polygon_mesh_processing/classPMPCorefinementVisitor.html) to track all vertex creations.
- Added an option to [`CGAL::Polygon_mesh_processing::self_intersections()`](https://doc.cgal.org/5.4/Polygon_mesh_processing/group__PMP__intersection__grp.html#gaf19c80ec12cbff7ebe9e69453f1d40b8) to report only a limited number of intersections (`maximum_number()`).
### [The Heat Method](https://doc.cgal.org/5.4/Manual/packages.html#PkgHeatMethod)
- **Breaking change**: Added the functor `Compute_squared_length_3` providing `operator(const Vector_3& v)`, which computes the squared length of `v`, to the [`HeatMethodTraits_3`](https://doc.cgal.org/5.4/Heat_method_3/classHeatMethodTraits__3.html) concept.
### [Point Set Processing](https://doc.cgal.org/5.4/Manual/packages.html#PkgPointSetProcessing3)
- Added support for [`libpointmatcher::GenericDescriptorOutlierFilter`](https://github.com/ethz-asl/libpointmatcher) that enables providing a map from a point to a weight associated with this point.
### [Shape Detection](https://doc.cgal.org/5.4/Manual/packages.html#PkgShapeDetection)
- Added new shapes to the Region Growing algorithm on a point set: circles in 2D, spheres in 3D, and cylinders in 3D.
### [CGAL and Solvers](https://doc.cgal.org/5.4/Manual/packages.html#PkgSolverInterface)
- Added support for the [OSQP solver](https://osqp.org/). This solver enables to efficiently compute the convex Quadratic Programming (QP) problems arising in the context of several packages.

View File

@ -1,93 +1,118 @@
Subject: CGAL 5.4 Released, Computational Geometry Algorithms Library Subject: CGAL 5.5 Released, Computational Geometry Algorithms Library
Content-Type: text/plain; charset="utf-8" Content-Type: text/plain; charset="utf-8"
Body: Body:
The CGAL Open Source Project is pleased to announce the release 5.4 The CGAL Open Source Project is pleased to announce the release 5.5
of CGAL, the Computational Geometry Algorithms Library. of CGAL, the Computational Geometry Algorithms Library.
Besides fixes and general enhancement to existing packages, the following Besides fixes and general enhancement to existing packages, the following
has changed since CGAL 5.3: has changed since CGAL 5.4:
General changes 3D Alpha Wrapping (new package)
- Added the cmake target CGAL::CGAL_Basic_viewer to ease the - This component takes a 3D triangle mesh, soup, or point set as
compilation of programs using the basic viewer-based function input, and generates a valid (watertight, intersection-free, and
CGAL::draw(). This target will define the macro and link with combinatorially 2-manifold) surface triangle mesh that contains the
CGAL_Qt5 target when linked with it. input. The algorithm proceeds by shrink-wrapping and refining a 3D
Delaunay triangulation, starting from a loose bounding box of the
input. Two user-defined parameters, alpha and offset, offer control
over the maximum size of cavities where the shrink-wrapping process
can enter, and the tightness of the final surface mesh to the input,
respectively. Once combined, these parameters provide a means to
trade fidelity to the input for complexity of the output.
- The kernel providing exact constructions and exact predicates See also https://www.cgal.org/2022/05/18/alpha_wrap/.
(CGAL::Exact_predicates_exact_constructions_kernel) is now
thread-safe.
more details.
- The class Geomview_stream and all the dependent features have 3D Convex Hulls
been removed from CGAL. Those features were actually no longer
supported since CGAL-5.3 but it was not properly announced. - Added an overload of the function CGAL::convex_hull_3(), which
writes the result in an indexed triangle set.
2D Polygons
- Add vertex, edge, and hole ranges.
- The concept GeneralPolygonWithHoles_2 now requires the nested type
Polygon_2 instead of General_polygon_2.
2D Regularized Boolean Set-Operations
- The concept GeneralPolygonSetTraits_2 now requires the nested type
Construct_polygon_with_holes_2 instead of
Construct_general_polygon_with_holes_2.
Combinatorial Maps
- Removed old code deprecated in CGAL 4.9 and 4.10 (global functions,
and information associated with darts).
2D Arrangements
- Fixed the intersect_2, compare_y_at_x_right, and compare_y_at_x_left
function objects of the traits class template
Arr_geodesic_arc_on_sphere_traits_2 that handles geodesic arcs on
sphere and applied a small syntactical fix to the tracing traits.
Tetrahedral Mesh Generation
- Added the function remove_isolated_vertices() as a post-processing
step for the tetrahedral mesh generation.
Polygon Mesh Processing
- Added the function
CGAL::Polygon_mesh_processing::orient_triangle_soup_with_reference_triangle_soup(),
which enables re-orienting the faces of a triangle soup based on the
orientation of the nearest face in a reference triangle soup.
- Added the function
CGAL::Polygon_mesh_processing::compatible_orientations(), which
enables to retrieve the (in)compatibility of orientations of faces
from different connected components.
- Added the function
CGAL::Polygon_mesh_processing::tangential_relaxation(), which
applies an area-based tangential mesh smoothing to the vertices of a
surface triangle mesh.
- Added the named parameter visitor to the function
triangulate_hole(), which enables to track progress with callbacks.
- Added more functions in the visitor of the corefinement based
methods to track progress.
Surface Mesh Simplification
- Introduced four variations of the Garland-Heckbert simplification
algorithm based on the probabilistic approach of Trettner and
Kobbelt (Fast and Robust QEF Minimization using Probabilistic
Quadrics): GarlandHeckbert_plane_policies,
GarlandHeckbert_probabilistic_plane_policies,
GarlandHeckbert_triangle_policies, and
GarlandHeckbert_probabilistic_triangle_policies.
- The class GarlandHeckbert_policies has been deprecated,
GarlandHeckbert_plane_policies replaces it.
Point Set Processing
- A new optional named parameter, min_points_per_cell has been added
to grid_simplify_point_set(). By adding a minimal number of points
in a cell such that a point is retained, one can also filter out low
density areas and outliers: in the case of densely sampled point
clouds, this yields better results than using grid simplification
and then outlier removal, while being very vast. The default value
is 1 to keep the previous behavior as default.
dD Spatial Searching
- Added the member function write_graphviz() to the class Kd_tree that
writes the tree in a stream in the Graphviz format.
CGAL and the Boost Graph Library (BGL)
- Added the function invert_selection() in the class
Face_filtered_graph, which toggles the selected status of a graph:
selected faces are deselected, and unselected faces are selected.
Shape Regularization (new package) See https://www.cgal.org/2022/07/04/cgal55/ for a
- This package enables to regularize a set of segments and open or
closed contours in 2D and a set of planes in 3D such that all input
objects are rotated and aligned with respect to the user-specified
conditions. In addition, it provides a global regularization
framework that can be adjusted for the user needs and any type of
geometric objects.
https://www.cgal.org/2021/11/16/shape-regularization/
https://doc.cgal.org/5.4/Manual/packages.html#PkgShapeRegularization
Weights (new package)
- This package provides a simple and unified interface to different
types of weights. In particular, it groups all weights into three
category: analytic weights including all basic weights which can be
computed analytically for a query point with respect to its local
neighbors in 2D and 3D; barycentric weights, including all weights
which can be computed for a query point with respect to the vertices
of a planar polygon; and weighting regions, including all weights
which are used to balance other weights.
https://doc.cgal.org/5.4/Manual/packages.html#PkgWeights
2D Generalized Barycentric Coordinates (major changes)
- Breaking change: The headers Segment_coordinates_2.h and
Triangle_coordinates_2.h are renamed to segment_coordinates_2.h and
triangle_coordinates_2.h.
- The classes Segment_coordinates_2 and Triangle_coordinates_2 are
deprecated. The free functions compute_segment_coordinates_2() and
compute_triangle_coordinates_2() are deprecated as well. Instead,
the free functions segment_coordinates_2() and
triangle_coordinates_2() should be used.
- The enums Query_point_location and Type_of_algorithm are deprecated.
Instead, the enum Computation_policy_2 should be used.
- The classes Wachspress_2, Discrete_harmonic_2, Mean_value_2, and
Generalized_barycentric_coordinates_2 are deprecated. As
consequence, the concept BarycentricCoordinates_2 is deprecated as
well. Instead, the classes Wachspress_coordinates_2,
Discrete_harmonic_coordinates_2, and Mean_value_coordinates_2 should
be used.
- Added the class Harmonic_coordinates_2 to compute approximate
harmonic coordinates in 2D. These coordinates satisfy all properties
of barycentric coordinates inside any simple polygon.
- Added a new concept DiscretizedDomain_2 and a model of this concept
called Delaunay_domain_2, which is based on the Mesh 2 package. A
model of this concept is required to use Harmonic_coordinates_2.
- Added free functions to compute Wachspress, discrete harmonic, and
mean value coordinates.
- All free functions and classes are now using ranges and property
maps.
https://doc.cgal.org/5.4/Manual/packages.html#PkgBarycentricCoordinates2
See https://www.cgal.org/2022/01/31/cgal54/ for a
complete list of changes. complete list of changes.