CGAL 4.11 offers the following improvements and new functionality over CGAL 4.10:
Changelog
3D Periodic Regular Triangulations (new feature)
- Added the class
Periodic_3_regular_triangulation_3
, which provides functionality for 3D periodic weighted Delaunay triangulations. The construction is fully dynamic: it provides both point insertion and vertex removal.
dD Regular Triangulations (new feature)
- Added the class
Regular_triangulation
, which provides functionality for dD weighted Delaunay triangulations. Note that the removal of points is not yet supported.
2D and 3D Linear Geometry Kernel (breaking change)
- Breaking change: The dangerous implicit conversions between
weighted points and points in the concept
Kernel
have been disabled. Constructors offering to build a weighted point from a point (and reversely) are still requested by the conceptKernel
but must now be marked with theexplicit
specifier. - Breaking change: The removal of implicit conversions between
points and weighted points in the concept
Kernel
has incidentally created various minor breaking changes in the following packages: 2D Alpha Shapes, 2D and 3D Triangulations, and 3D Mesh Generation. See the full changelog for details.
Surface Mesh
- Breaking change:
operator >>(std::istream&, Surface_mesh&)
no longer clears the surface mesh.
Triangulated Surface Mesh Parameterization (breaking change)
- Breaking change: The package has been rewritten and can operate
on any model of the
MutableFaceGraph
concept. All previous parameterization methods are still offered, although with a different, simpler API. The documentation has been updated and offers a gentle introduction to the new API. Users who wish to use the former API must use a version prior to 4.11. - Breaking change: The adapter to add virtual seams is now the
class
CGAL::Seam_mesh
in the package CGAL and the BGL. - Breaking change: The package has been restructured and most
headers have been moved. In a general manner, users should replace
<CGAL/XXX.h>
with<CGAL/Surface_mesh_parameterization/XXX.h>
- Add the As Rigid As Possible Parameterization method. This parameterization allows the user to prioritize angle preservation, shape preservation, or a balance of both.
- Add the Orbifold Tutte Embedding method. This parameterization method allows to parameterize meshes that are topological spheres.
3D Surface Subdivision Methods (breaking changes)
- The subdivision algorithms now work on any model of a
MutableFaceGraph
. A new API to the subdivision methods is offered, which uses optional named parameters to pass the number of iterations and a vertex property map. - Breaking change: Removed the headers
<CGAL/Subdivision_method_3.h>
and<CGAL/Subdivision_mask_3.h>
. The headers<CGAL/Subdivision_method_3/subdivision_methods_3.h>
and<CGAL/Subdivision_method_3/subdivision_masks_3.h>
should respectively be used instead. - Sqrt3 subdivision can now handle input surfaces with a border.
Scale-Space Surface Reconstruction (breaking change)
- Breaking change: the API was rewritten to separate the smoothing
and meshing algorithm and making it possible for the user to use
different ones. The default algorithms used are the same as before
this API change, but methods are moved to the classes
Weighted_PCA_smoother
andAlpha_shape_mesher
. - Alternative smoothing and meshing methods are provided:
Jet_smoother
andAdvancing_front_mesher
.
2D Alpha Shapes
- Breaking change: Mirrored the concepts of the 2D alpha shape
package with those of the 3D Alpha Shapes package. Consequently, a
new concept,
WeightedAlphaShapeTraits_2
, is introduced to provide requirements on the traits class for 2D weighted alpha shapes. All models of the conceptKernel
are models of this new concept. - The concept
AlphaShapeTraits_2
now provides requirements on the traits class for 2D basic alpha shapes, and refinesDelaunayTriangulationTraits_2
.
Interpolation
- Breaking change: The concept
GradientFittingTraits
now additionally requests a weighted point typeWeighted_point_d
and a functorConstruct_point_d
. The modelCGAL::Interpolation_gradient_fitting_traits_2
has been appropriately modified to still be a model of the conceptGradientFittingTraits
.
2D and 3D Triangulations
- Breaking change: Added a new functor requirement,
Construct_point_2
, to the conceptsTriangulationTraits_2
andRegularTriangulationTraits_2
and a new functor requirement,Construct_point_3
, to the conceptsTriangulationTraits_3
andRegularTriangulationTraits_3
. All models of the conceptKernel
already provide these functors. - Breaking change: Introduced the concepts
RegularTriangulationVertexBase_2
andRegularTriangulationVertexBase_3
. These concepts describe the requirements on classes meant to represent a vertex of a regular triangulation. Concepts that previously refinedTriangulationVertexBase_2
orTriangulationVertexBase_3
but described in fact a vertex class used in a regular triangulation, such as the conceptMeshVertexBase_3
in the 3D mesh generation package, now refine the corresponding new regular vertex concept. - Breaking change: Uniformized the point type across all vertex
and cell concepts. The triangulation point type name is now always
Point
. Note that this does not change the requirements but only the name:Point
is still expected to be equal toTraits::Point_[23]
for basic and Delaunay triangulations or toTraits::Weighted_point_[23]
for regular triangulations. Consequently:- The concept
RegularTriangulationVertexBase_2
now requests aPoint
type (equal toTraits::Weighted_point_2
) - The concept
RegularTriangulationCellBase_3
now requests aPoint
type instead of aWeighted_point
type (but still equal toTraits::Weighted_point_3
) - The concept
DelaunayTriangulationCellBase_3
now requests aPoint
type instead of aPoint_3
type (but still equal toTraits::Point_3
).
- The concept
- Introduced a new concept,
RegularTriangulationCellBaseWithWeightedCircumcenter_3
, which describes the requirements on a cell of a regular triangulation that caches its circumcenter. The existing classRegular_triangulation_cell_base_with_weighted_circumcenter_3
is the default model of this concept. - Added a new 3D traits class,
Robust_weighted_circumcenter_filtered_traits_3
which provides robust versions of the kernel functorsConstruct_weighted_circumcenter_3
,Compute_squared_radius_3
, andCompute_squared_radius_smallest_orthogonal_sphere_3
. This class can be used as traits class in the theMesh_3
package to efficiently yet robustly generate 3D meshes.
3D Periodic Triangulations
- Added new locate and geometric access functions for 3D periodic triangulations.
- The class
Periodic_3_Delaunay_triangulation_traits_3
now inheritsPeriodic_3_triangulation_traits_3
. - Breaking change: Some geometric access functions in
Periodic_3_triangulation_3
were renamed. The introduction ofPeriodic_3_regular_triangulation_3
required to distinguish between functions such assegment()
returning a segment of weightless points, or a segment of weighted points. As a general rule, previous geometrical access functions will return objects with point type that of the triangulation (thus, weighted objects when using weighted triangulations) and functions containingconstruct
in the name will always return weightless geometrical objects. - Breaking change: The concept
Periodic_3TriangulationTraits_3
now requests a domain getter:get_domain()
. - Introduced a new concept,
RegularTriangulationCellBaseWithWeightedCircumcenter_3
, which describes the requirements on a cell of a regular triangulation that caches its circumcenter. The existing classRegular_triangulation_cell_base_with_weighted_circumcenter_3
is the default model of this concept.
3D Mesh Generation
- Breaking change: The type of the surface center in the concept
MeshCellBase_3
has been changed fromTriangulation::Point
toTriangulationTraits::Point_3
to reflect that it is a weightless point. - Breaking change: The function
invalidate_circumcenter()
of the conceptMeshCellBase_3
is renamed toinvalidate_weighted_circumcenter_cache()
and moved to the new conceptRegularTriangulationCellBaseWithWeightedCircumcenter_3
, which the conceptMeshCellBase_3
now refines. - Added a new type of polyhedral domain with features,
Polyhedral_complex_mesh_domain_3
. The domain is defined by a collection of triangulated surfaces, forming a complex.
Poisson Surface Reconstruction
- A new global function
CGAL::poisson_surface_reconstruction_delaunay()
is provided in addition to the current class-based API in order to make it easier to use.
Point Set Processing
- New functions to read from and write to LAS/LAZ files (LIDAR format), with or without taking additional properties into account.
- Breaking change: The API of the PLY function to read points with
properties is modified for unification with LAS (see
CGAL::read_ply_points_with_properties()
). A new function to write PLY with properties is provided (CGAL::write_ply_points_with_properties()
).
Spatial Searching
- Added function
Kd_tree::remove(Point)
.
3D Fast Intersection and Distance Computation
- Added a template parameter to
AABB_traits
for a property map that associates a bounding box to a primitive.
CGAL and the Boost Graph Library
- Added a partial specialization for the class
CGAL::Linear_cell_complex_for_combinatorial_map
so that it is a model of the graph conceptsBidirectionalGraph
andEdgeAndVertexListGraph
and of the conceptMutableFaceGraph
. This class can thus now be used in all BGL functions and algorithms. - Helper functions to create an icosahedron, a regular prism and a pyramid have been added.
- Added class
CGAL::Face_filtered_graph
that wraps an existing graph and hide all simplices that are not in the selected connected components. - Added the class
CGAL::Seam_mesh
. TheSeam_mesh
is a graph adaptor which allows to create virtual borders when marking edges as seam edges. - Added the functions
read_off()
andwrite_off()
.