CGAL 4.8 offers the following improvements and new functionality over CGAL 4.7:
Changelog
General
- The support for Qt3 is dropped and all demos using it have been removed.
Installation
- Starting with Visual C++ 2015 we no longer require
Boost.Thread
as we use the C++11 keywordthread_local
and the C+11 classstd::mutex
. - The same holds for g++ 4.8 or later when the C++11 standard is used.
Optimal Transportation Curve Reconstruction (new package)
- This package implements a method to reconstruct and simplify 2D point sets. The input is a set of 2D points with mass attributes, possibly hampered by noise and outliers. The output is a set of line segments and isolated points which approximate the input points.
2D Regularized Boolean Set-Operations
- Improved the performance of operations in some settings.
Breaking change: This improvement requires changes of the face
and halfedge type of the underlying arrangement Dcel. See the
concepts
GeneralPolygonSetDcelHalfedge
andGeneralPolygonSetDcelFace
for more details. If you use a different simplex types, inheriting your simplices fromCGAL::Gps_face_base
andCGAL::Gps_halfedge_base
is sufficient to accommodate for the update.
3D Boolean Operations on Nef Polyhedra
- Added 3 new constructors: from a point range, from a point, and from a segment.
Combinatorial Maps
- Breaking change: Changed the type of Boolean marks, old type is
int, new type is
size_type
. If no more mark is available,get_new_mark
throws an exception, instead of returning-1
.
2D Arrangements
- Sped up the edge removal in case the incident faces contains many holes.
- Set the format of polylines and polycurves. The format of a general polyline or polycurve consists of the sequence of subcurves that comprise the original curve. The format of a polyline of linear segments consists of the sequence of points that define the original curve. (The latter restores the format used before polycurves were introduced in 4.7.) Fix the extraction from istream and insertion into ostream operators of polylines and polycurves accordingly.
- Fixed the traits class that handles Bezier curves. In particular, fix the case where the curve is closed (i.e, the first and last control points coincide).
3D Mesh Generation
- Added support of 3D gray level images as input for the tetrahedral mesh generation.
- Breaking change: All models of the concept
MeshDomain_3
must now provide a member functionbbox()
.
Advancing Front Surface Reconstruction
- Optional template functor
Filter
is replaced by another optional template functorPriority
. This allows to change the way facets are prioritized by the algorithm instead of having a simple option to reject some facets. Breaking change: Programs using the oldFilter
API will not compile anymore as it must be replaced with thePriority
API as described in the manual. Codes using the default behavior are not impacted.
Polygon Mesh Processing
- Added a new triangle-based isotropic remeshing algorithm for
triangulated surface meshes,
CGAL::Polygon_mesh_processing::isotropic_remeshing()
and a helper function for isotropic remeshing :CGAL::Polygon_mesh_processing::split_long_edges()
- Added the function
CGAL::Polygon_mesh_processing::border_halfedges()
to collect the border of a given face range - Added the function
CGAL::Polygon_mesh_processing::remove_isolated_vertices()
to be used on any polygon mesh - Added the function
CGAL::Polygon_mesh_processing::triangulate_face()
to triangulate a single face of a polygon mesh - Added an overload for
CGAL::Polygon_mesh_processing::triangulate_faces()
to triangulate a range of faces of a polygon mesh - Added function
keep_large_connected_components()
- Added measuring functions for polygon meshes, to compute length, area, and volume of simplices or group of simplices of a polygon mesh.
- Added function
bbox_3()
to compute the bounding box of a polygon mesh.
Point Set Processing
- Breaking change: new template parameter
Concurrency_tag
for the functionscompute_average_spacing()
,edge_aware_upsample_point_set()
,jet_estimate_normals()
,jet_smooth_point_set()
, andpca_estimate_normals()
. To update your code simply add as first template parameterCGAL::Sequential_tag
orCGAL::Parallel_tag
when calling one of these functions. CGAL::Parallel_tag
can no longer be used in Point Set Processing algorithms if TBB is not available.- Added a new simplification algorithm based on hierarchical clustering:
CGAL::hierarchy_simplify_point_set()
. It allows either to uniformly simplify the point set or to automatically adapt the local density of points to the local variation of the input computed by principal component analysis. - New IO functions for PLY format (Polygon File Format):
CGAL::read_ply_points()
,CGAL::read_ply_points_and_normals()
,CGAL::write_ply_points()
andCGAL::write_ply_points_and_normals()
.
Surface Mesh Parameterization
LSCM_parameterizer_3
now uses by default Eigen instead of OpenNL as a model ofSparseLinearAlgebraTraits_d
.
Spatial Searching
- Added function to find any point in a range query, that is neither all points, nor the closest one.
Principal Component Analysis
- Added a template parameter
DiagonalizeTraits
for functionsCGAL::linear_least_squares_fitting_2()
andCGAL::linear_least_squares_fitting_3()
. This allows to either choose the legacy internal diagonalization code from CGAL or the Eigen implementation (or any class that is a model ofDiagonalizeTraits
). Variants of the function that automatically deduce the kernel also automatically select the diagonalizer, so the API is mostly preserved.
CGAL and Solvers
- This package now includes all CGAL concepts for solvers with models using the third party Eigen library.
CGAL and the Boost Graph Library (BGL)
- Added function
CGAL::split_graph_into_polylines()
that allows to extract from a soup of segments given as a graph, polylines with nodes of degree at most 2. In addition a functor can be passed to the function to specify additional polyline endpoints. - New functions to manipulate selection of faces, edges and vertices
in a halfedge graph are added:
CGAL::expand_face_selection()
,CGAL::reduce_face_selection()
,CGAL::expand_edge_selection()
,CGAL::reduce_edge_selection()
CGAL::expand_vertex_selection()
,CGAL::reduce_vertex_selection()
andCGAL::select_incident_faces()
. - Added a helper function
CGAL::clear
which clears a MutableFaceGraph efficiently and generically.