Changelog History
Page 1

v5.2beta1 Changes
November 18, 2020🚀 The CGAL Open Source Project is pleased to announce the release 5.2 Beta 1 of CGAL, the Computational Geometry Algorithms Library.
🚀 CGAL version 5.2 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.2 in December 2020.
🛠 Fixes, improvements, and various small features have been added since CGAL 5.1. See https://www.cgal.org/2020/11/18/cgal52beta1/ for a complete list of changes.

v5.1.1 Changes
November 16, 2020🚀 CGAL5.1.1 is a bugfix release.
See on Github the list of bugs that were solved since CGAL5.1.

v5.1 Changes
September 08, 2020🚀 The CGAL Open Source Project is pleased to announce the release 5.1 of CGAL, the Computational Geometry Algorithms Library.
📦 Besides fixes and general enhancement to existing packages, the following has changed since CGAL 5.0:
📦 Tetrahedral Remeshing (new package)
📦 This package implements a tetrahedral isotropic remeshing algorithm,
that improves the quality of tetrahedra in terms of dihedral angles,
while targeting a given edge length.👀 See also the associated blog entry.
📦 Surface Mesh Topology (new package)
📦 This package enables the computation of some topological invariants of surfaces, such as:
 test if two (closed) curves on a combinatorial surface are homotopic. Users can choose
🛠 between free homotopy and homotopy with fixed endpoints;  test is a curve is contractible;
 compute shortest noncontractible cycles on a surface, with or without weights on edges.
See also the associated blog entry.
📦 Optimal Bounding Box (new package)
📦 This package implements an optimization algorithm that aims to construct a close approximation
of the optimal bounding box of a mesh or a point set, which is defined as the smallest
(in terms of volume) bounding box that contains a given mesh or point set.See also the associated blog entry.
Installation
 The CGAL_Core library no longer requires
Boost.Thread
, even if the g++ compiler is used.  👍 The minimal supported version of Boost is now 1.66.0.
Tutorials
Two new, detailed tutorials have been added:
 Surface Reconstruction from Point Clouds,
which goes over a typical full processing pipeline in a CGAL environment.  Geographic Information Systems (GIS),
which demonstrates usage of CGAL data structures and algorithms in the context of a typical GIS application.
Both tutorials provide complete code.
📦 Point Set Processing
 ➕ Added wrapper functions for registration, using the Super4PCS and ICP algorithms implemented in the third party libraries OpenGR and libpointmatcher.
📦 Surface Mesh Simplification
 Added a new simplification method based on the quadric error defined by Garland and Heckbert.
📦 dD Spatial Searching
 🏗 The kdtree can now be built in parallel:
CGAL::Kd_tree::build()
is given an optional template parameterConcurrencyTag
(default value remainsCGAL::Sequential_tag
for backward compatibility).
📦 Intersecting Sequences of dD Isooriented Boxes
 Added parallel versions of the functions
CGAL::box_intersection_d()
andCGAL::box_self_intersection_d()
.
📦 Polygon Mesh Processing
 Added the function
CGAL::Polygon_mesh_processing::split()
, which can be used to split meshes along a mesh or a plane.  Added the function
CGAL::Polygon_mesh_processing::split_connected_components()
to split a single mesh containing several connected components into several meshes containing one connected component.  Added parallel versions of the functions
CGAL::Polygon_mesh_processing::does_self_intersect()
andCGAL::Polygon_mesh_processing::self_intersections()
.  ➕ Added several mesh repair functions (see the complete changelog for
more information).
📦 3D Fast Intersection and Distance Computation
 The behavior of the internal search tree used to accelerate distance queries has changed:
0️⃣ usage of the internal search tree will now be enabled by default, and its construction
will be triggered by the first distance query. Automatic construction and usage can be disabled
by callingCGAL::AABB_tree::do_not_accelerate_distance_queries()
before the first distance query, and the tree can be built at any moment by calling
CGAL::AABB_tree::accelerate_distance_queries()
.  💥 Breaking change :
CGAL::AABB_tree::accelerate_distance_queries()
andCGAL::AABB_tree::do_not_accelerate_distance_queries()
are no longerconst
functions.
📦 CGAL and the Boost Graph Library (BGL)
 Added the function
