Skip to content

Commit

Permalink
release 5.0-beta1
Browse files Browse the repository at this point in the history
  • Loading branch information
sloriot committed Oct 1, 2019
1 parent e39a6b8 commit 0f3e7a8
Show file tree
Hide file tree
Showing 3,965 changed files with 310,275 additions and 97,120 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
1 change: 1 addition & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ Kurt Mehlhorn
Naceur Meskini
Andreas Meyer
Michal Meyerovitch
Liangliang Nan
Oren Nechushtan
Gabriele Neyer
Ralf Osbild
Expand Down
141 changes: 140 additions & 1 deletion CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,145 @@
Release History
===============

Release 5.0
-----------

Release date: September 2019

### Polygonal Surface Reconstruction (new package)

- This package provides a method for piecewise planar object reconstruction from point clouds.
The method takes as input an unordered point set sampled from a piecewise planar object
and outputs a compact and watertight surface mesh interpolating the input point set.
The method assumes that all necessary major planes are provided (or can be extracted from
the input point set using the shape detection method described in Point Set Shape Detection,
or any other alternative methods).The method can handle arbitrary piecewise planar objects
and is capable of recovering sharp features and is robust to noise and outliers.

### Solver Interface

- Added concepts and models for solving Mixed Integer Programming (MIP) problems with or without constraints.

## 2D Triangulations
- Added range types and functions that return ranges, for example
for all vertices, which enables to use C++11 for-loops.
- **Breaking change**: Removed the functions `CGAL::Constrained_triangulation_plus_2::
vertices_in_constraint_{begin/end}(Vertex_handle va, Vertex_handle vb) const;`,
and `CGAL::Constrained_triangulation_plus_2::remove_constraint((Vertex_handle va, Vertex_handle vb)`,
that is a pair of vertex handles is no longer a key for a polyline constraint.
Users must use a version prior to 5.0 if they need this functionality.
- **Breaking change**: Removed the deprecated classes `CGAL::Regular_triangulation_euclidean_traits_2`, `CGAL::Regular_triangulation_filtered_traits_2`. Users must use a version prior to 5.0 if they need these classes.
- **Breaking change**: The constructor and the `insert()` function of `CGAL::Triangulation_2` which takes
a range of points as argument no longer performs a `spatial_sort()` of the points.
- Add constructor and `insert()` function to `CGAL::Triangulation_2` that takes a range of points with info.
- **Breaking change**: The graph traits enabling CGAL's 2D triangulations to be used as a parameter
for any graph-based algorithm of CGAL (or boost) have been improved to fully model the `FaceGraph` concept.
In addition, only the finite simplicies (those not incident to the infinite vertex) of the 2D triangulations
are now visibile through this scope. The complete triangulation can still be accessed as a graph,
by using the graph traits of the underlying triangulation data structure (usually,
`CGAL::Triangulation_data_structure_2`).
- Introduced a new face base class, `Triangulation_face_base_with_id_2` which enables storing
user-defined integer IDs in the face of any 2D triangulation, a precondition to use some
BGL algorithms.
### 3D Triangulations
- Added range types and functions that return ranges, for example
for all vertices, which enables to use C++11 for-loops.
- **Breaking change**: The constructor and the `insert()` function of `CGAL::Triangulation_3` which takes
a range of points as argument no longer performs a `spatial_sort()` of the points.
- Add constructor and `insert()` function to `CGAL::Triangulation_3` that takes a range of points with info.

### Surface Mesh
- New functions to read and write using the PLY format,
`CGAL::read_ply()` and `CGAL::write_ply()`, allowing to save and
load additional property maps of the surface mesh.

### 3D Point Set
- The PLY IO functions now take an additional optional parameter to
read/write comments from/in the PLY header.

### Point Set Processing
- **Breaking change**: the old API using iterators and overloads
for optional parameters is now removed (it was deprecated since
CGAL 4.12). The current (and now only) API uses ranges and Named
Parameters.
- Added the possibility to use the named parameter
`neighbor_radius` to use spherical neighbor queries instead of
K-nearest neighbors queries for the following functions:
`CGAL::bilateral_smooth_point_set()`,
`CGAL::jet_estimate_normals()`, `CGAL::jet_smooth_point_set()`,
`CGAL::mst_orient_normals()`, `CGAL::pca_estimate_normals()` and
`CGAL::remove_outliers()`.

