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 non-contractible cycles on a surface, with or without weights on edges.
See also the associated blog entry.
- test if two (closed) curves on a combinatorial surface are homotopic. Users can choose
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.
- Surface Reconstruction from Point Clouds,
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 kd-tree 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 Iso-oriented 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:
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 multi-label partition over a user-defined 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.