CGAL 6.2 beta1 released

CGAL/cgal

CGAL 6.2 beta1 released


Download CGAL-6.2-beta1

CGAL-6.2-beta1 documentation

CGAL 6.2 offers the following improvements and new functionality over CGAL 6.1:

Changelog

General Changes

  • The new list of supported compilers is:
    • Visual C++ 15.9, 16.10, 17.14, 18.0 (from Visual Studio 2017, 2019, 2022, and 2026) or later
    • Gnu g++ 13.3.0 or later (on Linux)
    • LLVM Clang version 22.0.0 or later (on Linux)
    • Apple Clang compiler versions 14.0.0 or later (on macOS)
  • The minimal supported version of Boost is still 1.74.0, but only versions 1.79.0 and later were tested.

2D Alpha Wrapping (new package)

  • This component takes a polygon soup, a 2D segment soup, and/or a 2D point set as input, and generates a valid (watertight, intersection-free and 1-manifold) multi-polygon that strictly encloses the input. The algorithm proceeds by shrink-wrapping and refining a 2D Delaunay triangulation starting from a loose bounding box of the input. Two user-defined parameters, alpha and offset, offer control over the maximum size of cavities where the shrink-wrapping process can enter, and the tightness of the final polygon(s) to the input, respectively. Once combined, these parameters provide a means to trade fidelity to the input for complexity of the output.

    See also the associated news entry.

Generalized Barycentric Coordinates 3 (new package)

  • This package provides functions to compute various types of generalized barycentric coordinates (Wachspress, mean value, discrete harmonic and tetrahedron coordinates) for points located inside closed convex 3D polyhedra.

Polygon Mesh Processing (major changes)

  • The “Polygon Mesh Processing” package has been reorganized into several packages. “Polygon Mesh Processing” retains the core functionalities, while advanced and specialized features have been moved to dedicated packages:
    • Boolean Operations On Meshes: algorithms for Boolean operations on polygon meshes; clipping, splitting, and slicing with planes, boxes, or other meshes; and kernel computations.
    • Meshing and Remeshing of Polygon Meshes: algorithms for meshing and remeshing, such as triangulation, refinement, simplification, optimization, and smoothing.
    • Polygon Mesh Repair: tools for detecting and correcting combinatorial and geometric defects in polygon meshes and polygon soups, including face orientation, hole filling, removal of degeneracies, and boundary stitching. This split does not induce any breaking change and is fully transparent: header includes such as #include <CGAL/Polygon_mesh_processing/XXX.h> do not need to be changed and will include the appropriate header from the new packages.

2D and 3D Linear Geometry Kernel

Intersecting Sequences of dD Iso-oriented Boxes

2D Arrangements

  • Introduced a Geometry Traits concept for arrangement on surfaces that enables the provision of the disconnected portions of an approximation of a curve within a given bounding box.
  • The class CGAL::Arr_linear_traits_2 is now a model of the new concept.
  • Added overloads of CGAL::draw(Arrangement_on_surface_2& arr, Bbox& bbox, ...) that enable the drawing of arrangements induced by unbounded curves.
  • Introduced the concept AosTraits::Do_intersect_2. A model of this concept must provide an operator that accepts two x-monotone curves and a boolean flag that indicates whether common endpoints should be considered or ignored. The operator determines whether the curves intersect, and it can be used with an inexact-construction kernel.

2D Intersection of Curves

  • The function CGAL::do_curves_intersect(), which assumed open curves, has been deprecated and replaced by the function CGAL::Surface_sweep_2::do_intersect(). Notice: (i) the introduction of the new namespace Surface_sweep_2, and (ii) the addition of the closed parameter, which defaults to true. To match the behavior of the deprecated function, set closed to false.

2D Regularized Boolean Set-Operations

  • Optimized do_intersect():
    • (i) made it robust even with an inexact-predicates kernel, and
    • (ii) made it quit once an intersection is detected. (In the past, the intersection was computed in one phase and examined in a subsequent phase.) This optimization somehow breaks backward compatibility as follows: the variants of the free function do_intersect() that accept a third optional parameter, namely UsePolylines, which determines whether the boundaries of the input polygons are treated as cyclic sequences of (x-monotone) segments or as a cyclic sequences of (x-monotone) polylines, do not accept this third parameter any longer. (This third optional parameter was introduced a few years ago, and now abandoned only for do_intersect().)

3D Convex hull

2D Triangulations

2D Conforming Triangulations and Meshes

  • The implementation is now more robust to almost degenerate inputs, such as polygons with microscopic edges or almost collinear points.
  • Breaking change: The concept DelaunayMeshTraits_2 now requires the functor Construct_bbox_2.

Tetrahedral Mesh Generation

  • Breaking change: Removed the class template CGAL::Implicit_vector_to_labeling_function_wrapper, as well as the constructor of CGAL::Polyhedral_mesh_domain_with_features_3 that takes a filename as parameter, which were deprecated since CGAL-4.5.
  • Breaking change: Added the requirement for a nested type Iso_cuboid_3 to the concept BisectionGeometricTraits_3.
  • Protection of sharp edges (also known as “feature line”) is now significantly faster.

dD Triangulations

  • Computation of convex hulls in high dimensions is now significantly faster.

Convex Decomposition of Polyhedra

Polygon Mesh Processing

  • Breaking change: The header CGAL/Polygon_mesh_processing/border.h has been deprecated and its content (CGAL::border_halfedges() and CGAL::extract_boundary_cycles()) have been moved to a new header: CGAL/boost/graph/border.h.
  • Vertex normal computation is now significantly faster for high-degree vertices.

Polygon Mesh Processing (Boolean Operations on Meshes)

Polygon Mesh Processing (Meshing and Remeshing of Polygon Meshes)

Polygon Mesh Processing (Mesh Repair)

Quadtrees, Octrees, and Orthtrees

Linear Cell Complex

Shape Detection

Surface Mesh Simplification

Geometric Object Generators

STL Extension

  • Added new debugging utility for finding minimal failing test cases:
    • CGAL::bisect_failures is a template function that uses bisection to isolate minimal failing subsets from complex input data.

Stream Support