Releases: CGAL/cgal
CGAL 5.6.2
CGAL-5.6.2 is a bug-fix release.
See on Github the list of bugs that were solved since CGAL-5.6.1.
CGAL 5.5.5
CGAL-5.5.5 is a bug-fix release.
See on Github the list of bugs that were solved since CGAL-5.5.4.
CGAL 6.0.1
CGAL-6.0.1 is a bug-fix release.
See on Github the list of bugs that were solved since CGAL-6.0.
Full Changelog: v6.0...v6.0.1
CGAL 6.0
The CGAL Open Source Project is pleased to announce the release 6.0 of CGAL, the Computational Geometry Algorithms Library.
Besides fixes and general enhancement to existing packages, the following has changed since CGAL 5.6:
General Changes
-
CGAL 6.0 is the first release of CGAL that requires a C++ compiler with the support of C++17 or later. The new list of supported compilers is:
- Visual C++ 15.9, 16.10, 17.0 (from Visual Studio 2017, 2019 and 2022) or later
- Gnu g++ 11.4.0 or later (on Linux or macOS)
- LLVM Clang version 15.0.7 or later (on Linux)
- Apple Clang compiler versions 10.0.1, 12.0.5, and 15.0.0 (on macOS)
-
The minimal supported version of Boost is now 1.72.0.
-
GMP/MPFR are no longer mandatory to use CGAL, Boost.Multiprecision. can be used instead.
-
The CGAL
Core
library is no longer based on GMP, but on Boost.Multiprecision. Either GMP backend or Boost backend can be used. -
All demos are now based on Qt6.
-
Breaking change: The CMake file
UseCGAL.cmake
has been removed from CGAL. Usages of the CMake variables${CGAL_USE_FILE}
and${CGAL_LIBRARIES}
must be replaced by a link to the imported targetCGAL::CGAL
, for example:target_link_library(your_target PRIVATE CGAL::CGAL)
Kinetic Space Partition (new package)
- This package implements kinetic space partition: based on a set of planar input shapes, the bounding box of the input data is split into convex volumes. The complexity of the partition can be adjusted with a single parameter.
Kinetic Surface Reconstruction (new package)
- The package implements a piece-wise planar surface reconstruction pipeline from point clouds combining methods from the Shape Detection, Shape Regularization and Kinetic Shape Partition packages and graph-cut to reconstruct surfaces from point clouds.
Basic Viewer (new package)
- The basic viewer package provides interactive visualization for most CGAL packages, such as 2D Arrangements, 2D Regularized Boolean Set-Operations, Linear Cell Complex, 3D Boolean Operations on Nef Polyhedra, 2D Periodic Triangulations, 3D Point Set, 2D Polygons, 3D Polyhedral Surface, 2D Straight Skeleton and Polygon Offsetting, Surface Mesh, 2D Triangulations, 3D Triangulations, 2D Voronoi Diagrams, and more. The most simple use case of the basic viewer is the call of the global
CGAL::draw()
function. There is one suchdraw()
function for each CGAL package that has a basic viewer. Such a call opens an interactive window showing the given model and allowing to navigate in the scene, show or hide some specific cells, show the interior of the model if any, etc. TheBasic_viewer
is based on Qt6.
Polygon Repair (new package)
- This package provides algorithms to repair 2D polygons, polygons with holes, and multipolygons with holes, by selecting faces of the arrangement of the input using the odd-even heuristic.
2D and 3D Linear Geometry Kernel
- Breaking change: Replaced all instances of
boost::variant
withstd::variant
in the intersection functions. - Breaking change: Replaced all instances of
boost::optional
withstd::optional
in the intersection functions.
3D Polyhedral Surface
- The demo of this package, also known as “Polyhedron Demo” has been renamed “CGAL Lab” and moved to its own package (“Lab”).
2D and 3D Fast Intersection and Distance Computation (AABB Tree)
- The AABB tree can now be used with 2D or 3D primitives:
- The concepts
AABBGeomTraits
andAABBRayIntersectionGeomTraits
have been replaced byAABBGeomTraits_3
and byAABBRayIntersectionGeomTraits_3
, respectively. - The concepts
AABBGeomTraits_2
andAABBRayIntersectionGeomTraits_2
have been introduced, as the 2D counterparts. - The class
CGAL::AABB_traits
is deprecated and replaced byCGAL::AABB_traits_3
. - The class
CGAL::AABB_traits_2
is introduced as the 2D counterpart. - The class
CGAL::AABB_segment_primitive
has been deprecated and replaced by the classCGAL::AABB_segment_primitive_3
. - The class
CGAL::AABB_triangle_primitive
has been deprecated and replaced by the classCGAL::AABB_triangle_primitive_3
. - The following 2D primitive classes have been added:
CGAL::AABB_segment_primitive_2
,CGAL::AABB_polyline_segment_primitive_2
,CGAL::AABB_triangle_primitive_2
,CGAL::AABB_indexed_triangle_primitive_2
.
- The concepts
- Breaking change: The concept
AABBTraits
now refines the conceptSearchTraits
. - Breaking change: Replaced all instances of
boost::optional
withstd::optional
.
2D Arrangements
- Breaking change: Replaced all instances of
boost::variant
withstd::variant
. - Breaking change: The type of the result of point location queries has been changed to
std::variant
. Support for the old macroCGAL_ARR_POINT_LOCATION_VERSION
has been removed. - Breaking change: Eliminated the error-prone C-type casting that was used to define observers. In general, backward compatibility was maintained; however, the class template
CGAL::Arr_observer
has been replaced by an alias template. (The classCGAL::Arr_observer
was renamed toCGAL::Aos_observer
). - Introduced
Arr_dcel
, which essentially replaces the formerCGAL::Arr_default_dcel
. Backward compatibility was maintained by the introduction of the alias templateCGAL::Arr_default_dcel
.CGAL::Arr_dcel
, as opposed to the formerCGAL::Arr_default_dcel
is templated (in addition to the geometry traits) byVertex
,Halfedge
, andFace
template parameters, and they have default type values. All this enables the layered extension of DCEL records. - Fixed a bug in the zone construction code applied to arrangements of geodesic arcs on a sphere, when inserting an arc that lies on the identification curve.
- Introduced a new interactive program that demonstrates 2D arrangements embedded on the sphere called
earth
. The program (i) reads a database of all administrative boundaries of the countries in the world, (ii) displays the globe with all countries and land covered by water (which is land not covered by countries) on a window, and (ii) enables interaction with the user.
3D Envelopes
- Breaking change: [
Construct_projected_boundary_2
](https://d...
CGAL 6.0-beta1
The CGAL Open Source Project is pleased to announce the release 6.0 Beta 1 of CGAL, the Computational Geometry Algorithms Library.
CGAL version 6.0 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 6.0 in July 2024.
Besides fixes and general enhancement to existing packages, the following has changed since CGAL 5.6:
General Changes
- CGAL 6.0 is the first release of CGAL that requires a C++ compiler with the support of C++17 or later. The new list of supported compilers is:
- Visual C++ 15.9, 16.10, 17.0 (from Visual Studio 2017, 2019 and 2022) or later
- Gnu g++ 11.4.0 or later (on Linux or macOS)
- LLVM Clang version 15.0.7 or later (on Linux)
- Apple Clang compiler versions 10.0.1, 12.0.5, and 15.0.0 (on macOS)
- The minimal supported version of Boost is now 1.72.0.
- The CGAL
Core
library is no longer based on GMP, but on Boost.Multiprecision. Either GMP backend or Boost backend can be used. - All demos are now based on Qt6.
- Breaking change: The CMake file
UseCGAL.cmake
has been removed from CGAL. Usages of the CMake variables${CGAL_USE_FILE}
and${CGAL_LIBRARIES}
must be replaced by a link to the imported targetCGAL::CGAL
, for example:target_link_library(your_target PRIVATE CGAL::CGAL)
.
Kinetic Space Partition (new package)
- This package implements kinetic space partition: based on a set of planar input shapes, the bounding box of the input data is split into convex volumes. The complexity of the partition can be adjusted with a single parameter.
Kinetic Surface Reconstruction (new package)
- The package implements a piece-wise planar surface reconstruction pipeline from point clouds combining methods from the Shape Detection, Shape Regularization and Kinetic Shape Partition packages and graph-cut to reconstruct surfaces from point clouds.
Basic Viewer (new package)
- The basic viewer package provides interactive visualization for most CGAL packages, such as 2D Arrangements, 2D Regularized Boolean Set-Operations, Linear Cell Complex, 3D Boolean Operations on Nef Polyhedra, 2D Periodic Triangulations, 3D Point Set, 2D Polygons, 3D Polyhedral Surface, 2D Straight Skeleton and Polygon Offsetting, Surface Mesh, 2D Triangulations, 3D Triangulations, 2D Voronoi Diagrams, and more. The most simple use case of the basic viewer is the call of the global
CGAL::draw()
function. There is one suchdraw()
function for each CGAL package that has a basic viewer. Such a call opens an interactive window showing the given model and allowing to navigate in the scene, show or hide some specific cells, show the interior of the model if any, etc. TheBasic_viewer
is based on Qt6.
Polygon Repair (new package)
- This package provides algorithms to repair 2D polygons, polygons with holes, and multipolygons with holes, by selecting faces of the arrangement of the input using the odd-even heuristic.
2D and 3D Linear Geometry Kernel
- Breaking change: Replaced all instances of
boost::variant
withstd::variant
in the intersection functions. - Breaking change: Replaced all instances of
boost::optional
withstd::optional
in the intersection functions.
3D Polyhedral Surface
- The demo of this package, also known as “Polyhedron Demo” has been renamed “CGAL Lab” and moved to its own package (“Lab”).
2D and 3D Fast Intersection and Distance Computation (AABB Tree)
- The AABB tree can now be used with 2D or 3D primitives:
- The concepts
AABBGeomTraits
andAABBRayIntersectionGeomTraits
have been replaced byAABBGeomTraits_3
and byAABBRayIntersectionGeomTraits_3
, respectively. - The concepts
AABBGeomTraits_2
andAABBRayIntersectionGeomTraits_2
have been introduced, as the 2D counterparts. - The class
CGAL::AABB_traits
is deprecated and replaced byCGAL::AABB_traits_3
. - The class
CGAL::AABB_traits_2
is introduced as the 2D counterpart. - The class
CGAL::AABB_segment_primitive
has been deprecated and replaced by the classCGAL::AABB_segment_primitive_3
. - The class
CGAL::AABB_triangle_primitive
has been deprecated and replaced by the classCGAL::AABB_triangle_primitive_3
. - The following 2D primitive classes have been added:
CGAL::AABB_segment_primitive_2
,CGAL::AABB_polyline_segment_primitive_2
,CGAL::AABB_triangle_primitive_2
,CGAL::AABB_indexed_triangle_primitive_2
.
- The concepts
- Breaking change: The concept
AABBTraits
now refines the conceptSearchTraits
. - Breaking change: Replaced all instances of
boost::optional
withstd::optional
.
2D Arrangements
- Breaking change: Replaced all instances of
boost::variant
withstd::variant
. - Breaking change: The type of the result of point location queries has been changed to
std::variant
. Support for the old macroCGAL_ARR_POINT_LOCATION_VERSION
has been removed. - Breaking change: Eliminated the error-prone C-type casting that was used to define observers. In general, backward compatibility was maintained; however, the class template
CGAL::Arr_observer
has been replaced by an alias template. (The classCGAL::Arr_observer
was renamed toCGAL::Aos_observer
). - Introduced
Arr_dcel
, which essentially replaces the formerCGAL::Arr_default_dcel
. Backward compatibility was maintained by the introduction of the alias templateCGAL::Arr_default_dcel
.CGAL::Arr_dcel
, as opposed to the formerCGAL::Arr_default_dcel
is templated (in addition to the geometry traits) byVertex
,Halfedge
, andFace
template parameters, and they have default type values. All this enables the layered extension of DCEL records. - Fixed a bug in the zone construction code applied to arrangements of geodesic arcs on a sphere, when inserting an arc that lies on the identification curve.
- Introduced a new interactive program that demonstrates 2D arrangements embedded on the sphere called
earth
. The program (i) reads a database of all administrative boundaries of the countries in the world, (ii) displays the globe with all countries and land covered by water (which is land not covered by countries) on a window, and (ii) enables interaction with the user.
3D Envelopes
- Breaking change: [
Construct_projected_boundary_2
](https://...
CGAL 5.6.1
CGAL-5.6.1 is a bug-fix release.
See on Github the list of bugs that were solved since CGAL-5.6.
CGAL 5.5.4
CGAL-5.5.4 is a bug-fix release.
See on Github the list of bugs that were solved since CGAL-5.5.3.
CGAL 5.6
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.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
,Projection_traits_xz_3
, and [Projection_traits_yz_3
](https://doc.cgal.org/5.6/Kernel_23/classCGAL_1_1Projection__traits__yz_...
CGAL 5.5.3
CGAL-5.5.3 is a bug-fix release.
See on Github the list of bugs that were solved since CGAL-5.5.2.
CGAL 5.4.5
CGAL-5.4.5 is a bug-fix release.
See on Github the list of bugs that were solved since CGAL-5.4.4.