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 renamedvertices_on_conflict_zone_boundary()
for Delaunay and regular triangulation. Functionvertices_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
orTag_false
). Compare_distance_2
andCompare_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 typeLine_3
,Segment_3
orRay_3
. - Improve intersection test performance between an object of type
Bbox_3
and an object of typePlane_3
orTriangle_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 theKernel_d
concept.
Geometric Object Generators
CGAL::Random
usesboost::rand48
instead ofstd::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.