CGAL 6.0 beta1 released


CGAL 6.0 beta1 released

Download CGAL-6.0-beta1

CGAL-6.0-beta1 documentation

CGAL 6.0 offers the following improvements and new functionality over 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 Core library 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.cmake has been removed from CGAL. Usages of the CMake variables ${CGAL_USE_FILE} and ${CGAL_LIBRARIES} must be replaced by a link to the imported target CGAL::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)

Basic Viewer (new package)

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::variant with std::variant in the intersection functions.
  • Breaking change: Replaced all instances of boost::optional with std::optional in 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)

2D Arrangements

  • Breaking change: Replaced all instances of boost::variant with std::variant.
  • Breaking change: The type of the result of point location queries has been changed to std::variant. Support for the old macro CGAL_ARR_POINT_LOCATION_VERSION has 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_observer has been replaced by an alias template. (The class CGAL::Arr_observer was renamed to CGAL::Aos_observer).
  • Introduced Arr_dcel, which essentially replaces the former CGAL::Arr_default_dcel. Backward compatibility was maintained by the introduction of the alias template CGAL::Arr_default_dcel. CGAL::Arr_dcel, as opposed to the former CGAL::Arr_default_dcel is templated (in addition to the geometry traits) by Vertex, Halfedge, and Face template 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

Combinatorial Maps and Generalized Maps

  • Added the function insert_cell_1_between_two_cells_2() to the GenericMap concept, which enables users to insert an edge between two different faces in order to create faces with holes.

  • Added new meshing criterion edge_distance, an upper bound for the distance from the edge to the 1D feature.

  • Breaking change: the concept MeshEdgeCriteria_3 was modified to include the new meshing criterion edge_distance.

Quadtrees, Octrees, and Orthtrees

  • Breaking change:
    • Node splitting behavior and per-node data are now customizable via the Traits class.
    • Nodes are now stored as a property map, with properties of each node accessed by index.
    • Nearest neighbors functions only work for Orthtrees which provide the necessary functionality.

CGAL and the Boost Graph Library (BGL)

Polygon Mesh Processing

2D Triangulations

3D Triangulations

  • Added three member functions vertices() to the class CGAL::Triangulation_3. Each of them returns an array containing the vertices of the given triangulation simplex.

dD Triangulations

  • Breaking change: CGAL::TDS_full_cell_mirror_storage_policy is now unsupported in dimension larger than 127.
  • Breaking change: Inserting multiple unweighted points in the same position now keeps the first one, instead of switching to the latest. This only affects custom point types where not all points in the same position are equivalent.

Tetrahedral Remeshing

3D Simplicial Mesh Data Structure

  • Breaking change: The template parameters of CGAL::Simplicial_mesh_cell_base_3 have been modified to enable passing a geometric traits and a custom cell base class.

3D Mesh Generation

  • Breaking change: Removed the concept TriangleAccessor, the template parameter TriangleAccessor, as well as the class Triangle_accessor. These were no longer used for several releases.
  • Breaking change: Removed the class templates CGAL::Gray_image_mesh_domain_3, CGAL::Implicit_mesh_domain_3, and CGAL::Labeled_image_mesh_domain_3, which were deprecated since CGAL-4.13.

3D Surface Mesh Generation

Surface Mesh Parameterization

Surface Mesh

3D Point Set

Shape Detection

  • Breaking change: Replaced all instances of boost::shared_ptr with std::shared_ptr.

2D Straight Skeleton and Polygon Offsetting

  • Breaking change: Replaced all instances of boost::shared_ptr with std::shared_ptr.
  • Breaking change: Replaced all instances of boost::optional with std::optional.