CGAL 3.8 beta1 released

CGAL 3.8 beta1 released


Download CGAL-3.8 beta1

CGAL-3.8 beta documentation

CGAL 3.8 offers the following improvements and new functionality over CGAL 3.7:

Changelog

General

  • Boost version 1.39 (or later) is now required.
  • Initial support for the LLVM Clang compiler (prereleases of version 2.9).
  • Full support for the options -strict-ansi of the Intel Compiler 11, and -ansi of the GNU g++ compiler.
  • Added a concept of ranges. In the following releases, it will be the way to provide a set of objects (vs. a couple of iterators).
  • Fixed a memory leak in CORE polynomials.
  • Various fixes in the manual.

3D Mesh Generation (major new feature added)

  • Adding the possibility to handle sharp features: the 3D Mesh generation package now offers the possibility to get in the final mesh an accurate representation of 1-dimensional sharp features present in the description of the input domain.

2D Triangulations (major new feature added)

  • Added a way to efficiently insert a range of points with information into a 2D Delaunay and regular triangulation.
  • Added member function mirror_edge() taking an edge as parameter.
  • Fixed an infinite loop in constrained triangulation.

3D Triangulations (major new feature added)

  • Added a way to efficiently insert a range of points with information into a 3D Delaunay and regular triangulation.
  • Added a member function to remove a cluster of points from a Delaunay or regular triangulation.
  • The function vertices_in_conflict() is renamed vertices_on_conflict_zone_boundary() for Delaunay and regular triangulation. Function vertices_inside_conflict_zone() is added to regular triangulation.
  • Structural filtering is now internally used in the locate() function of Delaunay and regular triangulation. It improves average construction time by 20%.
  • Added demo.

3D Alpha Shapes (major new feature added)

  • The new class Fixed_alpha_shape_3 provides a robust and faster way to compute one alpha shape (with a fixed value of alpha).

AABB tree

  • Adding the possibility to iteratively add primitives to an existing tree and to build it only when no further insertion is needed.

2D and 3D Kernel

  • Better handling of 2D points with elevation (3D points projected onto trivial planes). More general traits classes (Projection_traits_xy_3, Projection_traits_yz_3, Projection_traits_yz_3) are provided to work with triangulations, algorithms on polygons, alpha-shapes, convex hull algorithm… Usage of former equivalent traits classes in different packages is now deprecated.
  • Exact_predicates_exact_constructions_kernel now better use the static filters which leads to performance improvements.
  • Add an overload for the global function angle, taking three 3D points.
  • In the 2D and 3D kernel concept, the constant Boolean Has_filtered_predicates is now deprecated. It is now required to use Has_filtered_predicates_tag (being either Tag_true or Tag_false).
  • Compare_distance_2 and Compare_distance_3 provide additional operators for 3 and 4 elements.
  • Add intersection test and intersection computation capabilities between an object of type Ray_3 and either an object of type Line_3, Segment_3 or Ray_3.
  • Improve intersection test performance between an object of type Bbox_3 and an object of type Plane_3 or Triangle_3 by avoiding arithmetic filter failures.

2D Envelope

  • Env_default_diagram_1 is deprecated, Envelope_diagram_1 should be used instead.

3D Envelope

  • A new demo program called L1_Voronoi_diagram_2 has been introduced. It demonstrates how 2D Voronoi diagrams of points under the L1 metric are constructed using lower envelopes.

dD Kernel

  • Added functor Compute_coordinate_d to the Kernel_d concept.

Geometric Object Generators

  • CGAL::Random uses boost::rand48 instead of std::rand.
  • Added to CGAL::Random a way to generate random integers.
  • Added generators for dD points.

Algebraic Foundations

  • Algebraic_structure_traits now provides an Inverse functor for Fields. There is also a new global function inverse.

Bounding Volumes

  • dD Min sphere of spheres has a new traits class for the min sphere of points.

Triangulated Surface Mesh Simplification

  • The priority queue internally used to prioritize edge simplifications is no longer a relaxed heap but a binomial heap. This fix guarantees that all edges satisfying a simplification criteria are removed (if possible).

3D Boolean Operations on Nef Polyhedra

  • Allow construction of a 3D nef polyhedron from a 3D polyhedron with normals.

2D Arrangements

  • Fixe a bug in the method insert_at_vertices of the Arrangement_2 class.
  • Fixed several bugs in the traits class Arr_Bezier_curve_traits_2 for arrangement of Bezier curves.

2D Minkowski Sums

  • A bug in the convolution method was fixed.