CGAL::alpha_expansion_graphcut()
, which regularizes a multilabel partition over a userdefined graph.  Added the function
CGAL::regularize_face_selection_borders()
, which uses this alpha expansion graphcut to regularize the borders of a selected faces on a triangle mesh.
👀 See https://www.cgal.org/2020/09/08/cgal51/ for a complete list of changes.
 test if two (closed) curves on a combinatorial surface are homotopic. Users can choose

v5.1beta2 Changes
July 28, 2020🚀 The CGAL Open Source Project is pleased to announce the release 5.1 Beta 2 of CGAL, the Computational Geometry Algorithms Library.
🚀 CGAL version 5.1 Beta 2 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.1 in September.
📦 Besides fixes and general enhancement to existing packages, the following has changed since CGAL 5.0:
📦 Tetrahedral Remeshing (new package)
 📦 This package implements a tetrahedral isotropic remeshing algorithm,
that improves the quality of tetrahedra in terms of dihedral angles,
while targeting a given edge length.
📦 Surface Mesh Topology (new package)
📦 This package enables the computation of some topological invariants of surfaces, such as:
 test if two (closed) curves on a combinatorial surface are homotopic. Users can choose
🛠 between free homotopy and homotopy with fixed endpoints;  test is a curve is contractible;
 compute shortest noncontractible cycles on a surface, with or without weights on edges.
See also the associated blog entry.
📦 Optimal Bounding Box (new package)
📦 This package implements an optimization algorithm that aims to construct a close approximation
of the optimal bounding box of a mesh or a point set, which is defined as the smallest
(in terms of volume) bounding box that contains a given mesh or point set.See also the associated blog entry.
Installation
 The CGAL_Core library no longer requires
Boost.Thread
, even if the g++ compiler is used.
Tutorials
Two new, detailed tutorials have been added:
 Surface Reconstruction from Point Clouds,
which goes over a typical full processing pipeline in a CGAL environment.  Geographic Information Systems (GIS),
which demonstrates usage of CGAL data structures and algorithms in the context of a typical GIS application.
Both tutorials provide complete code.
📦 Point Set Processing
 ➕ Added wrapper functions for registration, using the Super4PCS and ICP algorithms implemented in the third party libraries OpenGR and libpointmatcher.
📦 Surface Mesh Simplification
 Added a new simplification method based on the quadric error defined by Garland and Heckbert.
📦 dD Spatial Searching
 🏗 The kdtree can now be built in parallel:
CGAL::Kd_tree::build()
is given an optional template parameterConcurrencyTag
(default value remainsCGAL::Sequential_tag
for backward compatibility).
📦 Intersecting Sequences of dD Isooriented Boxes
 Added parallel versions of the functions
CGAL::box_intersection_d()
andCGAL::box_self_intersection_d()
.
📦 Polygon Mesh Processing
 Added the function
CGAL::Polygon_mesh_processing::split()
, which can be used to split meshes along a mesh or a plane.  Added the function
CGAL::Polygon_mesh_processing::split_connected_components()
to split a single mesh containing several connected components into several meshes containing one connected component.  Added parallel versions of the functions
CGAL::Polygon_mesh_processing::does_self_intersect()
andCGAL::Polygon_mesh_processing::self_intersections()
.  ➕ Added several mesh repair functions (see the complete changelog for
more information).
📦 3D Fast Intersection and Distance Computation
 The behavior of the internal search tree used to accelerate distance queries has changed:
0️⃣ usage of the internal search tree will now be enabled by default, and its construction
will be triggered by the first distance query. Automatic construction and usage can be disabled
by callingCGAL::AABB_tree::do_not_accelerate_distance_queries()
before the first distance query, and the tree can be built at any moment by calling
CGAL::AABB_tree::accelerate_distance_queries()
.  💥 Breaking change :
CGAL::AABB_tree::accelerate_distance_queries()
andCGAL::AABB_tree::do_not_accelerate_distance_queries()
are no longerconst
functions.
📦 CGAL and the Boost Graph Library (BGL)
 Added the function
CGAL::alpha_expansion_graphcut()
, which regularizes a multilabel partition over a userdefined graph.  Added the function
CGAL::regularize_face_selection_borders()
, which uses this alpha expansion graphcut to regularize the borders of a selected faces on a triangle mesh.
👀 See https://www.cgal.org/2020/07/28/cgal51beta2/ for a complete list of changes.
 📦 This package implements a tetrahedral isotropic remeshing algorithm,

