CGAL 4.14 offers the following improvements and new functionality over CGAL 4.13:
Changelog
2D Periodic Hyperbolic Triangulations (new package)
- This package allows the computation of Delaunay triangulations of the Bolza surface. The Bolza surface is the most symmetric hyperbolic surface of genus 2. Its fundamental domain is the regular hyperbolic octagon with angles π/4 centered at the origin of the Poincaré disk. Triangulations of the Bolza surface can be seen as triangulations of the hyperbolic plane that are periodic in the four directions defined by the sides of this regular octagon.
2D Hyperbolic Triangulations (new package)
- This package allows the computation of Delaunay Triangulations of sets of points in the Poincaré disk, which is one of the conformal models for the hyperbolic plane.
The Heat Method (new package)
- This package provides an algorithm that solves the single- or multiple-source shortest path problem by returning an approximation of the geodesic distance for all vertices of a triangle mesh to the closest vertex in a given set of source vertices.
Triangulated Surface Mesh Approximation (new package)
- This package implements the Variational Shape Approximation method to approximate an input surface triangle mesh by a simpler surface triangle mesh.
Polygon Mesh Processing package
- Added the following new functions to detect and repair issues in
polygon soups:
CGAL::Polygon_mesh_processing::remove_isolated_points_in_polygon_soup()
, which detects and removes points that are not used in any polygon of the soup.CGAL::Polygon_mesh_processing::merge_duplicate_points_in_polygon_soup()
, which detects and merges points that share the same geometric position.CGAL::Polygon_mesh_processing::merge_duplicate_polygons_in_polygon_soup()
, which detects and merges polygons that are identical.CGAL::Polygon_mesh_processing::repair_polygon_soup()
, which applies a number of repairing steps (a subset of which are the functions above) to clean and repair a polygon soup.
- Added the following new functions to detect and repair
degeneracies in polygon meshes:
CGAL::Polygon_mesh_processing::degenerate_edges()
CGAL::Polygon_mesh_processing::degenerate_faces()
CGAL::Polygon_mesh_processing::is_non_manifold_vertex()
CGAL::Polygon_mesh_processing::is_degenerate_triangle_face()
CGAL::Polygon_mesh_processing::is_degenerate_edge()
CGAL::Polygon_mesh_processing::is_needle_triangle_face()
CGAL::Polygon_mesh_processing::is_cap_triangle_face()
CGAL::Polygon_mesh_processing::duplicate_non_manifold_vertices()
CGAL::Polygon_mesh_processing::extract_boundary_cycles()
CGAL::Polygon_mesh_processing::merge_duplicated_vertices_in_boundary_cycle()
CGAL::Polygon_mesh_processing::merge_duplicated_vertices_in_boundary_cycles()
- Added the class
CGAL::Rigid_triangle_mesh_collision_detection
to detect intersections between meshes and volumes undergoing affine transformations.
Regularized Boolean Set Operations in 2D package
- Fixed the validation of orientation of relative simple polygons.
Point Set Processing
CGAL::mst_orient_normals()
can now be called with a set of user-selected seed points that are known to be already oriented. A new optional named parameterpoint_is_constrained_map
is added for this purpose. The original behavior (using one unique and automatically selected seed) is kept if this parameter is not used.
Classification
- Added a new experimental classifier
TensorFlow::Neural_network_classifier
. - For uniformity,
ETHZ_random_forest_classifier
is renamedETHZ::Random_forest_classifier
andOpenCV_random_forest_classifier
is renamedOpenCV::Random_forest_classifier
. - The training algorithm of
ETHZ::Random_forest_classifier
was parallelized. - Added a constructor to copy a
ETHZ::Random_forest_classifier
using a different data set as input. - Added 3 new geometric features,
Height_above
,Height_below
andVertical_range
.
3D Fast Intersection and Distance Computation
- The primitives
AABB_face_graph_triangle_primitive
andAABB_halfedge_graph_segment_primitive
now use asId
a pair of descriptor and graph pointer in the case they are configured to deal with a possible different graph per primitive (configuration set using a template tag).
2D Arrangements
- Fixed a bug in the surface-sweep framework (
Surface_sweep_2
) that ensures that an event is never left without (left or right) curves. - Fixed a constructor of
Arr_counting_traits.h
. (In particular, added missing const of a parameter). - Fixed zone computation of a curve in cases where the lexicographic smallest end of the curve lies on the parameter space.
- Implemented missing function object
Compare_x_near_boundary
ofArr_polyline_traits_2
,Arr_polycurve_traits_2
, andArr_polycurve_basic_traits_2
.
2D and 3D Mesh Generation
- Added two functions for writing in XML VTK formats:
CGAL::write_vtu()
, that writes a 2D mesh in a.vtu
file,CGAL::output_to_vtu()
, that writes a 3D mesh in a.vtu
file.
2D Minkowski Sums
- Fixed a bug in the function that computed the Minkowski sum using the reduced-convolution method. In particular, correctly handled the case where one of the summands does not have an outer boundary.
3D Point Set
- Added a method
copy_properties()
that allows to copy the properties from a point set to another one (without copying the content); - Added a method
insert(const Point_set&, const Index&)
to copy a point along with all its associated properties from another point set; remove()
methods now only invalidate theend()
iterator instead of invalidating all iterators;- Added a method
is_removed()
that takes an index as argument; - Added a method
cancel_removals()
to restore removed points (if no point was inserted since then an garbage was not collected); - Breaking change: unified API of method
add_normal_map()
withadd_property_map()
: it now returns a pair of property map + bool (that tells if the property was added) instead of just the property map; - Added a method
properties_and_types()
in addition toproperties()
: this new one returns pairs ofstd::string
+std::type_info
in order to also know the type of each property.
CGAL and the Boost Graph Library (BGL)
- Added function
write_wrl()
for writing into VRML 2.0 format. - Added functions
CGAL::write_vtp()
for writing a triangulated face graph in a.vtp
file (XML VTK format).