Releases: CGAL/cgal
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.
CGAL-5.4
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.3:
General changes
-
Added the cmake target
CGAL::CGAL_Basic_viewer
to ease the compilation of programs using the basic viewer-based functionCGAL::draw()
. This target will define the macro and link withCGAL_Qt5
target when linked with it. -
The kernel providing exact constructions and exact predicates (
CGAL::Exact_predicates_exact_constructions_kernel
) is now thread-safe. See changes in2D and 3D Linear Geometry Kernel
for 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.
Shape Regularization (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.
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.
2D Generalized Barycentric Coordinates (major changes)
- Breaking change: The headers
Segment_coordinates_2.h
andTriangle_coordinates_2.h
are renamed tosegment_coordinates_2.h
andtriangle_coordinates_2.h
. - The classes
Segment_coordinates_2
andTriangle_coordinates_2
are deprecated. The free functionscompute_segment_coordinates_2()
andcompute_triangle_coordinates_2()
are deprecated as well. Instead, the free functionssegment_coordinates_2()
andtriangle_coordinates_2()
should be used. - The enums
Query_point_location
andType_of_algorithm
are deprecated. Instead, the enumComputation_policy_2
should be used. - The classes
Wachspress_2
,Discrete_harmonic_2
,Mean_value_2
, andGeneralized_barycentric_coordinates_2
are deprecated. As consequence, the conceptBarycentricCoordinates_2
is deprecated as well. Instead, the classesWachspress_coordinates_2
,Discrete_harmonic_coordinates_2
, andMean_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 calledDelaunay_domain_2
, which is based on the Mesh 2 package. A model of this concept is required to useHarmonic_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.
2D and 3D Linear Geometry Kernel
-
Most operations on
CGAL::Exact_predicates_exact_constructions_kernel
objects are now thread-safe ifCGAL::Exact_rational
ismpq_class
(fromGMPXX
),boost::multiprecision::mpq_rational
orCGAL::Quotient<CGAL::MP_Float>
. 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 withCGAL_HAS_NO_THREADS
. -
Added documentation for the class
Projection_traits_3
, which enables the use of 2D algorithms on the projections of 3D data onto an arbitrary plane. -
Added
construct_centroid_2_object()
andcompute_determinant_2_object()
inProjection_traits_xy_3
,Projection_traits_xz_3
, andProjection_traits_yz_3
classes. -
Added the functor
NonZeroCoordinateIndex_3
to the conceptKernel
withint operator()(Vector_3)
which returns the index of any coordinate of the vector different from zero, or-1
.
dD Kernel
- Most operations on
Epeck_d
objects are now thread-safe, see 2D and 3D Linear Geometry Kernel for details.
2D Arrangements
-
Breaking Change: The traits function objects
Compare_x_at_limit_2
andCompare_x_near_limit_2
are renamed toCompare_x_on_boundary_2
andCompare_x_near_boundary_2
, respectively. -
A new hierarchy of traits concepts 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.
-
A new geometric traits,
Arr_geodesic_arc_on_sphere_traits_2
has been introduced. It handles arcs of great circles embedded on the unit sphere.
2D Regularized Boolean Set-Operations
- Added an extra parameter (
UsePolylines
) to all free functions ( [`complement()...
CGAL-5.4-beta1
The CGAL Open Source Project is pleased to announce the release 5.4 Beta 1 of CGAL, the Computational Geometry Algorithms Library.
CGAL version 5.4 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.4 in January 2022.
Besides fixes and general enhancement to existing packages, the following has changed since CGAL 5.3:
General changes
-
Added the cmake target
CGAL::CGAL_Basic_viewer
to ease the compilation of programs using the basic viewer-based functionCGAL::draw()
. This target will define the macro and link withCGAL_Qt5
target when linked with it. -
The kernel providing exact constructions and exact predicates (
CGAL::Exact_predicates_exact_constructions_kernel
) is now thread-safe. See changes in2D and 3D Linear Geometry Kernel
for more details.
Shape Regularization (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.
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.
2D Generalized Barycentric Coordinates (major changes)
- Breaking change: The headers
Segment_coordinates_2.h
andTriangle_coordinates_2.h
are renamed tosegment_coordinates_2.h
andtriangle_coordinates_2.h
. - The classes
Segment_coordinates_2
andTriangle_coordinates_2
are deprecated. The free functionscompute_segment_coordinates_2()
andcompute_triangle_coordinates_2()
are deprecated as well. Instead, the free functionssegment_coordinates_2()
andtriangle_coordinates_2()
should be used. - The enums
Query_point_location
andType_of_algorithm
are deprecated. Instead, the enumComputation_policy_2
should be used. - The classes
Wachspress_2
,Discrete_harmonic_2
,Mean_value_2
, andGeneralized_barycentric_coordinates_2
are deprecated. As consequence, the conceptBarycentricCoordinates_2
is deprecated as well. Instead, the classesWachspress_coordinates_2
,Discrete_harmonic_coordinates_2
, andMean_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 calledDelaunay_domain_2
, which is based on the Mesh 2 package. A model of this concept is required to useHarmonic_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.
2D and 3D Linear Geometry Kernel
-
Most operations on
CGAL::Exact_predicates_exact_constructions_kernel
objects are now thread-safe ifCGAL::Exact_rational
ismpq_class
(fromGMPXX
),boost::multiprecision::mpq_rational
orCGAL::Quotient<CGAL::MP_Float>
. 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 withCGAL_HAS_NO_THREADS
. -
Added documentation for the class
Projection_traits_3
, which enables the use of 2D algorithms on the projections of 3D data onto an arbitrary plane. -
Added
construct_centroid_2_object()
andcompute_determinant_2_object()
inProjection_traits_xy_3
,Projection_traits_xz_3
, andProjection_traits_yz_3
classes. -
Added the functor
NonZeroCoordinateIndex_3
to the conceptKernel
withint operator()(Vector_3)
which returns the index of any coordinate of the vector different from zero, or-1
.
dD Kernel
- Most operations on
Epeck_d
objects are now thread-safe, see 2D and 3D Linear Geometry Kernel for details.
2D Arrangements
-
Breaking Change: The traits function objects
Compare_x_at_limit_2
andCompare_x_near_limit_2
are renamed toCompare_x_on_boundary_2
andCompare_x_near_boundary_2
, respectively. -
A new hierarchy of traits concepts 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.
-
A new geometric traits,
Arr_geodesic_arc_on_sphere_traits_2
has been introduced. It handles arcs of great circles embedded on the unit sphere.
2D Regularized Boolean Set-Operations
- Added an extra parameter (
UsePolylines
) to all free functions ( [`comp...
CGAL-5.3.1
CGAL-5.3.1 is a bug-fix release.
See on Github the list of bugs that were solved since CGAL-5.3.