v5.1beta1 Changes
June 09, 2020🚀 The CGAL Open Source Project is pleased to announce the release 5.1 Beta 1 of CGAL, the Computational Geometry Algorithms Library.
🚀 CGAL version 5.1 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.1 in July.
📦 Besides fixes and general enhancement to existing packages, the following has changed since CGAL 5.0:
📦 Tetrahedral Remeshing (new package)
 📦 This package implements a tetrahedral isotropic remeshing algorithm,
that improves the quality of tetrahedra in terms of dihedral angles,
while targeting a given edge length.
📦 Surface Mesh Topology (new package)
📦 This package enables the computation of some topological invariants of surfaces, such as:
 test if two (closed) curves on a combinatorial surface are homotopic. Users can choose
🛠 between free homotopy and homotopy with fixed endpoints;  test is a curve is contractible;
 compute shortest noncontractible cycles on a surface, with or without weights on edges.
See also the associated blog entry.
📦 Optimal Bounding Box (new package)
📦 This package implements an optimization algorithm that aims to construct a close approximation
of the optimal bounding box of a mesh or a point set, which is defined as the smallest
(in terms of volume) bounding box that contains a given mesh or point set.See also the associated blog entry.
Tutorials
Two new, detailed tutorials have been added:
 Surface Reconstruction from Point Clouds,
which goes over a typical full processing pipeline in a CGAL environment.  Geographic Information Systems (GIS),
which demonstrates usage of CGAL data structures and algorithms in the context of a typical GIS application.
Both tutorials provide complete code.
📦 Point Set Processing
 ➕ Added wrapper functions for registration, using the Super4PCS and ICP algorithms implemented in the third party libraries OpenGR and libpointmatcher.
📦 Surface Mesh Simplification
 Added a new simplification method based on the quadric error defined by Garland and Heckbert.
📦 dD Spatial Searching
 🏗 The kdtree can now be built in parallel:
CGAL::Kd_tree::build()
is given an optional template parameterConcurrencyTag
(default value remainsCGAL::Sequential_tag
for backward compatibility).
📦 Intersecting Sequences of dD Isooriented Boxes
 Added parallel versions of the functions
CGAL::box_intersection_d()
andCGAL::box_self_intersection_d()
.
📦 Polygon Mesh Processing
 Added the function
CGAL::Polygon_mesh_processing::split()
, which can be used to split meshes along a mesh or a plane.  Added the function
CGAL::Polygon_mesh_processing::split_connected_components()
to split a single mesh containing several connected components into several meshes containing one connected component.  Added parallel versions of the functions
CGAL::Polygon_mesh_processing::does_self_intersect()
andCGAL::Polygon_mesh_processing::self_intersections()
.  ➕ Added several mesh repair functions (see the complete changelog for
more information).
📦 3D Fast Intersection and Distance Computation
 The behavior of the internal search tree used to accelerate distance queries has changed:
0️⃣ usage of the internal search tree will now be enabled by default, and its construction
will be triggered by the first distance query. Automatic construction and usage can be disabled
by callingCGAL::AABB_tree::do_not_accelerate_distance_queries()
before the first distance query, and the tree can be built at any moment by calling
CGAL::AABB_tree::accelerate_distance_queries()
.  💥 Breaking change :
CGAL::AABB_tree::accelerate_distance_queries()
andCGAL::AABB_tree::do_not_accelerate_distance_queries()
are no longerconst
functions.
📦 CGAL and the Boost Graph Library (BGL)
 Added the function
CGAL::alpha_expansion_graphcut()
, which regularizes a multilabel partition over a userdefined graph.  Added the function
CGAL::regularize_face_selection_borders()
, which uses this alpha expansion graphcut to regularize the borders of a selected faces on a triangle mesh.
👀 See https://www.cgal.org/2020/06/09/cgal51beta1 for a complete list of changes.
 📦 This package implements a tetrahedral isotropic remeshing algorithm,

v5.0.4 Changes
November 16, 2020🚀 CGAL5.0.4 is a bugfix release.
See on Github the list of bugs that were solved since CGAL5.0.3.

v5.0.3 Changes
August 03, 2020🚀 CGAL5.0.3 is a bugfix release.
See on Github the list of bugs that were solved since CGAL5.0.2.

