CGAL 4.7 beta1 released


CGAL 4.7 beta1 released

Download CGAL-4.7-beta1

CGAL-4.7-beta1 documentation

CGAL 4.7 offers the following improvements and new functionality over CGAL 4.6:



  • The minimum required version of CMake is now 2.8.11. CMake versions 3.1, 3.2, and 3.3 are supported.
  • All Qt4 demos have been updated and now require Qt5 to be compiled. Qt5 version 5.3 or higher is required. The support for Qt4 is dropped. To compile libCGAL_Qt5 and demos, you must set the cmake or environment variable Qt5_DIR to point to the path to the directory containing the file Qt5Config.cmake created by your Qt5 installation. If you are using the open source edition it should be /path-to/qt-everywhere-opensource-src-<version>/qtbase/lib/cmake/Qt5.
  • The code of the 3D demos now uses modern OpenGL, with shaders, instead of the fixed pipeline API of OpenGL-1.


  • Support for unordered sets and maps of the stdlib and of boost for handle and index classes.

L Infinity Segment Delaunay Graphs (new package)

  • The package provides the geometric traits for constructing the segment Delaunay graph in the max-norm (L Infinity). The traits also contain methods to draw the edges of the dual of the segment Delaunay graph in the max-norm i.e., the segment Voronoi diagram in the max-norm. The algorithm and traits rely on the segment Delaunay graph algorithm and traits under the Euclidean distance. The segment Voronoi diagram in the max-norm has applications in VLSI CAD.

Advancing Front Surface Reconstruction (new package)

  • This package provides a greedy algorithm for surface reconstruction from an unorganized point set. Starting from a seed facet, a piecewise linear surface is grown by adding Delaunay triangles one by one. The most plausible triangles are added first, in a way that avoids the appearance of topological singularities.

Triangulated Surface Mesh Shortest Paths (new package)

  • The package provides methods for computing shortest path on triangulated surface meshes. Given a set of source points on the surface, this package provides a data structure that can efficiently provides the shortest path from any point on the surface to the sources points. There is no restriction on the genus or the number of connected components of the mesh.

Triangulated Surface Mesh Skeletonization (new package)

  • This package provides a (1D) curve skeleton extraction algorithm for a triangulated polygonal mesh without borders based on the mean curvature flow. The particularity of this skeleton is that it captures the topology of the input. For each skeleton vertex one can obtain its location and its corresponding vertices from the input mesh. The code is generic and works with any model of the `FaceListGraph` concept.

3D Point-Set Shape Detection (new package)

  • This package implements the efficient RANSAC method for shape detection, contributed by Schnabel et al. From an unstructured point set with unoriented normals, the algorithm detects a set of shapes. Five types of primitive shapes are provided by this package: plane, sphere, cylinder, cone and torus. Detecting other types of shapes is possible by implementing a class derived from a base shape.

2D Visibility (new package)

  • This package provides several variants to compute the visibility area of a point within polygonal regions in two dimensions.

Polygon Mesh Processing (new package)

  • This package implements a collection of methods and classes for polygon mesh processing, ranging from basic operations on simplices, to complex geometry processing algorithms. The implementation of this package mainly follows algorithms and references given in Botsch et al.’s book on polygon mesh processing.

Approximation of Ridges and Umbilics on Triangulated Surface Meshes

  • This package now supports any model of the concept FaceGraph.
  • Breaking change: The package no longer supports models of TriangulatedSurfaceMesh which are not at the same time models of the concept FaceGraph.

    dD Geometry Kernel

  • Epick_d gains 3 new functors: Construct_circumcenter_d, Compute_squared_radius_d, Side_of_bounded_sphere_d. Those are essential for the computation of alpha-shapes.

2D Arrangements

  • Introduced a new traits class, called Arr_polycurve_traits_2<SubcurveTraits>, which handles general piece-wise (polycurve) curves. The pieces do not necessarily have to be linear.
  • Introduced two new concepts called ArrangementApproximateTraits_2 and ArrangementConstructXMonotoneCurveTraits_2.
  • The existing ArrangementLandmarkTraits_2 concept, which has two requirements, now refines the two respective concepts above.
  • The template parameter of the existing Arr_polyline_traits_2<SegmentTraits> template must be substituted with a traits class that is a model of the ArrangementConstructXMonotoneTraits_2 concept among the other when Arr_polyline_traits_2 is instantiated.

2D Minkowski Sums

  • Added support for polygons with holes and optimized the construction of Minkowski sums.
  • Introduced an implementation of the “reduced convolution” method, a variant of the method described in “2D Minkowski Sum of Polygons Using Reduced Convolution” by Behar and Lien. The new method supports polygons with holes and in many cases out pergorms the implementation of the exsisting (full) convolution method.
  • Introduced two new classes that decompose polygons into convex pieces (models of the PolygonConvexDecomposition_2 concept) based on vertical decomposition and constrained Delaunay triangulation, respectively. These new models also support the convex decomposition of polygons with holes.

3D Periodic Triangulations

  • Renamed Periodic_3_triangulation_traits_3 to Periodic_3_Delaunay_triangulation_traits_3.
  • Renamed the concept Periodic_3TriangulationTraits_3 to Periodic_3DelaunayTriangulationTraits_3.
  • Created Periodic_3_triangulation_traits_3 and the concept Periodic_3TriangulationTraits_3.

2D Conforming Triangulations and Meshes

  • Added an optimization method CGAL::lloyd_optimize_mesh_2() that implements the Lloyd (or Centroidal Voronoi Tesselation) optimization algorithm in a Constrained Delaunay Triangulation. For optimization, the triangulation data structure on which the mesher relies needs its VertexBase template parameter to be a model of the new concept DelaunayMeshVertexBase_2.

Point Set Processing and Surface Reconstruction from Point Sets

  • Added the function CGAL::compute_vcm() for computing the Voronoi Covariance Measure (VCM) of a point set. The output of this function can be used with the function CGAL::vcm_is_on_feature_edge() to determine whether a point is on or close to a feature edge. The former function is also internally used by CGAL::vcm_estimate_normals() to estimate the normals of a point set and it is particularly suited to point sets with noise.

Spatial Sorting

  • Added the possibility to sort points on a sphere along a space-filling curve using the functions CGAL::hilbert_sort_on_sphere and CGAL::spatial_sort_on_sphere.

Geometric Object Generators

  • Added new random generator of points in a 2D and 3D triangle and in a tetrahedron (CGAL::Random_points_in_triangle_2, CGAL::Random_points_in_triangle_3, CGAL::Random_points_in_tetrahedron_3).