Merge branch '5.4.x-branch'

This commit is contained in:
Laurent Rineau 2022-01-31 17:29:17 +01:00
commit e7643c90d9
7 changed files with 136 additions and 204 deletions

View File

@ -8,7 +8,7 @@
'master',
'latest',
'5.4',
'5.3.2',
'5.3.1',
'5.2.4',
'5.1.5',
'5.0.4',

View File

@ -8,7 +8,7 @@
'master',
'latest',
'5.4',
'5.3.2',
'5.3.1',
'5.2.4',
'5.1.5',
'5.0.4',

View File

@ -8,7 +8,7 @@
'master',
'latest',
'5.4',
'5.3.2',
'5.3.1',
'5.2.4',
'5.1.5',
'5.0.4',

View File

@ -8,7 +8,7 @@
'master',
'latest',
'5.4',
'5.3.2',
'5.3.1',
'5.2.4',
'5.1.5',
'5.0.4',

View File

@ -3,12 +3,13 @@
var url_re = /(cgal\.geometryfactory\.com\/CGAL\/doc\/|doc\.cgal\.org\/)(master|latest|(\d\.\d+|\d\.\d+\.\d+)(-beta\d)?)\//;
var url_local = /.*\/doc_output\//;
var current_version_local = '5.3-beta1'
var current_version_local = 'master'
var all_versions = [
'master',
'5.3',
'latest',
'5.2.3',
'5.4',
'5.3.1',
'5.2.4',
'5.1.5',
'5.0.4',
'4.14.3',

View File

@ -1,93 +1,88 @@
%The CGAL Open Source Project is pleased to announce the release 5.3 of CGAL, the Computational Geometry Algorithms Library.
The CGAL Open Source Project is pleased to announce the release 5.4 of CGAL, the Computational Geometry Algorithms Library.
Besides fixes and general enhancement to existing packages, the following has changed since CGAL 5.2:
Besides fixes and general enhancement to existing packages, the following has changed since CGAL 5.3:
### [General changes](https://doc.cgal.org/5.3/Manual/general_intro.html)
### [General changes](https://doc.cgal.org/5.4/Manual/general_intro.html)
- The support for the compiled version of CGAL is dropped. Only the header-only version is supported.
- 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.
- On Windows, the type used for `Exact_rational`, in `Epick` and indirectly (through `Lazy_exact_nt`)
`Epeck` may now be `boost::multiprecision::mpq_rational`, as has been the case on other platforms
for several releases. This depends on various options and is added to a list that includes
`mpq_class`, `CGAL::Gmpq`, `leda_rational` and `CGAL::Quotient<CGAL::MP_Float>`.
- 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.
### [Quadtrees, Octrees, and Orthtrees](https://doc.cgal.org/5.3/Manual/packages.html#PkgOrthtree) (new package)
- 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.
- This package implements a tree data structure in which each node encloses a hypercubic section
of space and each non-leave node has hypercubic children whose edge lengths are half its edge length.
Such a data structure is known as a quadtree in 2D, an octree in 3D, and is generalized
as an "orthtree" in higher dimensions.
### [Shape Regularization](https://doc.cgal.org/5.4/Manual/packages.html#PkgShapeRegularization) (new package)
### [Triangulations on the Sphere](https://doc.cgal.org/5.3/Manual/packages.html#PkgTriangulationOnSphere2) (new package)
- 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.
- This package enables the construction and manipulation of Delaunay triangulations on the 2-sphere.
Triangulations are built incrementally and can be modified by insertion or removal of vertices.
Point location querying and primitives to build the dual Voronoi diagram are provided.
### [Weights](https://doc.cgal.org/5.4/Manual/packages.html#PkgWeights) (new package)
### File Input / Output
- 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.
- Point set, polygon soup, and polygon mesh file I/O functions have been harmonized and documented:
- Point set I/O functions can be found in the packages [Point_set_processing_3](https://doc.cgal.org/5.3/Manual/packages.html#PkgPolygonMeshProcessing), and [Point_set_3](https://doc.cgal.org/5.3/Manual/packages.html#PkgPointSet3).
- Polygon mesh I/O functions can be found in the package [BGL](https://doc.cgal.org/5.3/Manual/packages.html#PkgBGL).
- Polygon soup I/O can be found in the package [Stream_support](https://doc.cgal.org/5.3/Manual/packages.html#PkgStreamSupport).
### [2D Generalized Barycentric Coordinates](https://doc.cgal.org/5.4/Manual/packages.html#PkgBarycentricCoordinates2) (major changes)
A comprehensive list of the supported file formats is available in the Stream_support package
[here](https://doc.cgal.org/5.3/Stream_support/index.html#IOstreamSupportedFormats);
inversely, the following [page](https://doc.cgal.org/5.3/Stream_support/IOStreamSupportedFileFormats.html)
can be used to find out which CGAL data structures can be used given a specific file format.
- **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`](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.
### [Requirements](https://doc.cgal.org/5.3/Manual/thirdparty.html)
### [2D and 3D Linear Geometry Kernel](https://doc.cgal.org/5.4/Manual/packages.html#PkgKernel23)
- The CMake minimal version is now `3.14`.
- The GNU compiler g++ versions 6 and 7 are no longer tested. Only version 8.3 or later are supported
- 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`.
### [2D and 3D Linear Geometry Kernel](https://doc.cgal.org/5.3/Manual/packages.html#PkgKernel23)
- 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 `is_translation()`, `is_scaling()`, `is_reflection()`, and `is_rotation()` to the classes
[`Aff_transformation_2`](https://doc.cgal.org/5.3/Kernel_23/classCGAL_1_1Aff__transformation__2.html)
and [`Aff_transformation_3`](https://doc.cgal.org/5.3/Kernel_23/classCGAL_1_1Aff__transformation__3.html),
which enable determining if the transformations use a specialized representation internally.
- 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.
### [2D Regularized Boolean Set-Operations](https://doc.cgal.org/5.3/Manual/packages.html#PkgBooleanSetOperations2)
- Added documentation for the free functions [`oriented_side(const Point_2& p, ....)`](https://doc.cgal.org/5.3/Boolean_set_operations_2/group__boolean__oriented__side.html)
that accept a point and a polygon.
- Documentation has been improved across the whole package.
- 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`.
### [Polygon Mesh Processing](https://doc.cgal.org/5.3/Manual/packages.html#PkgPolygonMeshProcessing)
### [dD Kernel](https://doc.cgal.org/5.4/Manual/packages.html#PkgKernelD)
- Added the class [`CGAL::Polyhedral_envelope`](https://doc.cgal.org/5.3/Polygon_mesh_processing/structCGAL_1_1Polyhedral__envelope.html),
providing a way to quickly check if a primitive (point, segment, or triangle)
is within a polyhedral envelope around a set of triangles. It is based on the work of
Bolun Wang, Teseo Schneider, Yixin Hu, Marco Attene, and Daniele Panozzo.
"Exact and efficient polyhedral envelope containment check." (ACM Trans. Graph., 39-4, July 2020).
- Added more functions in the [visitor of the corefinement based methods](https://doc.cgal.org/5.3/Polygon_mesh_processing/classPMPCorefinementVisitor.html)
to track all edge creations.
- 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.
### [Surface Mesh Topology](https://doc.cgal.org/5.3/Manual/packages.html#PkgSurfaceMeshTopologySummary)
- Added the function [`CGAL::Surface_mesh_topology::Curves_on_surface_topology::is_homotopic_to_simple_cycle()`](https://doc.cgal.org/5.3/Surface_mesh_topology/classCGAL_1_1Surface__mesh__topology_1_1Curves__on__surface__topology.html#a8d7c4cba2cf2cff542f5cd93117233db),
which can be used to determine whehter a closed path on a surface mesh can be continously
transformed to a cycle without self intersection.
### [2D Arrangements](https://doc.cgal.org/5.4/Manual/packages.html#PkgArrangementOnSurface2)
### [Surface Mesh Simplification](https://doc.cgal.org/5.3/Manual/packages.html#PkgSurfaceMeshSimplification)
- Added a filtering mechanism so that costly tests get only applied to the next candidate for the edge collapse.
- Added the class [`Polyhedral_envelope_filter`](https://doc.cgal.org/5.3/Surface_mesh_simplification/classCGAL_1_1Surface__mesh__simplification_1_1Polyhedral__envelope__filter.html),
which enables to perform mesh simplification inside a polyhedral envelope of the input mesh.
- **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.
### [2D Polyline Simplification](https://doc.cgal.org/5.3/Manual/packages.html#PkgPolylineSimplification2)
- When polylines have common subsequences of vertices, these subsequences may now be simplifified simultaneously.
- 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.
### [dD Triangulations](https://doc.cgal.org/5.3/Manual/packages.html#PkgTriangulations)
- Added the function [`insert_if_in_star()`](https://doc.cgal.org/5.3/Triangulation/classCGAL_1_1Regular__triangulation.html#aa8df2d138f341939e834bcdd7cb6c71a)
to the class [`CGAL::Regular_triangulation`](https://doc.cgal.org/5.3/Triangulation/classCGAL_1_1Regular__triangulation.html),
which enables users to insert a point `p` in a regular triangulation on the condition that `p`
appears post-insertion in the star of a user-specified, existing vertex.
- 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.
### [2D and 3D Alpha Shapes](https://doc.cgal.org/5.3/Manual/packages.html#PkgAlphaShapes2)
- **Breaking change**: The following deprecated classes have been removed: `Alpha_shape_euclidean_traits_2`,
`Weighted_alpha_shape_euclidean_traits_2`, `Alpha_shape_euclidean_traits_3`, and
`Weighted_alpha_shape_euclidean_traits_3`. All CGAL kernel can be used directly as models
of the concepts of the 2D and 3D Alpha Shape packages.
### [2D Regularized Boolean Set-Operations](https://doc.cgal.org/5.4/Manual/packages.html#PkgBooleanSetOperations2)
### [Classification](https://doc.cgal.org/5.3/Manual/packages.html#PkgClassification)
- **Breaking change**: the support for TensorFlow has been dropped; the
classifier `CGAL::TensorFlow::Neural_network_classifier` has been removed.
- 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,157 +1,93 @@
Subject: CGAL 5.3 Released, Computational Geometry Algorithms Library
Subject: CGAL 5.4 Released, Computational Geometry Algorithms Library
Content-Type: text/plain; charset="utf-8"
Body:
The CGAL Open Source Project is pleased to announce the release 5.3
The CGAL Open Source Project is pleased to announce the release 5.4
of CGAL, the Computational Geometry Algorithms Library.
Besides fixes and general enhancement to existing packages, the following
has changed since CGAL 5.2:
has changed since CGAL 5.3:
General changes
- The support for the compiled version of CGAL is dropped. Only the
header-only version is supported.
- 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.
- On Windows, the type used for Exact_rational, in Epick and
indirectly (through Lazy_exact_nt) Epeck may now be
boost::multiprecision::mpq_rational, as has been the case on other
platforms for several releases. This depends on various options and
is added to a list that includes mpq_class, CGAL::Gmpq,
leda_rational and CGAL::Quotient<CGAL::MP_Float>.
- The kernel providing exact constructions and exact predicates
(CGAL::Exact_predicates_exact_constructions_kernel) is now
thread-safe.
more details.
- 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.
Quadtrees, Octrees, and Orthtrees (new package)
Shape Regularization (new package)
- This package implements a tree data structure in which each node
encloses a hypercubic section of space and each non-leave node has
hypercubic children whose edge lengths are half its edge length.
Such a data structure is known as a quadtree in 2D, an octree in 3D,
and is generalized as an “orthtree” in higher dimensions.
- 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/04/27/Orthtree/
https://www.cgal.org/2021/11/16/shape-regularization/
https://doc.cgal.org/5.3/Manual/packages.html#PkgOrthtree
https://doc.cgal.org/5.4/Manual/packages.html#PkgShapeRegularization
Triangulations on the Sphere (new package)
Weights (new package)
- This package enables the construction and manipulation of Delaunay
triangulations on the 2-sphere. Triangulations are built
incrementally and can be modified by insertion or removal of
vertices. Point location querying and primitives to build the dual
Voronoi diagram are provided.
- 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.3/Manual/packages.html#PkgTriangulationOnSphere2
https://doc.cgal.org/5.4/Manual/packages.html#PkgWeights
File Input / Output
2D Generalized Barycentric Coordinates (major changes)
- Point set, polygon soup, and polygon mesh file I/O functions have
been harmonized and documented:
- Point set I/O functions can be found in the packages
Point_set_processing_3, and Point_set_3.
- Polygon mesh I/O functions can be found in the package BGL.
- Polygon soup I/O can be found in the package Stream_support.
- 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.
A comprehensive list of the supported file formats is available in the
Stream_support package:
https://doc.cgal.org/5.3/Stream_support/index.html#IOstreamSupportedFormats
Inversely, the following page can be used to find out which CGAL data
structures can be used given a specific file format.
https://doc.cgal.org/5.3/Stream_support/IOStreamSupportedFileFormats.html
https://doc.cgal.org/5.4/Manual/packages.html#PkgBarycentricCoordinates2
Requirements
- The CMake minimal version is now 3.14.
- The GNU compiler g++ versions 6 and 7 are no longer tested. Only
version 8.3 or later are supported
2D and 3D Linear Geometry Kernel
- Added is_translation(), is_scaling(), is_reflection(), and
is_rotation() to the classes Aff_transformation_2 and
Aff_transformation_3, which enable determining if the
transformations use a specialized representation internally.
2D Regularized Boolean Set-Operations
- Added documentation for the free functions
oriented_side(const Point_2& p, ....) that accept a point and a
polygon.
- Documentation has been improved across the whole package.
Polygon Mesh Processing
- Added the class CGAL::Polyhedral_envelope, providing a way to
quickly check if a primitive (point, segment, or triangle) is within
a polyhedral envelope around a set of triangles. It is based on the
work of Bolun Wang, Teseo Schneider, Yixin Hu, Marco Attene, and
Daniele Panozzo. “Exact and efficient polyhedral envelope
containment check.” (ACM Trans. Graph., 39-4, July 2020).
- Added more functions in the visitor of the corefinement based
methods to track all edge creations.
Surface Mesh Topology
- Added the function
CGAL::Surface_mesh_topology::Curves_on_surface_topology::is_homotopic_to_simple_cycle(),
which can be used to determine whehter a closed path on a surface
mesh can be continously transformed to a cycle without self
intersection.
Surface Mesh Simplification
- Added a filtering mechanism so that costly tests get only applied to
the next candidate for the edge collapse.
- Added the class Polyhedral_envelope_filter, which enables to perform
mesh simplification inside a polyhedral envelope of the input mesh.
2D Polyline Simplification
- When polylines have common subsequences of vertices, these
subsequences may now be simplifified simultaneously.
dD Triangulations
- Added the function insert_if_in_star() to the class
CGAL::Regular_triangulation, which enables users to insert a point p
in a regular triangulation on the condition that p appears
post-insertion in the star of a user-specified, existing vertex.
2D and 3D Alpha Shapes
- Breaking change: The following deprecated classes have been removed:
Alpha_shape_euclidean_traits_2,
Weighted_alpha_shape_euclidean_traits_2,
Alpha_shape_euclidean_traits_3, and
Weighted_alpha_shape_euclidean_traits_3. All CGAL kernel can be used
directly as models of the concepts of the 2D and 3D Alpha Shape
packages.
Classification
- Breaking change: the support for TensorFlow has been dropped; the
classifier CGAL::TensorFlow::Neural_network_classifier has been
removed.
See https://www.cgal.org/2021/07/06/cgal53/ for a
See https://www.cgal.org/2022/01/31/cgal54/ for a
complete list of changes.