### Polygon Mesh Processing
- Added the function `CGAL::Polygon_mesh_processing::non_manifold_vertices()`,
which can be used to collect all the non-manifold vertices (i.e. pinched vertices,
or vertices appearing in multiple umbrellas) of a mesh.
- Introduced a wide range of new functions related to location of queries on a triangle mesh,
such as `CGAL::Polygon_mesh_processing::locate(Point, Mesh)`, . The location of a point on a triangle mesh
is expressed as the pair of a face and the barycentric coordinates of the point in this face,
enabling robust manipulation of locations (for example, intersections of two 3D segments living
within the same face).
- Added the function `CGAL::Polygon_mesh_processing::centroid()`, which computes
the centroid of a closed triangle mesh.
- Added the functions `CGAL::Polygon_mesh_processing::stitch_boundary_cycle()` and
`CGAL::Polygon_mesh_processing::stitch_boundary_cycles()`, which can be used
to try and merge together geometrically compatible but combinatorially different halfedges
that belong to the same boundary cycle.
- It is now possible to pass a face-size property map to `CGAL::Polygon_mesh_processing::keep_large_connected_components()`
and `CGAL::Polygon_mesh_processing::keep_largest_connected_components()`, enabling users to define
how the size of a face is computed (the size of the connected component is the sum of the sizes of its faces).
If no property map is passed, the behavior is unchanged to previous versions: the size
of a connected component is the number of faces it contains.
- Added the mesh smoothing function `smooth_mesh()`, which can be used to
improve the quality of triangle elements based on various geometric characteristics.
- Added the shape smoothing function `smooth_shape()`, which can be used to
smooth the surface of a triangle mesh, using the mean curvature flow to perform noise removal.

### IO Streams
- **Breaking change:** The API of `CGAL::Color` has been cleaned up.

### Shape Detection
- Added a new generic implementation of region growing.
- New region growing can be launched on points in 2D and 3D and on a face graph.
- **Breaking change:** ShapeDetectionTraits is renamed to EfficientRANSACTraits.
- **Breaking change:** Shape_detection_3 namespace is renamed to Shape_detection.

### 3D Boolean Operations on Nef Polyhedra
- Added a function to convert a Nef_polyhedron_3 to a polygon soup: `CGAL::convert_nef_polyhedron_to_polygon_soup()`

### 2D and 3D Linear Geometry Kernel
- Add `ComputeApproximateAngle_3` in the 2D/3D Kernel concept to compute
the approximate dihedral angle between 2 vectors. Corresponding functors
in the model (`Compute_approximate_angle_3`) and free function (`approximate_angle`)
are also added.
- The following objects are now hashable and thus trivially usable
with `std::unordered_set` and `std::unordered_map`:
`CGAL::Aff_transformation_2`, `CGAL::Aff_transformation_3`,
`CGAL::Bbox_2`, `CGAL::Bbox_3`, `CGAL::Circle_2`,
`CGAL::Iso_cuboid_3`, `CGAL::Iso_rectangle_2`, `CGAL::Point_2`,
`CGAL::Point_3`, `CGAL::Segment_2`, `CGAL::Segment_3`,
`CGAL::Sphere_3`, `CGAL::Vector_2`, `CGAL::Vector_3`,
`CGAL::Weighted_point_2` and `CGAL::Weighted_point_3`.

### dD Geometry Kernel
- New exact kernel `Epeck_d`

### IO Streams
- Added new functions to support some parts of the WKT file format:
- `CGAL::read_point_WKT()`
- `CGAL::read_multi_point_WKT()`
- `CGAL::read_linestring_WKT()`
- `CGAL::read_multi_linestring_WKT()`
- `CGAL::read_polygon_WKT()`
- `CGAL::read_multi_polygon_WKT()`
- `CGAL::write_point_WKT()`
- `CGAL::write_polygon_WKT()`
- `CGAL::write_linestring_WKT()`
- `CGAL::write_multi_point_WKT()`
- `CGAL::write_multi_polygon_WKT()`
- `CGAL::write_multi_linestring_WKT()`
- `CGAL:read_WKT()`

