CGAL 4.0 beta1 released

CGAL/cgal

CGAL 4.0 beta1 released


License Changes

The whole CGAL-3.x series was released under a combination of LGPLv2 (for the foundations of CGAL), and QPL (for the high-level packages). QPL was the former license of the graphical toolkit Qt, but that license is not supported by any major free software project. Furthermore, the terms of the LGPLv2 license are ambiguous for a library of C++ templates, like CGAL.

The CGAL project, driven by the CGAL Editorial Board, has decided to change the license scheme of CGAL. We increased the major number of the CGAL version to '4' in order to reflect this license change. The CGAL-4.x series is released under:

  • LGPLv3+ (that is LGPL "either version 3 of the License, or (at your option) any later version"), for the foundations of CGAL, instead of LGPLv2,
  • GPLv3+ for the high-level packages, instead of QPL.

CGAL 4.0 offers the following improvements and new functionality over CGAL 3.9:

Changelog

General

  • On Windows, CGAL libraries are now built by default as shared libraries (also called DLL). To run applications that use .dll files of CGAL, you must either copy the .dll files into the directory of the application, or add the path of the directory that contains those .dll files into the PATH environment variable.
  • On Windows, the CMake scripts of CGAL now search for shared version of the Boost libraries. You must ensure that the .dll files of Boost are found by the dynamic linker. You can, for example, add the path to the Boost .dll files to the PATH environment variable.
  • On Windows, CMake version 2.8.6 or higher is now required.
  • Eigen version 3.1 or later is now the recommended third party library to use in Planar Parameterization of Triangulated Surface Meshes, Surface Reconstruction from Point Sets, Approximation of Ridges and Umbilics on Triangulated Surface Meshes, and Estimation of Local Differential Properties of Point-Sampled Surfaces packages. If you use Eigen you no longer need Taucs, Lapack or Blas to use those packages (and any other in CGAL).

Linear Cell Complex (new package)

  • This package implements linear cell complexes, objects in d-dimension with linear geometry. The combinatorial part of objects is described by a combinatorial map, representing all the cells of the object plus the incidence and adjacency relations between cells. Geometry is added to combinatorial maps simply by associating a point to each vertex of the map. This data structure can be seen as the generalization in dD of the Polyhedron_3.

2D Voronoi Diagram Adaptor (temporarily removed)

  • As the copyright holder of this package has not granted the right to switch from QPL to GPL, this package is removed from the distribution. Note that it is “only” an adapter, that is the functionality of point/segment/disk Voronoi diagram is offered through the Delaunay triangulation, segment Delaunay graph, and Apollonius graph.

AABB Tree

  • Documented the constness of member functions of the AABB_tree class.
  • The class AABB_tree is now guaranteed to be read-only thread-safe. As usual in CGAL, this small overhead introduced for thread-safety can be deactivated by defining CGAL_HAS_NO_THREADS.

2D Alpha Shapes

  • Added an extra template parameter to the class Alpha_shape_2 that allows a certified construction using a traits class with exact predicates and inexact constructions.
  • An object of type Alpha_shape_2 can now be constructed from a triangulation.

3D Alpha Shapes

  • Added an extra template parameter to the class Alpha_shape_3 that allows a certified construction using a traits class with exact predicates and inexact constructions.

Geometric Object Generators

  • Random_points_in_iso_box_d (deprecated since 3.8) has been removed. Use Random_points_in_cube_d instead.

Linear and Quadratic Programming Solver

  • Minor bugfix.

Spatial Searching

  • The const-correctness of this package have been worked out. The transition for users should be smooth in general, however adding few const in user code might be needed in some cases.
  • The class Kd_tree is now guaranteed to be read-only thread-safe. As usual in CGAL, this small overhead introduced for thread-safety can be deactivated by defining CGAL_HAS_NO_THREADS.
  • Bug-fix in Orthogonal_incremental_neighbor_search and Incremental_neighbor_search classes. Several calls to begin() now allow to make several nearest neighbor search queries independently.

STL Extension

  • CGAL::copy_n is now deprecated for CGAL::cpp0x::copy_n which uses std::copy_n, if available on the platform.
  • CGAL::successor and CGAL::predecessor are now deprecated for CGAL::cpp0x::next and CGAL::cpp0x::prev. These functions use the standard versions if available on the platform. Otherwise, boost::next and boost::prior are used.

Triangulation_2

  • Fixed a thread-safety issue in Delaunay_triangulation_2 remove functions. As usual in CGAL, the small overhead introduced for thread-safety can be deactivated by defining CGAL_HAS_NO_THREADS.
  • Add extraction operator for the class Constrained_triangulation_2 (and thus to all inheriting classes).