Releases: CGAL/cgal
Release list
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
Corelibrary 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.cmakehas 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_vieweris 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::variantwithstd::variantin the intersection functions. - Breaking change: Replaced all instances of
boost::optionalwithstd::optionalin 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
AABBGeomTraitsandAABBRayIntersectionGeomTraitshave been replaced byAABBGeomTraits_3and byAABBRayIntersectionGeomTraits_3, respectively. - The concepts
AABBGeomTraits_2andAABBRayIntersectionGeomTraits_2have been introduced, as the 2D counterparts. - The class
CGAL::AABB_traitsis deprecated and replaced byCGAL::AABB_traits_3. - The class
CGAL::AABB_traits_2is introduced as the 2D counterpart. - The class
CGAL::AABB_segment_primitivehas been deprecated and replaced by the classCGAL::AABB_segment_primitive_3. - The class
CGAL::AABB_triangle_primitivehas 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
AABBTraitsnow refines the conceptSearchTraits. - Breaking change: Replaced all instances of
boost::optionalwithstd::optional.
2D Arrangements
- Breaking change: Replaced all instances of
boost::variantwithstd::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_VERSIONhas 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_observerhas been replaced by an alias template. (The classCGAL::Arr_observerwas 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_dcelis templated (in addition to the geometry traits) byVertex,Halfedge, andFacetemplate 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
- *...
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
Corelibrary 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.cmakehas 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_vieweris 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::variantwithstd::variantin the intersection functions. - Breaking change: Replaced all instances of
boost::optionalwithstd::optionalin 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
AABBGeomTraitsandAABBRayIntersectionGeomTraitshave been replaced byAABBGeomTraits_3and byAABBRayIntersectionGeomTraits_3, respectively. - The concepts
AABBGeomTraits_2andAABBRayIntersectionGeomTraits_2have been introduced, as the 2D counterparts. - The class
CGAL::AABB_traitsis deprecated and replaced byCGAL::AABB_traits_3. - The class
CGAL::AABB_traits_2is introduced as the 2D counterpart. - The class
CGAL::AABB_segment_primitivehas been deprecated and replaced by the classCGAL::AABB_segment_primitive_3. - The class
CGAL::AABB_triangle_primitivehas 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
AABBTraitsnow refines the conceptSearchTraits. - Breaking change: Replaced all instances of
boost::optionalwithstd::optional.
2D Arrangements
- Breaking change: Replaced all instances of
boost::variantwithstd::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_VERSIONhas 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_observerhas been replaced by an alias template. (The classCGAL::Arr_observerwas 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_dcelis templated (in addition to the geometry traits) byVertex,Halfedge, andFacetemplate 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
FaceGraphmodels. In particular, the notion ofItemhas been introduced to reference an element in the input range of elements. Region maps now operates onItemand no longer on the value type of the input range. - Breaking change: The method
update()in the conceptRegionTypenow returns aBooleaninstead ofvoid, that is used inside the classRegion_growingfor 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
RegionTypefor getting linear regions in a set of 2D and 3D segments and on 2D and 3D polylines. - Added the class
Polyline_graphfor 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_3to the conceptKernelto 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_indexmust be defined and be equal toCGAL::Tag_truein 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_qtclass 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_2no longer requires the functorLess_signed_distance_to_line_2, but requires the functorCompare_signed_distance_to_line_2instead. - The long-deprecated classes
Convex_hull_projective_xy_traits_2,Convex_hull_projective_xz_traits_2, andConvex_hull_projective_yz_traits_2have 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.