Release 4.14
------------

Expand Down Expand Up @@ -3735,7 +3874,7 @@ static runtime (/ML).
algorithm for placing streamlines in 2D vector fields. It generates
a list of streamlines corresponding to an input flow using a
specified separating distance. The algorithm uses a Delaunay
triangulation to model objects and adress different queries, and
triangulation to model objects and address different queries, and
relies on choosing the centers of the biggest empty circles to start
the integration of the streamlines.
- Kinetic Data Structures (new package)
Expand Down
15 changes: 6 additions & 9 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,11 @@
# refer to the root source directory of the project as ${CMAKE_SOURCE_DIR} or
# ${CMAKE_SOURCE_DIR} and to the root binary directory of the project as
# ${CMAKE_BINARY_DIR} or ${CMAKE_BINARY_DIR}.

# Minimal version of CMake:
cmake_minimum_required(VERSION 3.1)

if(NOT PROJECT_NAME)
cmake_minimum_required(VERSION 3.1...3.15)
project(CGAL CXX C)
endif()

# Tested version:
cmake_policy(VERSION 3.1)

if(POLICY CMP0056)
# https://cmake.org/cmake/help/v3.2/policy/CMP0056.html
Expand All @@ -33,7 +28,7 @@ include(GNUInstallDirs)
# -= HEADER ONLY =-
#
#--------------------------------------------------------------------------------------------------
option(CGAL_HEADER_ONLY "Enable header-only mode of CGAL (no compilation of CGAL libraries)" FALSE)
option(CGAL_HEADER_ONLY "Enable header-only mode of CGAL (no compilation of CGAL libraries)" TRUE)

#--------------------------------------------------------------------------------------------------
#
Expand Down Expand Up @@ -571,8 +566,8 @@ message("== Detect external libraries ==")
# Remarks:
# External libs configured when Qt5 lib of cgal are required
# Coin is used in KDS, but no FindCoin or FindCOIN exists
# There exists FindF2C, FindIPE, FindMKL, but they are only used to support supporting libs
list (INSERT CGAL_SUPPORTING_3RD_PARTY_LIBRARIES 0 GMP MPFR ZLIB OpenGL LEDA MPFI RS RS3 OpenNL Eigen3 BLAS LAPACK ESBTL Coin3D NTL IPE)
# There exists FindIPE, FindMKL, but they are only used to support supporting libs
list (INSERT CGAL_SUPPORTING_3RD_PARTY_LIBRARIES 0 GMP MPFR ZLIB OpenGL LEDA MPFI RS RS3 OpenNL Eigen3 ESBTL Coin3D NTL IPE)
if (NOT WIN32)
# GMPXX is not supported on WIN32 machines
list (INSERT CGAL_SUPPORTING_3RD_PARTY_LIBRARIES 1 GMPXX)
Expand Down Expand Up @@ -614,6 +609,8 @@ if(CGAL_DISABLE_GMP)
unset(WITH_CGAL_Core CACHE)
unset(WITH_GMP)
unset(WITH_GMP CACHE)
unset(CGAL_USE_GMP)
unset(CGAL_USE_GMP CACHE)
unset(WITH_GMPXX)
unset(WITH_GMPXX CACHE)
unset(WITH_MPFR)
Expand Down
9 changes: 0 additions & 9 deletions INSTALL.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ CGAL packages, some are only needed for demos.

* Boost (>= 1.48)
Required for building CGAL and for applications using CGAL
Required compiled Boost library: Boost.Thread, Boost.System
Optional compiled Boost library: Boost.Program_options
http://www.boost.org/ or http://www.boostpro.com/products/free/
You need the former if you plan to compile the boost libraries yourself,
Expand Down Expand Up @@ -76,14 +75,6 @@ CGAL packages, some are only needed for demos.
* Surface Reconstruction from Point Sets
http://eigen.tuxfamily.org/index.php?title=Main_Page

