The public CGAL repository, see the README below
OTHER License
Bot releases are hidden (Show)
CGAL-5.6.1 is a bug-fix release.
See on Github the list of bugs that were solved since CGAL-5.6.
Published by lrineau 8 months ago
CGAL-5.5.4 is a bug-fix release.
See on Github the list of bugs that were solved since CGAL-5.5.3.
Published by lrineau about 1 year ago
The CGAL Open Source Project is pleased to announce the release 5.6 of CGAL, the Computational Geometry Algorithms Library.
Besides fixes and general enhancement to existing packages, the following has changed since CGAL 5.5:
CGAL_triangulation_assertion
) have been removed. Corresponding CGAL-wide versions (such as CGAL_assertion
) should be used instead.FaceGraph
models. In particular, the notion of Item
has been introduced to reference an element in the input range of elements. Region maps now operates on Item
and no longer on the value type of the input range.update()
in the concept RegionType
now returns a Boolean
instead of void
, that is used inside the class Region_growing
for detecting if the input conditions for the new region are satisfied. This change affects only user-defined types of regions.RegionType
for getting linear regions in a set of 2D and 3D segments and on 2D and 3D polylines.Polyline_graph
for extracting a set of polylines from a face graph, which splits this graph into a set of user-defined regions.CompareAngle_3
to the concept Kernel
to compare an angle defined by three points to the cosinus of another angle.std::size_t
, they can be used as index into vectors which store properties. To use the index version, Use_index
must be defined and be equal to CGAL::Tag_true
in the item class.Linear_cell_complex_incremental_builder_3
.draw(arr)
, that renders arrangements based on the Basic_viewer_qt
class template. As of now, only 2D arrangements on the plane induced by (i) segments, (ii) conics, and (iii) circular arcs or (linear) segments are supported.Arr_conic_traits_2
. This includes the following: 1. Fixed a couple of bugs and slightly optimized some functions. 2. Introduced functionality that approximates conics with polylines. (This is used to draw conic curves.) 3. Breaking change: Changed the interface to generate conic curves. In the past, curves where generated directly using the constructors of the conic and x-monotone conic constructs. Now, they are constructed via function objects provided by the traits. This eliminates the constructions of temporary kernels. The old functionality is obsolete, but still supported for a limited number of versions. It depends on a static member function of the traits. In a future version this function will no longer be static, implying that the old functionality will no longer be supported.Added functions CGAL::Polygon_mesh_processing::region_growing_of_planes_on_faces()
and CGAL::Polygon_mesh_processing::detect_corners_of_regions()
, which enable partitioning a mesh into planar regions using the region growing algorithm from the Shape Detection package.
Added the functions CGAL::Polygon_mesh_processing::remesh_planar_patches()
and CGAL::Polygon_mesh_processing::remesh_almost_planar_patches()
, which can be used to remesh patches of coplanar faces in a mesh.
Added the function CGAL::Polygon_mesh_processing::surface_Delaunay_remeshing()
, which can be used to remesh a surface triangle mesh using the Delaunay refinement algorithm from the 3D Mesh Generation package.
Added the function CGAL::Polygon_mesh_processing::remove_almost_degenerate_faces()
, which can be used to remove badly shaped triangles faces in a mesh.
Added the functions CGAL::Polygon_mesh_processing::does_triangle_soup_self_intersect()
and CGAL::Polygon_mesh_processing::triangle_soup_self_intersections()
to identify and report self-intersections in a triangle soup, similarly to existing functions on triangle meshes.
Added the function CGAL::Polygon_mesh_processing::triangulate_polygons()
, which allows users to triangulate polygon soups.
Added a named parameter to CGAL::Polygon_mesh_processing::smooth_shape()
to disable the scaling, which otherwise aims to compensate volume loss during smoothing.
Deprecated the overloads of functions CGAL::Polygon_mesh_processing::triangulate_hole()
, CGAL::Polygon_mesh_processing::triangulate_and_refine_hole()
, and CGAL::Polygon_mesh_processing::triangulate_refine_and_fair_hole()
which have output iterators for vertices and faces as parameter. They are replaced by overloads with two additional named parameters.
ConvexHullTraits_2
no longer requires the functor Less_signed_distance_to_line_2
, but requires the functor Compare_signed_distance_to_line_2
instead.Convex_hull_projective_xy_traits_2
, Convex_hull_projective_xz_traits_2
, and Convex_hull_projective_yz_traits_2
have been removed. Users should use Projection_traits_xy_3
, Projection_traits_xz_3
, and Projection_traits_yz_3
instead.CGAL::mark_domain_in_triangulation()
to mark faces connected with non-constrained edges as inside of the domain based on the nesting level.write_VTU()
, with property maps for specifying the domain.CGAL::lloyd_optimize_mesh_2()
.refine_Delaunay_mesh()
, and replaced them with versions using function named parameters.HyperbolicTriangulationFaceBase_2
has been modified to better reflect the triangulation's requirements and avoid a conflict with the requirements described by the concept TriangulationDataStructure_2::Face
. The model CGAL::Hyperbolic_triangulation_face_base_2
has been adapted correspondingly.MeshComplex_3InTriangulation_3
to describe 3D simplicial meshes, and makes the data structure independent from the tetrahedral mesh generation package.CGAL::Tetrahedral_remeshing::Remeshing_vertex_base_3
and CGAL::Tetrahedral_remeshing::Remeshing_cell_base_3
have been modified.CGAL::create_labeled_image_mesh_domain()
for automatic detection and protection of 1D-curves that lie at the intersection of three or more subdomains extracted from labeled images.CGAL::Sizing_field_with_aabb_tree
, a geometry-aware sizing field for feature edges in polyhedral domains.edge_min_size
to avoid subdividing sharp edges that are shorter than a prescribed size bound.facet_min_size
and cell_min_size
to prevent Delaunay refinement from creating simplices smaller than a prescribed bound.Count_stop_predicate
and Count_ratio_stop_predicate
are renamed to Edge_count_stop_predicate
and Edge_count_ratio_stop_predicate
. Older versions have been deprecated.Face_count_stop_predicate
and Face_count_ratio_stop_predicate
, which can be used to stop the simplification algorithm based on a desired number of faces in the output, or a ratio between input and output face numbers.GeneralPolygonWithHoles_2
concept (e.g., clear_outer_boundary()
, clear_holes()
, and clear()
).CGAL::Triangulation_3
does not compile with MSVC 2015.Published by lrineau about 1 year ago
CGAL-5.5.3 is a bug-fix release.
See on Github the list of bugs that were solved since CGAL-5.5.2.
Published by lrineau about 1 year ago
CGAL-5.4.5 is a bug-fix release.
See on Github the list of bugs that were solved since CGAL-5.4.4.
Published by lrineau over 1 year ago
The CGAL Open Source Project is pleased to announce the release 5.6 Beta 1 of CGAL, the Computational Geometry Algorithms Library.
CGAL version 5.6 Beta 1 is a public testing release. It should provide a solid ground to report bugs that need to be tackled before the release of the final version of CGAL 5.6 in July 2023.
Besides fixes and general enhancement to existing packages, the following has changed since CGAL 5.5:
CGAL_triangulation_assertion
) have been removed. Corresponding CGAL-wide versions (such as CGAL_assertion
) should be used instead.FaceGraph
models. In particular, the notion of Item
has been introduced to reference an element in the input range of elements. Region maps now operates on Item
and no longer on the value type of the input range.update()
in the concept RegionType
now returns a Boolean
instead of void
, that is used inside the class Region_growing
for detecting if the input conditions for the new region are satisfied. This change affects only user-defined types of regions.RegionType
for getting linear regions in a set of 2D and 3D segments and on 2D and 3D polylines.Polyline_graph
for extracting a set of polylines from a face graph, which splits this graph into a set of user-defined regions.CompareAngle_3
to the concept Kernel
to compare an angle defined by three points to the cosinus of another angle.std::size_t
, they can be used as index into vectors which store properties. To use the index version, Use_index
must be defined and be equal to CGAL::Tag_true
in the item class.Linear_cell_complex_incremental_builder_3
.draw(arr)
, that renders arrangements based on the Basic_viewer_qt
class template. As of now, only 2D arrangements on the plane induced by (i) segments, (ii) conics, and (iii) circular arcs or (linear) segments are supported.Arr_conic_traits_2
. This includes the following: 1. Fixed a couple of bugs and slightly optimized some functions. 2. Introduced functionality that approximates conics with polylines. (This is used to draw conic curves.) 3. Breaking change: Changed the interface to generate conic curves. In the past, curves where generated directly using the constructors of the conic and x-monotone conic constructs. Now, they are constructed via function objects provided by the traits. This eliminates the constructions of temporary kernels. The old functionality is obsolete, but still supported for a limited number of versions. It depends on a static member function of the traits. In a future version this function will no longer be static, implying that the old functionality will no longer be supported.Added functions CGAL::Polygon_mesh_processing::region_growing_of_planes_on_faces()
and CGAL::Polygon_mesh_processing::detect_corners_of_regions()
, which enable partitioning a mesh into planar regions using the region growing algorithm from the Shape Detection package.
Added the functions CGAL::Polygon_mesh_processing::remesh_planar_patches()
and CGAL::Polygon_mesh_processing::remesh_almost_planar_patches()
, which can be used to remesh patches of coplanar faces in a mesh.
Added the function CGAL::Polygon_mesh_processing::surface_Delaunay_remeshing()
, which can be used to remesh a surface triangle mesh using the Delaunay refinement algorithm from the 3D Mesh Generation package.
Added the function CGAL::Polygon_mesh_processing::remove_almost_degenerate_faces()
, which can be used to remove badly shaped triangles faces in a mesh.
Added the functions CGAL::Polygon_mesh_processing::does_triangle_soup_self_intersect()
and CGAL::Polygon_mesh_processing::triangle_soup_self_intersections()
to identify and report self-intersections in a triangle soup, similarly to existing functions on triangle meshes.
Added the function CGAL::Polygon_mesh_processing::triangulate_polygons()
, which allows users to triangulate polygon soups.
Added a named parameter to CGAL::Polygon_mesh_processing::smooth_shape()
to disable the scaling, which otherwise aims to compensate volume loss during smoothing.
Deprecated the overloads of functions CGAL::Polygon_mesh_processing::triangulate_hole()
, CGAL::Polygon_mesh_processing::triangulate_and_refine_hole()
, and CGAL::Polygon_mesh_processing::triangulate_refine_and_fair_hole()
which have output iterators for vertices and faces as parameter. They are replaced by overloads with two additional named parameters.
ConvexHullTraits_2
no longer requires the functor Less_signed_distance_to_line_2
, but requires the functor Compare_signed_distance_to_line_2
instead.Convex_hull_projective_xy_traits_2
, Convex_hull_projective_xz_traits_2
, and Convex_hull_projective_yz_traits_2
have been removed. Users should use Projection_traits_xy_3
, Projection_traits_xz_3
, and Projection_traits_yz_3
instead.CGAL::mark_domain_in_triangulation()
to mark faces connected with non-constrained edges as inside of the domain based on the nesting level.write_VTU()
, with property maps for specifying the domain.CGAL::lloyd_optimize_mesh_2()
.refine_Delaunay_mesh()
, and replaced them with versions using function named parameters.HyperbolicTriangulationFaceBase_2
has been modified to better reflect the triangulation's requirements and avoid a conflict with the requirements described by the concept TriangulationDataStructure_2::Face
. The model CGAL::Hyperbolic_triangulation_face_base_2
has been adapted correspondingly.MeshComplex_3InTriangulation_3
to describe 3D simplicial meshes, and makes the data structure independent from the tetrahedral mesh generation package.CGAL::create_labeled_image_mesh_domain()
for automatic detection and protection of 1D-curves that lie at the intersection of three or more subdomains extracted from labeled images.CGAL::Sizing_field_with_aabb_tree
, a geometry-aware sizing field for feature edges in polyhedral domains.edge_min_size
to avoid subdividing sharp edges that are shorter than a prescribed size bound.facet_min_size
and cell_min_size
to prevent Delaunay refinement from creating simplices smaller than a prescribed bound.Count_stop_predicate
and Count_ratio_stop_predicate
are renamed to Edge_count_stop_predicate
and Edge_count_ratio_stop_predicate
. Older versions have been deprecated.Face_count_stop_predicate
and Face_count_ratio_stop_predicate
, which can be used to stop the simplification algorithm based on a desired number of faces in the output, or a ratio between input and output face numbers.GeneralPolygonWithHoles_2
concept (e.g., clear_outer_boundary()
, clear_holes()
, and clear()
).Published by lrineau over 1 year ago
CGAL-5.4.4 is a bug-fix release.
See on Github the list of bugs that were solved since CGAL-5.4.3.
Published by lrineau over 1 year ago
CGAL-5.5.2 is a bug-fix release.
See on Github the list of bugs that were solved since CGAL-5.5.1.
Published by lrineau about 2 years ago
CGAL-5.5.1 is a bug-fix release.
See on Github the list of bugs that were solved since CGAL-5.5.
Published by lrineau about 2 years ago
CGAL-5.4.3 is a bug-fix release.
See on Github the list of bugs that were solved since CGAL-5.4.2.
Published by lrineau over 2 years ago
The CGAL Open Source Project is pleased to announce the release 5.5 of CGAL, the Computational Geometry Algorithms Library.
Besides fixes and general enhancement to existing packages, the following has changed since CGAL 5.4:
This component takes a 3D triangle mesh, soup, or point set as input, and generates a valid (watertight, intersection-free, and combinatorially 2-manifold) surface triangle mesh that contains the input.
The algorithm proceeds by shrink-wrapping and refining a 3D Delaunay triangulation, starting from a loose bounding box of the input.
Two user-defined parameters, alpha and offset, offer control over the maximum size of cavities where the shrink-wrapping process can enter, and the tightness of the final surface mesh to the input, respectively. Once combined, these parameters provide a means to trade fidelity
to the input for complexity of the output.
See also the announcement page.
CGAL::convex_hull_3()
, which writes the result in an indexed triangle set.GeneralPolygonWithHoles_2
now requires the nested type Polygon_2
instead of General_polygon_2
.GeneralPolygonSetTraits_2
now requires the nested type Construct_polygon_with_holes_2
instead of Construct_general_polygon_with_holes_2
.intersect_2
, compare_y_at_x_right
, and compare_y_at_x_left
function objects of the traits class template Arr_geodesic_arc_on_sphere_traits_2
that handles geodesic arcs on sphere and applied a small syntactical fix to the tracing traits.remove_isolated_vertices()
as a post-processing step for the tetrahedral mesh generation.CGAL::Polygon_mesh_processing::orient_triangle_soup_with_reference_triangle_soup()
, which enables re-orienting the faces of a triangle soup based on the orientation of the nearest face in a reference triangle soup.CGAL::Polygon_mesh_processing::compatible_orientations()
, which enables to retrieve the (in)compatibility of orientations of faces from different connected components.CGAL::Polygon_mesh_processing::tangential_relaxation()
, which applies an area-based tangential mesh smoothing to the vertices of a surface triangle mesh.visitor
to the function triangulate_hole()
, which enables to track progress with callbacks.GarlandHeckbert_plane_policies
, GarlandHeckbert_probabilistic_plane_policies
, GarlandHeckbert_triangle_policies
, and GarlandHeckbert_probabilistic_triangle_policies
.GarlandHeckbert_policies
has been deprecated, GarlandHeckbert_plane_policies
replaces it.min_points_per_cell
has been added to grid_simplify_point_set()
. By adding a minimal number of points in a cell such that a point is retained, one can also filter out low density areas and outliers: in the case of densely sampled point clouds, this yields better results than using grid simplification and then outlier removal, while being very vast. The default value is 1
to keep the previous behavior as default.write_graphviz()
to the class Kd_tree
that writes the tree in a stream in the Graphviz format.invert_selection()
in the class Face_filtered_graph
, which toggles the selected status of a graph: selected faces are deselected, and unselected faces are selected.Published by lrineau over 2 years ago
CGAL-5.4.2 is a bug-fix release.
See on Github the list of bugs that were solved since CGAL-5.4.1.
Published by lrineau over 2 years ago
The CGAL Open Source Project is pleased to announce the release 5.5 Beta 1 of CGAL, the Computational Geometry Algorithms Library.
CGAL version 5.5 Beta 1 is a public testing release. It should provide a solid ground to report bugs that need to be tackled before the release of the final version of CGAL 5.5 in July 2022.
Besides fixes and general enhancement to existing packages, the following has changed since CGAL 5.4:
This component takes a 3D triangle mesh, soup, or point set as input, and generates a valid (watertight, intersection-free, and combinatorially 2-manifold) surface triangle mesh that contains the input.
The algorithm proceeds by shrink-wrapping and refining a 3D Delaunay triangulation, starting from a loose bounding box of the input.
Two user-defined parameters, alpha and offset, offer control over the maximum size of cavities where the shrink-wrapping process can enter, and the tightness of the final surface mesh to the input, respectively. Once combined, these parameters provide a means to trade fidelity
to the input for complexity of the output.
See also the announcement page.
CGAL::convex_hull_3()
, which writes the result in an indexed triangle set.GeneralPolygonWithHoles_2
now requires the nested type Polygon_2
instead of General_polygon_2
.GeneralPolygonSetTraits_2
now requires the nested type Construct_polygon_with_holes_2
instead of Construct_general_polygon_with_holes_2
.intersect_2
, compare_y_at_x_right
, and compare_y_at_x_left
function objects of the traits class template Arr_geodesic_arc_on_sphere_traits_2
that handles geodesic arcs on sphere and applied a small syntactical fix to the tracing traits.remove_isolated_vertices()
as a post-processing step for the tetrahedral mesh generation.CGAL::Polygon_mesh_processing::orient_triangle_soup_with_reference_triangle_soup()
, which enables re-orienting the faces of a triangle soup based on the orientation of the nearest face in a reference triangle soup.CGAL::Polygon_mesh_processing::compatible_orientations()
, which enables to retrieve the (in)compatibility of orientations of faces from different connected components.CGAL::Polygon_mesh_processing::tangential_relaxation()
, which applies an area-based tangential mesh smoothing to the vertices of a surface triangle mesh.visitor
to the function triangulate_hole()
, which enables to track progress with callbacks.GarlandHeckbert_plane_policies
, GarlandHeckbert_probabilistic_plane_policies
, GarlandHeckbert_triangle_policies
, and GarlandHeckbert_probabilistic_triangle_policies
.GarlandHeckbert_policies
has been deprecated, GarlandHeckbert_plane_policies
replaces it.min_points_per_cell
has been added to grid_simplify_point_set()
. By adding a minimal number of points in a cell such that a point is retained, one can also filter out low density areas and outliers: in the case of densely sampled point clouds, this yields better results than using grid simplification and then outlier removal, while being very vast. The default value is 1
to keep the previous behavior as default.write_graphviz()
to the class Kd_tree
that writes the tree in a stream in the Graphviz format.invert_selection()
in the class Face_filtered_graph
, which toggles the selected status of a graph: selected faces are deselected, and unselected faces are selected.Published by lrineau over 2 years ago
CGAL-5.4.1 is a bug-fix release.
See on Github the list of bugs that were solved since CGAL-5.4.
Published by lrineau over 2 years ago
CGAL-5.3.2 is a bug-fix release.
See on Github the list of bugs that were solved since CGAL-5.3.1.
Published by lrineau over 2 years ago
The CGAL Open Source Project is pleased to announce the release 5.4 of CGAL, the Computational Geometry Algorithms Library.
Besides fixes and general enhancement to existing packages, the following has changed since CGAL 5.3:
Added the cmake target CGAL::CGAL_Basic_viewer
to ease the compilation of programs using the basic viewer-based function CGAL::draw()
. This target will define the macro and link with CGAL_Qt5
target when linked with it.
The kernel providing exact constructions and exact predicates (CGAL::Exact_predicates_exact_constructions_kernel
) is now thread-safe. See changes in 2D and 3D Linear Geometry Kernel
for more details.
The class Geomview_stream
and all the dependent features have been removed from CGAL. Those features were actually no longer supported since CGAL-5.3 but it was not properly announced.
Segment_coordinates_2.h
and Triangle_coordinates_2.h
are renamed to segment_coordinates_2.h
and triangle_coordinates_2.h
.Segment_coordinates_2
and Triangle_coordinates_2
are deprecated. The free functions compute_segment_coordinates_2()
and compute_triangle_coordinates_2()
are deprecated as well. Instead, the free functions segment_coordinates_2()
and triangle_coordinates_2()
should be used.Query_point_location
and Type_of_algorithm
are deprecated. Instead, the enum Computation_policy_2
should be used.Wachspress_2
, Discrete_harmonic_2
, Mean_value_2
, and Generalized_barycentric_coordinates_2
are deprecated. As consequence, the concept BarycentricCoordinates_2
is deprecated as well. Instead, the classes Wachspress_coordinates_2
, Discrete_harmonic_coordinates_2
, and Mean_value_coordinates_2
should be used.Harmonic_coordinates_2
to compute approximate harmonic coordinates in 2D. These coordinates satisfy all properties of barycentric coordinates inside any simple polygon.DiscretizedDomain_2
and a model of this concept called Delaunay_domain_2
, which is based on the Mesh 2 package. A model of this concept is required to use Harmonic_coordinates_2
.Most operations on CGAL::Exact_predicates_exact_constructions_kernel
objects are now thread-safe if CGAL::Exact_rational
is mpq_class
(from GMPXX
), boost::multiprecision::mpq_rational
or CGAL::Quotient<CGAL::MP_Float>
. The objects are not atomic though, so the usual restrictions on avoiding race conditions apply. For users who do not use threads, this can be disabled with CGAL_HAS_NO_THREADS
.
Added documentation for the class Projection_traits_3
, which enables the use of 2D algorithms on the projections of 3D data onto an arbitrary plane.
Added construct_centroid_2_object()
and compute_determinant_2_object()
in Projection_traits_xy_3
, Projection_traits_xz_3
, and Projection_traits_yz_3
classes.
Added the functor NonZeroCoordinateIndex_3
to the concept Kernel
with int operator()(Vector_3)
which returns the index of any coordinate of the vector different from zero, or -1
.
Epeck_d
objects are now thread-safe, see 2D and 3D Linear Geometry Kernel for details.Breaking Change: The traits function objects Compare_x_at_limit_2
and Compare_x_near_limit_2
are renamed to Compare_x_on_boundary_2
and Compare_x_near_boundary_2
, respectively.
A new hierarchy of traits concepts has been introduced. It captures all the valid combinations of boundary conditions for the 4 boundary sides of the parameter space. The 4 boundaries are Bottom, Top, Left, and Right. Each boundary side can be either contracted, identified, close, open, or oblivious. Not all possible combinations are valid. If one side is identified then the other must be as well. Two adjacent sides cannot be contracted.
A new geometric traits, Arr_geodesic_arc_on_sphere_traits_2
has been introduced. It handles arcs of great circles embedded on the unit sphere.
UsePolylines
) to all free functions ( complement()
, do_intersect()
, intersection()
, join()
, difference()
, symmetric_difference()
, and oriented_side
) to control whether to use Arr_polyline_traits_2
as default traits. It is the new default as it provides better performances in general.CGAL::Mesh_3::generate_label_weights()
to generate the weights.Added the function CGAL::Polygon_mesh_processing::match_faces()
, which, given two polygon meshes, identifies their common faces as well as faces present in only either of them.
Added the functions: CGAL::Polygon_mesh_processing::bounded_error_Hausdorff_distance()
that computes an estimate of the one-sided Hausdorff distance between two triangle meshes which is bounded by a user-specified error bound; CGAL::Polygon_mesh_processing::bounded_error_symmetric_Hausdorff_distance()
that computes an estimate of the symmetric Hausdorff distance bounded by a user-specified error bound; and CGAL::Polygon_mesh_processing::is_Hausdorff_distance_larger()
that returns true
if the bounded-error Hausdorff distance between two meshes is larger than the user-specified max distance.
Added the functions CGAL::Polygon_mesh_processing::squared_edge_length()
and CGAL::Polygon_mesh_processing::squared_face_area()
, which, compared to CGAL::Polygon_mesh_processing::edge_length()
and CGAL::Polygon_mesh_processing::face_area()
, enable avoiding square-root operations.
Added more functions in the visitor of the corefinement based methods to track all vertex creations.
Added an option to CGAL::Polygon_mesh_processing::self_intersections()
to report only a limited number of intersections (maximum_number()
).
Compute_squared_length_3
providing operator(const Vector_3& v)
, which computes the squared length of v
, to the HeatMethodTraits_3
concept.libpointmatcher::GenericDescriptorOutlierFilter
that enables providing a map from a point to a weight associated with this point.Published by lrineau almost 3 years ago
The CGAL Open Source Project is pleased to announce the release 5.4 Beta 1 of CGAL, the Computational Geometry Algorithms Library.
CGAL version 5.4 Beta 1 is a public testing release. It should provide a solid ground to report bugs that need to be tackled before the release of the final version of CGAL 5.4 in January 2022.
Besides fixes and general enhancement to existing packages, the following has changed since CGAL 5.3:
Added the cmake target CGAL::CGAL_Basic_viewer
to ease the compilation of programs using the basic viewer-based function CGAL::draw()
. This target will define the macro and link with CGAL_Qt5
target when linked with it.
The kernel providing exact constructions and exact predicates (CGAL::Exact_predicates_exact_constructions_kernel
) is now thread-safe. See changes in 2D and 3D Linear Geometry Kernel
for more details.
Segment_coordinates_2.h
and Triangle_coordinates_2.h
are renamed to segment_coordinates_2.h
and triangle_coordinates_2.h
.Segment_coordinates_2
and Triangle_coordinates_2
are deprecated. The free functions compute_segment_coordinates_2()
and compute_triangle_coordinates_2()
are deprecated as well. Instead, the free functions segment_coordinates_2()
and triangle_coordinates_2()
should be used.Query_point_location
and Type_of_algorithm
are deprecated. Instead, the enum Computation_policy_2
should be used.Wachspress_2
, Discrete_harmonic_2
, Mean_value_2
, and Generalized_barycentric_coordinates_2
are deprecated. As consequence, the concept BarycentricCoordinates_2
is deprecated as well. Instead, the classes Wachspress_coordinates_2
, Discrete_harmonic_coordinates_2
, and Mean_value_coordinates_2
should be used.Harmonic_coordinates_2
to compute approximate harmonic coordinates in 2D. These coordinates satisfy all properties of barycentric coordinates inside any simple polygon.DiscretizedDomain_2
and a model of this concept called Delaunay_domain_2
, which is based on the Mesh 2 package. A model of this concept is required to use Harmonic_coordinates_2
.Most operations on CGAL::Exact_predicates_exact_constructions_kernel
objects are now thread-safe if CGAL::Exact_rational
is mpq_class
(from GMPXX
), boost::multiprecision::mpq_rational
or CGAL::Quotient<CGAL::MP_Float>
. The objects are not atomic though, so the usual restrictions on avoiding race conditions apply. For users who do not use threads, this can be disabled with CGAL_HAS_NO_THREADS
.
Added documentation for the class Projection_traits_3
, which enables the use of 2D algorithms on the projections of 3D data onto an arbitrary plane.
Added construct_centroid_2_object()
and compute_determinant_2_object()
in Projection_traits_xy_3
, Projection_traits_xz_3
, and Projection_traits_yz_3
classes.
Added the functor NonZeroCoordinateIndex_3
to the concept Kernel
with int operator()(Vector_3)
which returns the index of any coordinate of the vector different from zero, or -1
.
Epeck_d
objects are now thread-safe, see 2D and 3D Linear Geometry Kernel for details.Breaking Change: The traits function objects Compare_x_at_limit_2
and Compare_x_near_limit_2
are renamed to Compare_x_on_boundary_2
and Compare_x_near_boundary_2
, respectively.
A new hierarchy of traits concepts has been introduced. It captures all the valid combinations of boundary conditions for the 4 boundary sides of the parameter space. The 4 boundaries are Bottom, Top, Left, and Right. Each boundary side can be either contracted, identified, close, open, or oblivious. Not all possible combinations are valid. If one side is identified then the other must be as well. Two adjacent sides cannot be contracted.
A new geometric traits, Arr_geodesic_arc_on_sphere_traits_2
has been introduced. It handles arcs of great circles embedded on the unit sphere.
UsePolylines
) to all free functions ( complement()
, do_intersect()
, intersection()
, join()
, difference()
, symmetric_difference()
, and oriented_side
) to control whether to use Arr_polyline_traits_2
as default traits. It is the new default as it provides better performances in general.CGAL::Mesh_3::generate_label_weights()
to generate the weights.Added the function CGAL::Polygon_mesh_processing::match_faces()
, which, given two polygon meshes, identifies their common faces as well as faces present in only either of them.
Added the functions: CGAL::Polygon_mesh_processing::bounded_error_Hausdorff_distance()
that computes an estimate of the one-sided Hausdorff distance between two triangle meshes which is bounded by a user-specified error bound; CGAL::Polygon_mesh_processing::bounded_error_symmetric_Hausdorff_distance()
that computes an estimate of the symmetric Hausdorff distance bounded by a user-specified error bound; and CGAL::Polygon_mesh_processing::is_Hausdorff_distance_larger()
that returns true
if the bounded-error Hausdorff distance between two meshes is larger than the user-specified max distance.
Added the functions CGAL::Polygon_mesh_processing::squared_edge_length()
and CGAL::Polygon_mesh_processing::squared_face_area()
, which, compared to CGAL::Polygon_mesh_processing::edge_length()
and CGAL::Polygon_mesh_processing::face_area()
, enable avoiding square-root operations.
Added more functions in the visitor of the corefinement based methods to track all vertex creations.
Added an option to CGAL::Polygon_mesh_processing::self_intersections()
to report only a limited number of intersections (maximum_number()
).
Compute_squared_length_3
providing operator(const Vector_3& v)
, which computes the squared length of v
, to the HeatMethodTraits_3
concept.libpointmatcher::GenericDescriptorOutlierFilter
that enables providing a map from a point to a weight associated with this point.Published by lrineau almost 3 years ago
CGAL-5.3.1 is a bug-fix release.
See on Github the list of bugs that were solved since CGAL-5.3.
Published by lrineau almost 3 years ago
CGAL-5.2.4 is a bug-fix release.
See on Github the list of bugs that were solved since CGAL-5.2.3.
Published by lrineau over 3 years ago
The CGAL Open Source Project is pleased to announce the release 5.3 of CGAL, the Computational Geometry Algorithms Library.
Besides fixes and general enhancement to existing packages, the following has changed since CGAL 5.2:
The support for the compiled version of CGAL is dropped. Only the header-only version is supported.
On Windows, the type used for Exact_rational
, in Epick
and indirectly (through Lazy_exact_nt
)
Epeck
may now be boost::multiprecision::mpq_rational
, as has been the case on other platforms
for several releases. This depends on various options and is added to a list that includes
mpq_class
, CGAL::Gmpq
, leda_rational
and CGAL::Quotient<CGAL::MP_Float>
.
A comprehensive list of the supported file formats is available in the Stream_support package here; inversely, the following page can be used to find out which CGAL data structures can be used given a specific file format.
3.14
.is_translation()
, is_scaling()
, is_reflection()
, and is_rotation()
to the classesAff_transformation_2
Aff_transformation_3
,oriented_side(const Point_2& p, ....)
CGAL::Polyhedral_envelope
,CGAL::Surface_mesh_topology::Curves_on_surface_topology::is_homotopic_to_simple_cycle()
,Polyhedral_envelope_filter
,insert_if_in_star()
CGAL::Regular_triangulation
,p
in a regular triangulation on the condition that p
Alpha_shape_euclidean_traits_2
,Weighted_alpha_shape_euclidean_traits_2
, Alpha_shape_euclidean_traits_3
, andWeighted_alpha_shape_euclidean_traits_3
. All CGAL kernel can be used directly as modelsCGAL::TensorFlow::Neural_network_classifier
has been removed.