Releases: CGAL/cgal
CGAL-5.6-beta1
The CGAL Open Source Project is pleased to announce the release 5.6 Beta 1 of CGAL, the Computational Geometry Algorithms Library.
CGAL version 5.6 Beta 1 is a public testing release. It should provide a solid ground to report bugs that need to be tackled before the release of the final version of CGAL 5.6 in July 2023.
Besides fixes and general enhancement to existing packages, the following has changed since CGAL 5.5:
General Changes
- Breaking change: Package-specific assertions, preconditions, and postconditions (such as
CGAL_triangulation_assertion
) have been removed. Corresponding CGAL-wide versions (such asCGAL_assertion
) should be used instead.
Shape Detection (major changes)
- 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 ofItem
has been introduced to reference an element in the input range of elements. Region maps now operates onItem
and no longer on the value type of the input range. - Breaking change: The method
update()
in the conceptRegionType
now returns aBoolean
instead ofvoid
, that is used inside the classRegion_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.
2D Straight Skeleton and Polygon Offsetting (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.
2D and 3D Linear Geometry Kernel
- Added the functor
CompareAngle_3
to the conceptKernel
to compare an angle defined by three points to the cosinus of another angle.
Combinatorial Maps, Generalized Maps, and Linear Cell Complex
- 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 toCGAL::Tag_true
in the item class.
Linear Cell Complex
- Added the class
Linear_cell_complex_incremental_builder_3
.
2D Arrangements
- Introduced an overload function template, namely
draw(arr)
, that renders arrangements based on theBasic_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()
andCGAL::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()
andCGAL::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::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::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()
andCGAL::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::triangulate_polygons()
, which allows users to triangulate polygon soups. -
Added a named parameter to
CGAL::Polygon_mesh_processing::smooth_shape()
to disable the scaling, which otherwise aims to compensate volume loss during smoothing. -
Deprecated the overloads of functions
CGAL::Polygon_mesh_processing::triangulate_hole()
,CGAL::Polygon_mesh_processing::triangulate_and_refine_hole()
, andCGAL::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.
2D Convex Hulls
- Breaking change: The concept
ConvexHullTraits_2
no longer requires the functorLess_signed_distance_to_line_2
, but requires the functorCompare_signed_distance_to_line_2
instead. - The long-deprecated classes
Convex_hull_projective_xy_traits_2
,Convex_hull_projective_xz_traits_2
, andConvex_hull_projective_yz_traits_2
have been removed. Users should useProjection_traits_xy_3
, [`Project...
CGAL 5.5.2
CGAL-5.5.2 is a bug-fix release.
See on Github the list of bugs that were solved since CGAL-5.5.1.
CGAL 5.4.4
CGAL-5.4.4 is a bug-fix release.
See on Github the list of bugs that were solved since CGAL-5.4.3.
CGAL 5.5.1
CGAL-5.5.1 is a bug-fix release.
See on Github the list of bugs that were solved since CGAL-5.5.
CGAL 5.4.3
CGAL-5.4.3 is a bug-fix release.
See on Github the list of bugs that were solved since CGAL-5.4.2.
CGAL-5.5
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.4:
3D Alpha Wrapping (new package)
-
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.See also the announcement page.
2D Straight Skeleton and Polygon Offsetting (breaking change)
- 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
3D Convex Hulls
- 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 typePolygon_2
instead ofGeneral_polygon_2
.
2D Regularized Boolean Set-Operations
- The concept
GeneralPolygonSetTraits_2
now requires the nested typeConstruct_polygon_with_holes_2
instead ofConstruct_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
, andcompare_y_at_x_left
function objects of the traits class templateArr_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 functiontriangulate_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
, andGarlandHeckbert_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 togrid_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 is1
to keep the previous behavior as default.
dD Spatial Searching
- Added the member function
write_graphviz()
to the classKd_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 classFace_filtered_graph
, which toggles the selected status of a graph: selected faces are deselected, and unselected faces are selected.
CGAL-5.4.2
CGAL-5.4.2 is a bug-fix release.
See on Github the list of bugs that were solved since CGAL-5.4.1.
CGAL-5.4.1
CGAL-5.4.1 is a bug-fix release.
See on Github the list of bugs that were solved since CGAL-5.4.
CGAL-5.3.2
CGAL-5.3.2 is a bug-fix release.
See on Github the list of bugs that were solved since CGAL-5.3.1.
CGAL-5.5-beta1
The CGAL Open Source Project is pleased to announce the release 5.5 Beta 1 of CGAL, the Computational Geometry Algorithms Library.
CGAL version 5.5 Beta 1 is a public testing release. It should provide a solid ground to report bugs that need to be tackled before the release of the final version of CGAL 5.5 in July 2022.
Besides fixes and general enhancement to existing packages, the following has changed since CGAL 5.4:
3D Alpha Wrapping (new package)
-
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.See also the announcement page.
3D Convex Hulls
- 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 typePolygon_2
instead ofGeneral_polygon_2
.
2D Regularized Boolean Set-Operations
- The concept
GeneralPolygonSetTraits_2
now requires the nested typeConstruct_polygon_with_holes_2
instead ofConstruct_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
, andcompare_y_at_x_left
function objects of the traits class templateArr_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 functiontriangulate_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
, andGarlandHeckbert_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 togrid_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 is1
to keep the previous behavior as default.
dD Spatial Searching
- Added the member function
write_graphviz()
to the classKd_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 classFace_filtered_graph
, which toggles the selected status of a graph: selected faces are deselected, and unselected faces are selected.