CGAL 5.2 offers the following improvements and new functionality over CGAL 5.1:
Changelog
dD Geometry Kernel
- The kernels
Epick_d
andEpeck_d
gain two new functors:Compute_power_product_d
andConstruct_power_sphere_d
, to deal with weighted points.
CGAL and the Boost Graph Library (BGL)
- Added a convenience header,
CGAL/boost/graph/graph_traits_inheritance_macros.h
, which enables easily making any class inheriting from a model of a face graph concept, a model of the same concept. - Added the function
can_add_face()
, which tests whether a new face defined by a range of vertices can be added.
3D Fast Intersection and Distance Computation (AABB Tree)
- Added the move constructor and the assignment operator to the AABB Tree class.
2D Arrangements
- Replaced the use of legacy
CGAL::Object
to modernboost::variant
. - Changed make-x-monotone return type from legacy
CGAL::Object
toboost::variant
in all traits concepts and models. As there exists an implicit conversion fromboost::variant
toCGAL::Object
, the new code is backward compatible. However, it is recommended that all calls to the make-x-monotone functions are fixed to use the new return type. - Changed
decompose()
interface to useboost::variant
instead of legacyCGAL::Object
As explained above, the code is backward compatible. However, it is recommended that all calls todecompose()
are fixed to use the new interface.
Surface Mesh
- Added the function
clear_without_removing_property_maps()
to clear a mesh but keep all the created property maps added. - Added the functions
remove_property_maps<Index_type>()
andremove_all_property_maps()
to remove all added property maps by index type or all of them respectively. - Added the functions
set_recycle_garbage()
anddoes_recycle_garbage()
to the classSurface_mesh
.
Polygon Mesh Processing
- Added a visitor to the functions
CGAL::Polygon_mesh_processing::triangulate_face()
andCGAL::Polygon_mesh_processing::triangulate_faces()
, that enables the user to keep track of the newly created faces through the triangulation process. - Added an option in
CGAL::Polygon_mesh_processing::corefine()
,CGAL::Polygon_mesh_processing::split()
andCGAL::Polygon_mesh_processing::clip()
functions, which enable the operations to be performed on a mesh with self-intersections present in the intersection area. - Added an optional range parameter to
CGAL::Polygon_mesh_processing::stitch_borders()
, which can be used to specify which boundary cycles are eligible for stitching.
Surface Mesh Parameterization
- Added a new parameterization method, Iterative Authalic Parameterization. It is based on the work of Jain, Hardik, Manuel Wollhaf, and Olaf Hellwich, “Learning to Reconstruct Symmetric Shapes using Planar Parameterization of 3D Surface.” (IEEE International Conference on Computer Vision Workshops, 2019).
Classification
-
Breaking change: new IO format for the
ETHZ::Random_Forest
classifier: a conversion function from the outdated format to the new one is provided. - Added new functions to the class
CGAL::Classification::Evaluation
:append()
to enrich the evaluation with additional results;confusion()
to access the confusion matrix; output functions to save the evaluation to andASCII
orHTML
stream. - Added a new operator,
CGAL::Classification::feature_cast<>
, for easy conversions. - The classes
CGAL::Classification::Feature_set
andCGAL::Classification::Label_set
are now models of the conceptRange
. - The class
CGAL::Classification::Label
now has attributesindex
,standard_index
andcolor
, with automatic selection if the ASPRS standard names are used. - Added new functions in
CGAL::Classification::Point_set_feature_iterator
, to enable users to select which features should be generated. - Added a new function,
CGAL::Classification::Label_set::is_valid_ground_truth()
, to help users check if a ground truth matches a given label set.
Point Set Processing
- Added a function
CGAL::scanline_orient_normals()
, which orients a point cloud by estimating a line of sight.
3D Convex Hulls
- Added the function
CGAL::halfspace_intersection_interior_point_3()
, which can be used to retrieve the point that is the most interior a convex closed volume defined by the intersection of a set of halfspaces.
3D Triangulations
- Added new classes and functions to visit the cells and simplices intersected by a line segment, see Sections Segment Cell Iterator and Segment Simplex Iterator, respectively.