v5.0.2 Changes
February 25, 2020🚀 CGAL5.0.2 is a bugfix release.
See on Github the list of bugs that were solved since CGAL5.0.1.

v5.0.1 Changes
January 24, 2020🚀 CGAL5.0.1 is a bugfix release. In particular, it fixes a performance regression in the 3D Triangulations, when the
Parallel_tag
is used.See on Github the list of bugs that were solved since CGAL5.0.1.

v5.0 Changes
November 08, 2019🚀 The CGAL Open Source Project is pleased to announce the release 5.0
of CGAL, the Computational Geometry Algorithms Library.📦 Besides fixes and general enhancement to existing packages, the
following has changed since CGAL 4.14.2:General changes
 🚀 CGAL 5.0 is the first release of CGAL that requires a C++ compiler
👍 with the support of C++14 or later. The new list of supported
compilers is: Visual C++ 14.0 (from Visual Studio 2015 Update 3) or later,
 Gnu g++ 6.3 or later (on Linux or MacOS),
 LLVM Clang version 8.0 or later (on Linux or MacOS), and
 Apple Clang compiler versions 7.0.2 and 10.0.1 (on MacOS).
 Since CGAL 4.9, CGAL can be used as a headeronly library, with
0️⃣ dependencies. Since CGAL 5.0, that is now the default, unless
🔧 specified differently in the (optional) CMake configuration.  📚 The section "Getting Started with CGAL" of the documentation has
⚡️ been updated and reorganized.  The minimal version of Boost is now 1.57.0.
📦 Polygonal Surface Reconstruction (new package)
 📦 This package provides a method for piecewise planar object reconstruction from point clouds.
The method takes as input an unordered point set sampled from a piecewise planar object
and outputs a compact and watertight surface mesh interpolating the input point set.
The method assumes that all necessary major planes are provided (or can be extracted from
the input point set using the shape detection method described in Point Set Shape Detection,
or any other alternative methods).The method can handle arbitrary piecewise planar objects
👀 and is capable of recovering sharp features and is robust to noise and outliers. See also
the associated blog entry.
📦 Shape Detection (major changes)
 💥 Breaking change: The concept
ShapeDetectionTraits
has been renamed toEfficientRANSACTraits
.  💥 Breaking change: The
Shape_detection_3
namespace has been renamed toShape_detection
.  ➕ Added a new, generic implementation of region growing. This enables for example applying region growing to inputs such as 2D and 3D point sets,
or models of theFaceGraph
concept. Learn more about this new algorithm with this blog entry.
📦 dD Geometry Kernel
 A new exact kernel,
Epeck_d
, is now available.
2D and 3D Triangulations
💥 Breaking change: Several deprecated functions and classes have been
✂ removed. See the full list of breaking changes in the release
notes.💥 Breaking change: The constructor and the
insert()
function of
CGAL::Triangulation_2
orCGAL::Triangulation_3
which take a range
of points as argument are now guaranteed to insert the points
following the order ofInputIterator
. Note that this change only
affects the base classCGAL::Triangulation_[23]
and not any
derived class, such asCGAL::Delaunay_triangulation_[23]
.📦 Polygon Mesh Processing
 Introduced a wide range of new functions
related to location of queries on a triangle mesh,
such asCGAL::Polygon_mesh_processing::locate(Point, Mesh)
.
The location of a point on a triangle mesh is expressed as the pair of a face and the barycentric
coordinates of the point in this face, enabling robust manipulation of locations
(for example, intersections of two 3D segments living within the same face).  Added the mesh smoothing function
smooth_mesh()
,
which can be used to improve the quality of triangle elements based on various geometric characteristics.  Added the shape smoothing function
smooth_shape()
,
which can be used to smooth the surface of a triangle mesh, using the mean curvature flow to perform noise removal.
(See also the new entry in the User Manual)
📦 Point Set Processing
 💥 Breaking change : the API using iterators and overloads for optional parameters (deprecated since
🚚 CGAL 4.12) has been removed. The current (and now only) API uses ranges and Named Parameters.
👀 See https://www.cgal.org/2019/11/08/cgal50/ for a complete list of changes.
 🚀 CGAL 5.0 is the first release of CGAL that requires a C++ compiler