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 definingCGAL_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. UseRandom_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 definingCGAL_HAS_NO_THREADS
. - Bug-fix in
Orthogonal_incremental_neighbor_search
andIncremental_neighbor_search
classes. Several calls tobegin()
now allow to make several nearest neighbor search queries independently.
STL Extension
CGAL::copy_n
is now deprecated forCGAL::cpp0x::copy_n
which usesstd::copy_n
, if available on the platform.CGAL::successor
andCGAL::predecessor
are now deprecated forCGAL::cpp0x::next
andCGAL::cpp0x::prev
. These functions use the standard versions if available on the platform. Otherwise,boost::next
andboost::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 definingCGAL_HAS_NO_THREADS
. - Add extraction operator for the class
Constrained_triangulation_2
(and thus to all inheriting classes).