mirror of https://github.com/CGAL/cgal
annoucements for CGAL-5.6
This commit is contained in:
parent
de4fa0d7d5
commit
d5919b38e2
|
|
@ -22,7 +22,7 @@ Release date: July 2023
|
|||
instead of `void`, that is used inside the class `Region_growing` for detecting if the input
|
||||
conditions for the new region are satisfied. This change affects only user-defined types of regions.
|
||||
- **Breaking change**: The constructors of all models used together with the region growing algorithm
|
||||
now enable users to provide parameters through the [named parameters](https://doc.cgal.org/latest/BGL/group__bgl__namedparameters.html) mechanism.
|
||||
now enable users to provide parameters through the [named parameters](https://doc.cgal.org/5.6/BGL/group__bgl__namedparameters.html) mechanism.
|
||||
- All fitting classes in the region growing framework are now using better versions of the region
|
||||
conditions, more precise and faster, including the correct normal orientations.
|
||||
- Added new models of the concept `RegionType` for getting linear regions in a set of 2D and 3D
|
||||
|
|
|
|||
|
|
@ -1,63 +1,108 @@
|
|||
The CGAL Open Source Project is pleased to announce the release 5.5 of CGAL, the Computational Geometry Algorithms Library.
|
||||
The CGAL Open Source Project is pleased to announce the release 5.6 of CGAL, the Computational Geometry Algorithms Library.
|
||||
|
||||
Besides fixes and general enhancement to existing packages, the following has changed since CGAL 5.4:
|
||||
Besides fixes and general enhancement to existing packages, the following has changed since CGAL 5.5:
|
||||
|
||||
### [3D Alpha Wrapping (new package)](https://doc.cgal.org/5.5/Manual/packages.html#PkgAlphaWrap3)
|
||||
### General Changes
|
||||
|
||||
- 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.
|
||||
- **Breaking change**: Package-specific assertions, preconditions, and postconditions (such as `CGAL_triangulation_assertion`) have been removed. Corresponding CGAL-wide versions (such as `CGAL_assertion`) should be used instead.
|
||||
|
||||
See also the [announcement page](https://www.cgal.org/2022/05/18/alpha_wrap/).
|
||||
### [Shape Detection](https://doc.cgal.org/5.6/Manual/packages.html#PkgShapeDetection) (major changes)
|
||||
|
||||
### [2D Straight Skeleton and Polygon Offsetting (breaking change)](https://doc.cgal.org/5.5/Manual/packages.html#PkgStraightSkeleton2)
|
||||
- Fix the output of the function [CGAL::create_exterior_skeleton_and_offset_polygons_with_holes_2()](https://doc.cgal.org/5.5/Straight_skeleton_2/group__PkgStraightSkeleton2OffsetFunctions.html#gaa159f093e5d6d7fdb62c1660a44f95fe)
|
||||
to not take into account the offset of the outer frame.
|
||||
- Fix the computation of the exterior offset of a polygon with holes that was not computing the offset of the holes
|
||||
- **Breaking change**: The region growing part of the package have been reworked to fix design issues introduced with the handling of `FaceGraph` models. In particular, the notion of `Item` has been introduced to reference an element in the input range of elements. Region maps now operates on `Item` and no longer on the value type of the input range.
|
||||
- **Breaking change**: The method `update()` in the concept `RegionType` now returns a `Boolean` instead of `void`, that is used inside the class `Region_growing` for detecting if the input conditions for the new region are satisfied. This change affects only user-defined types of regions.
|
||||
- **Breaking change**: The constructors of all models used together with the region growing algorithm now enable users to provide parameters through the [named parameters](https://doc.cgal.org/5.6/BGL/group__bgl__namedparameters.html) mechanism.
|
||||
- All fitting classes in the region growing framework are now using better versions of the region conditions, more precise and faster, including the correct normal orientations.
|
||||
- Added new models of the concept `RegionType` for getting linear regions in a set of 2D and 3D segments and on 2D and 3D polylines.
|
||||
- Added the class `Polyline_graph` for extracting a set of polylines from a face graph, which splits this graph into a set of user-defined regions.
|
||||
- Added new shapes to the Region Growing algorithm on a point set: circles in 2D, spheres in 3D, and cylinders in 3D.
|
||||
|
||||
### [3D Convex Hulls](https://doc.cgal.org/5.5/Manual/packages.html#PkgConvexHull3)
|
||||
### [2D Straight Skeleton and Polygon Offsetting](https://doc.cgal.org/5.6/Manual/packages.html#PkgStraightSkeleton2) (major changes)
|
||||
- Added weighted straight skeletons: weighted straight skeletons are a generalization of straight skeletons. Contour edges are assigned a positive weight, which can be understood as assigning a speed to the wavefront spawned from the contour edge.
|
||||
- Added straight skeleton extrusion: this CGAL package now implements the extrusion of weighted straight skeletons of polygons with holes. The output is a closed, combinatorially 2-manifold surface triangle mesh.
|
||||
See also the [news entry](https://www.cgal.org/2023/05/09/improved_straight_skeleton/).
|
||||
|
||||
- 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.
|
||||
### [2D and 3D Linear Geometry Kernel](https://doc.cgal.org/5.6/Manual/packages.html#PkgKernel23)
|
||||
|
||||
### [2D Polygons](https://doc.cgal.org/5.5/Manual/packages.html#PkgPolygon2)
|
||||
- Added the functor [`CompareAngle_3`](https://doc.cgal.org/5.6/Kernel_23/classKernel_1_1CompareAngle__3.html) to the concept [`Kernel`](https://doc.cgal.org/5.6/Kernel_23/classKernel.html) to compare an angle defined by three points to the cosinus of another angle.
|
||||
|
||||
- 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`.
|
||||
### [Combinatorial Maps](https://doc.cgal.org/5.6/Manual/packages.html#PkgCombinatorialMaps), [Generalized Maps](https://doc.cgal.org/5.6/Manual/packages.html#PkgGeneralizedMaps), and [Linear Cell Complex](https://doc.cgal.org/5.6/Manual/packages.html#PkgLinearCellComplex)
|
||||
|
||||
### [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`.
|
||||
- Added a version that uses indices instead of handles as dart and attribute descriptors. As the indices are integers convertible from and to `std::size_t`, they can be used as index into vectors which store properties. To use the index version, `Use_index` must be defined and be equal to `CGAL::Tag_true` in the item class.
|
||||
|
||||
### [Combinatorial Maps](https://doc.cgal.org/5.5/Manual/packages.html#PkgCombinatorialMaps)
|
||||
### [Linear Cell Complex](https://doc.cgal.org/5.6/Manual/packages.html#PkgLinearCellComplex)
|
||||
|
||||
- Removed old code deprecated in CGAL 4.9 and 4.10 (global functions, and information associated with darts).
|
||||
- Added the class [`Linear_cell_complex_incremental_builder_3`](https://doc.cgal.org/5.6/Linear_cell_complex/classCGAL_1_1Linear__cell__complex__incremental__builder__3.html).
|
||||
|
||||
### [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.
|
||||
### [2D Arrangements](https://doc.cgal.org/5.6/Manual/packages.html#PkgArrangementOnSurface2)
|
||||
|
||||
### [Tetrahedral Mesh Generation](https://doc.cgal.org/5.5/Manual/packages.html#PkgMesh3)
|
||||
- Introduced an overload function template, namely `draw(arr)`, that renders arrangements based on the `Basic_viewer_qt` class template. As of now, only 2D arrangements on the plane induced by (i) segments, (ii) conics, and (iii) circular arcs or (linear) segments are supported.
|
||||
- Improved the traits class template that handles conics, namely [`Arr_conic_traits_2`](https://doc.cgal.org/5.6/Arrangement_on_surface_2/classCGAL_1_1Arr__conic__traits__2.html). This includes the following: 1. Fixed a couple of bugs and slightly optimized some functions. 2. Introduced functionality that approximates conics with polylines. (This is used to draw conic curves.) 3. **Breaking change**: Changed the interface to generate conic curves. In the past, curves where generated directly using the constructors of the conic and x-monotone conic constructs. Now, they are constructed via function objects provided by the traits. This eliminates the constructions of temporary kernels. The old functionality is obsolete, but still supported for a limited number of versions. It depends on a static member function of the traits. In a future version this function will no longer be static, implying that the old functionality will no longer be supported.
|
||||
- Introduced functionality that approximates circular segments with polylines. (This is used to draw conic curves.)
|
||||
|
||||
- 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.
|
||||
### [Polygon Mesh Processing](https://doc.cgal.org/5.6/Manual/packages.html#PkgPolygonMeshProcessing)
|
||||
|
||||
### [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 functions [`CGAL::Polygon_mesh_processing::region_growing_of_planes_on_faces()`](https://doc.cgal.org/5.6/Polygon_mesh_processing/group__PkgPolygonMeshProcessingRef.html#ga50dcd2f6295f584d2e378b57290ae2af) and [`CGAL::Polygon_mesh_processing::detect_corners_of_regions()`](https://doc.cgal.org/5.6/Polygon_mesh_processing/group__PkgPolygonMeshProcessingRef.html#gac8e445730d718a2fc49604e865017d2e), which enable partitioning a mesh into planar regions using the region growing algorithm from the [Shape Detection](https://doc.cgal.org/5.6/Manual/packages.html#PkgShapeDetection) package.
|
||||
|
||||
### [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.
|
||||
- Added the functions [`CGAL::Polygon_mesh_processing::remesh_planar_patches()`](https://doc.cgal.org/5.6/Polygon_mesh_processing/group__PMP__meshing__grp.html#ga7fca6fa2db94560ab6d32e6a77fc35b6) and [`CGAL::Polygon_mesh_processing::remesh_almost_planar_patches()`](https://doc.cgal.org/5.6/Polygon_mesh_processing/group__PMP__meshing__grp.html#ga0e6da479548199a5d82c3cf0ed36e8a0), which can be used to remesh patches of coplanar faces in a mesh.
|
||||
|
||||
### [Point Set Processing](https://doc.cgal.org/5.5/Manual/packages.html#PkgPointSetProcessing3)
|
||||
- Added the function [`CGAL::Polygon_mesh_processing::surface_Delaunay_remeshing()`](https://doc.cgal.org/5.6/Polygon_mesh_processing/group__PMP__meshing__grp.html#gaff62f9415d2fe96d1d3095351f156ced), which can be used to remesh a surface triangle mesh using the Delaunay refinement algorithm from the [3D Mesh Generation](https://doc.cgal.org/5.6/Manual/packages.html#PkgMesh3) package.
|
||||
|
||||
- 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.
|
||||
- Added the function [`CGAL::Polygon_mesh_processing::remove_almost_degenerate_faces()`](https://doc.cgal.org/5.6/Polygon_mesh_processing/group__PMP__geometric__repair__grp.html#ga48008d2b66de8a68a7068f29db15dad6), which can be used to remove badly shaped triangles faces in a mesh.
|
||||
|
||||
### [dD Spatial Searching](https://doc.cgal.org/5.5/Manual/packages.html#PkgSpatialSearchingD)
|
||||
- Added the functions [`CGAL::Polygon_mesh_processing::does_triangle_soup_self_intersect()`](https://doc.cgal.org/5.6/Polygon_mesh_processing/group__PMP__intersection__grp.html#ga4909920dc48b8285e69feb845feb1e53) and [`CGAL::Polygon_mesh_processing::triangle_soup_self_intersections()`](https://doc.cgal.org/5.6/Polygon_mesh_processing/group__PMP__intersection__grp.html#ga1c5fee17bd0d92d5a2fba77ed94d4b4d) to identify and report self-intersections in a triangle soup, similarly to existing functions on triangle meshes.
|
||||
|
||||
- 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.
|
||||
- Added the function [`CGAL::Polygon_mesh_processing::triangulate_polygons()`](https://doc.cgal.org/5.6/Polygon_mesh_processing/group__PMP__meshing__grp.html#ga8b7db6aa8c3e79526b594739ba926d82), which allows users to triangulate polygon soups.
|
||||
|
||||
### [CGAL and the Boost Graph Library (BGL)](https://doc.cgal.org/5.5/Manual/packages.html#PkgBGL)
|
||||
- Added a named parameter to [`CGAL::Polygon_mesh_processing::smooth_shape()`](https://doc.cgal.org/5.6/Polygon_mesh_processing/group__PMP__meshing__grp.html#ga57fa999abe8dc557003482444df2a189) to disable the scaling, which otherwise aims to compensate volume loss during smoothing.
|
||||
|
||||
- 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.
|
||||
- Deprecated the overloads of functions [`CGAL::Polygon_mesh_processing::triangulate_hole()`](https://doc.cgal.org/5.6/Polygon_mesh_processing/group__PMP__hole__filling__grp.html#ga3abdf2d0558822e85f060966b69cae98), [`CGAL::Polygon_mesh_processing::triangulate_and_refine_hole()`](https://doc.cgal.org/5.6/Polygon_mesh_processing/group__PMP__hole__filling__grp.html#ga9868fac4d9dca77462ad7828bc99d8a1), and [`CGAL::Polygon_mesh_processing::triangulate_refine_and_fair_hole()`](https://doc.cgal.org/5.6/Polygon_mesh_processing/group__PMP__hole__filling__grp.html#ga18eac756a8f8e5d5f73e645fd4e26cad) which have output iterators for vertices and faces as parameter. They are replaced by overloads with two additional named parameters.
|
||||
|
||||
### [2D Convex Hulls](https://doc.cgal.org/5.6/Manual/packages.html#PkgConvexHull2)
|
||||
|
||||
- **Breaking change**: The concept [`ConvexHullTraits_2`](https://doc.cgal.org/5.6/Convex_hull_2/classConvexHullTraits__2.html) no longer requires the functor `Less_signed_distance_to_line_2`, but requires the functor `Compare_signed_distance_to_line_2` instead.
|
||||
- The long-deprecated classes `Convex_hull_projective_xy_traits_2`, `Convex_hull_projective_xz_traits_2`, and `Convex_hull_projective_yz_traits_2` have been removed. Users should use [`Projection_traits_xy_3`](https://doc.cgal.org/5.6/Kernel_23/classCGAL_1_1Projection__traits__xy__3.html), [`Projection_traits_xz_3`](https://doc.cgal.org/5.6/Kernel_23/classCGAL_1_1Projection__traits__xz__3.html), and [`Projection_traits_yz_3`](https://doc.cgal.org/5.6/Kernel_23/classCGAL_1_1Projection__traits__yz__3.html) instead.
|
||||
|
||||
### [2D Triangulations](https://doc.cgal.org/5.6/Manual/packages.html#PkgTriangulation2)
|
||||
|
||||
- Added the function [`CGAL::mark_domain_in_triangulation()`](https://doc.cgal.org/5.6/Triangulation_2/group__PkgTriangulation2Miscellaneous.html#ga0409755d0eb89100810230443a85e7eb) to mark faces connected with non-constrained edges as inside of the domain based on the nesting level.
|
||||
|
||||
### [2D Conforming Triangulations and Meshes](https://doc.cgal.org/5.6/Manual/packages.html#PkgMesh2)
|
||||
|
||||
- Added new overloads to the function [`write_VTU()`](https://doc.cgal.org/5.6/Mesh_2/group__PkgMesh2IO.html), with property maps for specifying the domain.
|
||||
- Deprecated usage of boost parameters in favor of function named parameters in [`CGAL::lloyd_optimize_mesh_2()`](https://doc.cgal.org/5.6/Mesh_2/group__PkgMesh2Functions.html#gafeaf59d3fa014da287f8514913b38d05).
|
||||
- Deprecated two overloads of the function [`refine_Delaunay_mesh()`](https://doc.cgal.org/5.6/Mesh_2/group__PkgMesh2Functions.html), and replaced them with versions using function named parameters.
|
||||
|
||||
### [2D Hyperbolic Triangulations](https://doc.cgal.org/5.6/Manual/packages.html#PkgHyperbolicTriangulation2)
|
||||
|
||||
- **Breaking change**: the concept [`HyperbolicTriangulationFaceBase_2`](https://doc.cgal.org/5.6/Hyperbolic_triangulation_2/classHyperbolicTriangulationFaceBase__2.html) has been modified to better reflect the triangulation's requirements and avoid a conflict with the requirements described by the concept `TriangulationDataStructure_2::Face`. The model [`CGAL::Hyperbolic_triangulation_face_base_2`](https://doc.cgal.org/5.6/Hyperbolic_triangulation_2/classCGAL_1_1Hyperbolic__triangulation__face__base__2.html) has been adapted correspondingly.
|
||||
|
||||
### [3D Simplicial Mesh Data Structure](https://doc.cgal.org/5.6/Manual/packages.html#PkgSMDS3) (new package)
|
||||
|
||||
- This new package wraps all the existing code that deals with a [`MeshComplex_3InTriangulation_3`](https://doc.cgal.org/5.6/SMDS_3/classMeshComplex__3InTriangulation__3.html) to describe 3D simplicial meshes, and makes the data structure independent from the [tetrahedral mesh generation](https://doc.cgal.org/5.6/Manual/packages.html#PkgMesh3) package.
|
||||
|
||||
### [Tetrahedral Remeshing](https://doc.cgal.org/5.6/Manual/packages.html#PkgTetrahedralRemeshing)
|
||||
- **Breaking change**: The template parameters of [`CGAL::Tetrahedral_remeshing::Remeshing_vertex_base_3`](https://doc.cgal.org/5.6/Tetrahedral_remeshing/group__PkgTetrahedralRemeshingClasses.html#ga7ef4f8c0c1ed715c34389ea4ee851a92) and [`CGAL::Tetrahedral_remeshing::Remeshing_cell_base_3`](https://doc.cgal.org/5.6/Tetrahedral_remeshing/classCGAL_1_1Tetrahedral__remeshing_1_1Remeshing__cell__base__3.html) have been modified.
|
||||
|
||||
### [3D Mesh Generation](https://doc.cgal.org/5.6/Manual/packages.html#PkgMesh3)
|
||||
|
||||
- Added two new named parameters to the named constructor [`CGAL::create_labeled_image_mesh_domain()`](https://doc.cgal.org/5.6/Mesh_3/classCGAL_1_1Labeled__mesh__domain__3.html#aec3f58e9883a8036a1b3e379df7d8fa9) for automatic detection and protection of 1D-curves that lie at the intersection of three or more subdomains extracted from labeled images.
|
||||
- Added [`CGAL::Sizing_field_with_aabb_tree`](https://doc.cgal.org/5.6/Mesh_3/structCGAL_1_1Sizing__field__with__aabb__tree.html), a geometry-aware sizing field for feature edges in polyhedral domains.
|
||||
- Added new meshing criterion [`edge_min_size`](https://doc.cgal.org/5.6/Mesh_3/classCGAL_1_1Mesh__criteria__3.html#a5f1c2649cb7ea346a3b6a2a8724b4df1) to avoid subdividing sharp edges that are shorter than a prescribed size bound.
|
||||
- Added new meshing criteria [`facet_min_size`](https://doc.cgal.org/5.6/Mesh_3/classCGAL_1_1Mesh__criteria__3.html#a5f1c2649cb7ea346a3b6a2a8724b4df1) and [`cell_min_size`](https://doc.cgal.org/5.6/Mesh_3/classCGAL_1_1Mesh__criteria__3.html#a5f1c2649cb7ea346a3b6a2a8724b4df1) to prevent Delaunay refinement from creating simplices smaller than a prescribed bound.
|
||||
- Deprecated usage of boost parameters in favor of function named parameters.
|
||||
|
||||
### [3D Periodic Mesh Generation](https://doc.cgal.org/5.6/Manual/packages.html#PkgPeriodic3Mesh3)
|
||||
|
||||
- Periodic Mesh Generation now supports non-cubic domains.
|
||||
- Deprecated usage of boost parameters in favor of function named parameters.
|
||||
|
||||
### [Surface Mesh Simplification](https://doc.cgal.org/5.6/Manual/packages.html#PkgSurfaceMeshSimplification)
|
||||
- The stop predicates [`Count_stop_predicate`](https://doc.cgal.org/5.6/Surface_mesh_simplification/classCGAL_1_1Surface__mesh__simplification_1_1Count__stop__predicate.html) and [`Count_ratio_stop_predicate`](https://doc.cgal.org/5.6/Surface_mesh_simplification/classCGAL_1_1Surface__mesh__simplification_1_1Count__ratio__stop__predicate.html) are renamed to [`Edge_count_stop_predicate`](https://doc.cgal.org/5.6/Surface_mesh_simplification/classCGAL_1_1Surface__mesh__simplification_1_1Edge__count__stop__predicate.html) and [`Edge_count_ratio_stop_predicate`](https://doc.cgal.org/5.6/Surface_mesh_simplification/classCGAL_1_1Surface__mesh__simplification_1_1Edge__count__ratio__stop__predicate.html). Older versions have been deprecated.
|
||||
- Introduced [`Face_count_stop_predicate`](https://doc.cgal.org/5.6/Surface_mesh_simplification/classCGAL_1_1Surface__mesh__simplification_1_1Face__count__stop__predicate.html) and [`Face_count_ratio_stop_predicate`](https://doc.cgal.org/5.6/Surface_mesh_simplification/classCGAL_1_1Surface__mesh__simplification_1_1Face__count__ratio__stop__predicate.html), which can be used to stop the simplification algorithm based on a desired number of faces in the output, or a ratio between input and output face numbers.
|
||||
|
||||
### [2D Regularized Boolean Set Operations](https://doc.cgal.org/5.6/Manual/packages.html#PkgBooleanSetOperations2)
|
||||
- Exposed all required member functions of the [`GeneralPolygonWithHoles_2`](https://doc.cgal.org/5.6/Polygon/classGeneralPolygonWithHoles__2.html) concept (e.g., [`clear_outer_boundary()`](https://doc.cgal.org/5.6/Polygon/classGeneralPolygonWithHoles__2.html#a9f5f035047505a2ccab3e68770f51bc6), [`clear_holes()`](https://cgal.geometryfactory.com/CGAL/doc/master/Polygon/classGeneralPolygonWithHoles__2.html#a2a507be648f127ac605da8c670ea2580), and [`clear()`](https://doc.cgal.org/5.6/Polygon/classGeneralPolygonWithHoles__2.html#a2ca4d9b43cc9216c1b2cdb080a915944) ).
|
||||
|
||||
### Known Bug
|
||||
|
||||
- MSVC 2015 is still supported by this version of CGAL, but the feature _Segment Cell Iterator_ of the class [`CGAL::Triangulation_3`](https://doc.cgal.org/5.6/Triangulation_3/classCGAL_1_1Triangulation__3.html) does not compile with MSVC 2015.
|
||||
|
|
|
|||
|
|
@ -1,130 +1,177 @@
|
|||
Subject: CGAL 5.5 Released, Computational Geometry Algorithms Library
|
||||
Subject: CGAL 5.6 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.5 of
|
||||
The CGAL Open Source Project is pleased to announce the release 5.6 of
|
||||
CGAL, the Computational Geometry Algorithms Library.
|
||||
|
||||
|
||||
Besides fixes and general enhancement to existing packages, the
|
||||
following has changed since CGAL 5.4:
|
||||
following has changed since CGAL 5.5:
|
||||
|
||||
3D Alpha Wrapping (new package)
|
||||
General Changes
|
||||
|
||||
- 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.
|
||||
- Breaking change: Package-specific assertions, preconditions, and
|
||||
postconditions (such as CGAL_triangulation_assertion) have been
|
||||
removed. Corresponding CGAL-wide versions (such as CGAL_assertion)
|
||||
should be used instead.
|
||||
|
||||
See also https://www.cgal.org/2022/05/18/alpha_wrap/.
|
||||
Shape Detection (major changes)
|
||||
|
||||
2D Straight Skeleton and Polygon Offsetting (breaking change)
|
||||
- Breaking change: The region growing part of the package have been
|
||||
reworked to fix design issues introduced with the handling of
|
||||
FaceGraph models. In particular, the notion of Item has been
|
||||
introduced to reference an element in the input range of elements.
|
||||
Region maps now operates on Item and no longer on the value type of
|
||||
the input range.
|
||||
- Breaking change: The method update() in the concept RegionType now
|
||||
returns a Boolean instead of void, that is used inside the class
|
||||
Region_growing for detecting if the input conditions for the new
|
||||
region are satisfied. This change affects only user-defined types of
|
||||
regions.
|
||||
- Breaking change: The constructors of all models used together with
|
||||
the region growing algorithm now enable users to provide parameters
|
||||
through the named parameters mechanism.
|
||||
- All fitting classes in the region growing framework are now using
|
||||
better versions of the region conditions, more precise and faster,
|
||||
including the correct normal orientations.
|
||||
- Added new models of the concept RegionType for getting linear
|
||||
regions in a set of 2D and 3D segments and on 2D and 3D polylines.
|
||||
- Added the class Polyline_graph for extracting a set of polylines
|
||||
from a face graph, which splits this graph into a set of
|
||||
user-defined regions.
|
||||
- Added new shapes to the Region Growing algorithm on a point set:
|
||||
circles in 2D, spheres in 3D, and cylinders in 3D.
|
||||
|
||||
- Fix the output of the function
|
||||
CGAL::create_exterior_skeleton_and_offset_polygons_with_holes_2() to
|
||||
not take into account the offset of the outer frame.
|
||||
- Fix the computation of the exterior offset of a polygon with holes
|
||||
that was not computing the offset of the holes
|
||||
2D Straight Skeleton and Polygon Offsetting (major changes)
|
||||
|
||||
3D Convex Hulls
|
||||
- Added weighted straight skeletons: weighted straight skeletons are a
|
||||
generalization of straight skeletons. Contour edges are assigned a
|
||||
positive weight, which can be understood as assigning a speed to the
|
||||
wavefront spawned from the contour edge.
|
||||
- Added straight skeleton extrusion: this CGAL package now implements
|
||||
the extrusion of weighted straight skeletons of polygons with holes.
|
||||
The output is a closed, combinatorially 2-manifold surface triangle
|
||||
mesh. See also the news entry.
|
||||
|
||||
- Added an overload of the function CGAL::convex_hull_3(), which
|
||||
writes the result in an indexed triangle set.
|
||||
Combinatorial Maps, Generalized Maps, and Linear Cell Complex
|
||||
|
||||
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).
|
||||
- Added a version that uses indices instead of handles as dart and
|
||||
attribute descriptors. As the indices are integers convertible from
|
||||
and to std::size_t, they can be used as index into vectors which
|
||||
store properties. To use the index version, Use_index must be
|
||||
defined and be equal to CGAL::Tag_true in the item class.
|
||||
|
||||
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.
|
||||
- Introduced an overload function template, namely draw(arr), that
|
||||
renders arrangements based on the Basic_viewer_qt class template. As
|
||||
of now, only 2D arrangements on the plane induced by (i)
|
||||
segments, (ii) conics, and (iii) circular arcs or (linear) segments
|
||||
are supported.
|
||||
- Improved the traits class template that handles conics, namely
|
||||
Arr_conic_traits_2. This includes the following: 1. Fixed a couple
|
||||
of bugs and slightly optimized some functions. 2. Introduced
|
||||
functionality that approximates conics with polylines. (This is used
|
||||
to draw conic curves.) 3. Breaking change: Changed the interface to
|
||||
generate conic curves. In the past, curves where generated directly
|
||||
using the constructors of the conic and x-monotone conic constructs.
|
||||
Now, they are constructed via function objects provided by the
|
||||
traits. This eliminates the constructions of temporary kernels. The
|
||||
old functionality is obsolete, but still supported for a limited
|
||||
number of versions. It depends on a static member function of the
|
||||
traits. In a future version this function will no longer be static,
|
||||
implying that the old functionality will no longer be supported.
|
||||
- Introduced functionality that approximates circular segments with
|
||||
polylines. (This is used to draw conic curves.)
|
||||
|
||||
Polygon Mesh Processing
|
||||
|
||||
- Added functions
|
||||
CGAL::Polygon_mesh_processing::region_growing_of_planes_on_faces()
|
||||
and CGAL::Polygon_mesh_processing::detect_corners_of_regions(),
|
||||
which enable partitioning a mesh into planar regions using the
|
||||
region growing algorithm from the Shape Detection package.
|
||||
|
||||
- Added the functions
|
||||
CGAL::Polygon_mesh_processing::remesh_planar_patches() and
|
||||
CGAL::Polygon_mesh_processing::remesh_almost_planar_patches(), which
|
||||
can be used to remesh patches of coplanar faces in a mesh.
|
||||
|
||||
- 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.
|
||||
CGAL::Polygon_mesh_processing::surface_Delaunay_remeshing(), which
|
||||
can be used to remesh a surface triangle mesh using the Delaunay
|
||||
refinement algorithm from the 3D Mesh Generation package.
|
||||
|
||||
- Added the function
|
||||
CGAL::Polygon_mesh_processing::compatible_orientations(), which
|
||||
enables to retrieve the (in)compatibility of orientations of faces
|
||||
from different connected components.
|
||||
CGAL::Polygon_mesh_processing::remove_almost_degenerate_faces(),
|
||||
which can be used to remove badly shaped triangles faces in a mesh.
|
||||
|
||||
- Added the functions
|
||||
CGAL::Polygon_mesh_processing::does_triangle_soup_self_intersect()
|
||||
and
|
||||
CGAL::Polygon_mesh_processing::triangle_soup_self_intersections() to
|
||||
identify and report self-intersections in a triangle soup, similarly
|
||||
to existing functions on triangle meshes.
|
||||
|
||||
- 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.
|
||||
CGAL::Polygon_mesh_processing::triangulate_polygons(), which allows
|
||||
users to triangulate polygon soups.
|
||||
|
||||
Surface Mesh Simplification
|
||||
- Added a named parameter to
|
||||
CGAL::Polygon_mesh_processing::smooth_shape() to disable the
|
||||
scaling, which otherwise aims to compensate volume loss during
|
||||
smoothing.
|
||||
|
||||
- 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.
|
||||
- Deprecated the overloads of functions
|
||||
CGAL::Polygon_mesh_processing::triangulate_hole(),
|
||||
CGAL::Polygon_mesh_processing::triangulate_and_refine_hole(), and
|
||||
CGAL::Polygon_mesh_processing::triangulate_refine_and_fair_hole()
|
||||
which have output iterators for vertices and faces as parameter.
|
||||
They are replaced by overloads with two additional named parameters.
|
||||
|
||||
|
||||
See https://www.cgal.org/2022/07/15/cgal55/ for a
|
||||
complete list of changes.
|
||||
Tetrahedral Remeshing
|
||||
|
||||
- Breaking change: The template parameters of
|
||||
CGAL::Tetrahedral_remeshing::Remeshing_vertex_base_3 and
|
||||
CGAL::Tetrahedral_remeshing::Remeshing_cell_base_3 have been
|
||||
modified.
|
||||
|
||||
|
||||
The same day, we also published CGAL-5.4.2 is the second bug-fix release for
|
||||
CGAL-5.4. See https://www.cgal.org/2022/07/15/cgal5.4.2/.
|
||||
3D Mesh Generation
|
||||
|
||||
- Added two new named parameters to the named constructor
|
||||
CGAL::create_labeled_image_mesh_domain() for automatic detection and
|
||||
protection of 1D-curves that lie at the intersection of three or
|
||||
more subdomains extracted from labeled images.
|
||||
- Added CGAL::Sizing_field_with_aabb_tree, a geometry-aware sizing
|
||||
field for feature edges in polyhedral domains.
|
||||
- Added new meshing criterion edge_min_size to avoid subdividing sharp
|
||||
edges that are shorter than a prescribed size bound.
|
||||
- Added new meshing criteria facet_min_size and cell_min_size to
|
||||
prevent Delaunay refinement from creating simplices smaller than a
|
||||
prescribed bound.
|
||||
- Deprecated usage of boost parameters in favor of function named
|
||||
parameters.
|
||||
|
||||
|
||||
Known Bug
|
||||
|
||||
- MSVC 2015 is still supported by this version of CGAL, but the
|
||||
feature Segment Cell Iterator of the class CGAL::Triangulation_3
|
||||
does not compile with MSVC 2015.
|
||||
|
||||
|
||||
See https://www.cgal.org/2023/07/28/cgal56/ for a complete list of changes.
|
||||
|
||||
|
||||
The development of CGAL will then now on the future CGAL-6.0 (planned
|
||||
for December 2023), with bug-fixes regularly backported to the branches
|
||||
for CGAL-5.5.x and CGAL-5.6.x.
|
||||
|
||||
CGAL-6.0 will be the first release of CGAL requiring C++17 or later. It
|
||||
will also support Qt6.
|
||||
|
||||
|
||||
The CGAL project is a collaborative effort to develop a robust,
|
||||
|
|
|
|||
Loading…
Reference in New Issue