- BLAS, LAPACK, ATLAS
Required by the packages (if EIGEN is not available):
* Estimation of Local Differential Properties of Point-Sampled Surfaces
* Approximation of Ridges and Umbilics on Triangulated Surface Meshes
* Planar Parameterization of Triangulated Surface Meshes
http://www.netlib.org/blas/, http://www.netlib.org/lapack/
or precompiled version that can be downloaded with CGAL-x.y-Setup.exe

- MPFI
Required by the package:
* Algebraic Kernel
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
4.14.1
5.0-beta1
2 changes: 1 addition & 1 deletion auxiliary/cgal_create_cmake_script.1
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.TH CGAL_CREATE_CMAKE_SCRIPT "1" "September 2019" "CGAL 4.14.1" "User Commands"
.TH CGAL_CREATE_CMAKE_SCRIPT "1" "September 2019" "CGAL 5.0-beta1" "User Commands"
.SH NAME
cgal_create_cmake_script \- create a cmake script for applications using CGAL
.SH SYNOPSIS
Expand Down
12 changes: 3 additions & 9 deletions cmake/modules/CGALConfig_binary.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ get_filename_component(CGAL_CONFIG_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)

set(CGAL_HEADER_ONLY "@CGAL_HEADER_ONLY@" )

include(CMakeFindDependencyMacro)
find_dependency(Boost REQUIRED)

# The code for including exported targets is different from
# CGAL_Config_install.cmake. We do not have separate export files in
# an installed version and we need to make sure that we are not
Expand Down Expand Up @@ -114,15 +117,6 @@ macro(check_cgal_component COMPONENT)
if ( "${CGAL_LIB}" STREQUAL "CGAL" )
set( CGAL_FOUND TRUE )
set( CHECK_CGAL_ERROR_TAIL "" )
get_property(CGAL_CGAL_is_imported TARGET CGAL::CGAL PROPERTY IMPORTED)
if(CGAL_CGAL_is_imported)
include("${CGAL_MODULES_DIR}/CGAL_SetupBoost.cmake")
get_property(CGAL_requires_Boost_libs
GLOBAL PROPERTY CGAL_requires_Boost_Thread)
if(CGAL_requires_Boost_libs AND TARGET Boost::thread)
set_property(TARGET CGAL::CGAL APPEND PROPERTY INTERFACE_LINK_LIBRARIES Boost::thread)
endif()
endif()
else( "${CGAL_LIB}" STREQUAL "CGAL" )
if ( WITH_${CGAL_LIB} )
if(TARGET CGAL::${CGAL_LIB})
Expand Down
3 changes: 3 additions & 0 deletions cmake/modules/CGALConfig_install.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ get_filename_component(CGAL_CONFIG_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)

set(CGAL_HEADER_ONLY "@CGAL_HEADER_ONLY@" )

include(CMakeFindDependencyMacro)
find_dependency(Boost REQUIRED)

# CGAL_DIR is the directory where this CGALConfig.cmake is installed
string(REPLACE "/@CGAL_INSTALL_CMAKE_DIR@" "" CGAL_INSTALL_PREFIX "${CGAL_CONFIG_DIR}")

Expand Down
6 changes: 3 additions & 3 deletions cmake/modules/CGAL_GeneratorSpecificSettings.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ if ( NOT CGAL_GENERATOR_SPECIFIC_SETTINGS_FILE_INCLUDED )
set(CGAL_AUTO_LINK_ENABLED TRUE)
endif()

if ( MSVC_TOOLSET_VERSION )
set(CGAL_TOOLSET "vc${MSVC_TOOLSET_VERSION}")
message( STATUS "Using VC toolset ${MSVC_TOOLSET_VERSION}." )
if ( MSVC15 )
set(CGAL_TOOLSET "vc150")
message( STATUS "Using VC15 compiler." )
elseif ( MSVC14 )
set(CGAL_TOOLSET "vc140")
message( STATUS "Using VC14 compiler." )
Expand Down
Loading

0 comments on commit 0f3e7a8

Please sign in to comment.