Merge remote-tracking branch 'cgal/master' into Triangulation_3-CDT_3-lrineau

This commit is contained in:
Laurent Rineau 2024-12-04 11:27:05 +01:00
commit 196f00c34b
70 changed files with 120 additions and 167 deletions

View File

@ -10,17 +10,18 @@ jobs:
reuse:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: REUSE version
uses: fsfe/reuse-action@v4
- name: Checkout
uses: actions/checkout@v4
- name: Display reuse-tool version
uses: fsfe/reuse-action@v5
with:
args: --version
- name: REUSE lint
uses: fsfe/reuse-action@v4
- name: REUSE Compliance Check
uses: fsfe/reuse-action@v5
with:
args: --include-submodules lint
- name: REUSE SPDX SBOM
uses: fsfe/reuse-action@v4
uses: fsfe/reuse-action@v5
with:
args: spdx
- name: install dependencies
@ -29,7 +30,7 @@ jobs:
run: |
mkdir -p ./release
cmake -DDESTINATION=./release -DCGAL_VERSION=9.9 -P ./Scripts/developer_scripts/cgal_create_release_with_cmake.cmake
- name: REUSE lint release tarball
uses: fsfe/reuse-action@v4
- name: REUSE Compliance Check of release tarball
uses: fsfe/reuse-action@v5
with:
args: --root ./release/CGAL-9.9 --include-submodules lint

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University(Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University(Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -15,6 +15,7 @@
#include <OpenMesh/Core/IO/MeshIO.hh>
#include <OpenMesh/Core/Mesh/TriMesh_ArrayKernelT.hh>
#include <OpenMesh/Core/Mesh/Traits.hh>
#include <CGAL/boost/graph/copy_face_graph.h>
#include <CGAL/boost/graph/graph_traits_PolyMesh_ArrayKernelT.h>
@ -34,7 +35,7 @@ namespace internal {
template <typename Graph, typename VPM, typename VFeaturePM, typename EFeaturePM>
bool read_OM(const std::string& fname, Graph& g, VPM vpm, VFeaturePM vfpm, EFeaturePM efpm)
{
typedef OpenMesh::PolyMesh_ArrayKernelT<> OMesh;
typedef OpenMesh::PolyMesh_ArrayKernelT<OpenMesh::DefaultTraitsDouble> OMesh;
typedef typename boost::graph_traits<OMesh>::vertex_descriptor om_vertex_descriptor;
typedef typename boost::graph_traits<Graph>::vertex_descriptor vertex_descriptor;
typedef typename boost::graph_traits<OMesh>::halfedge_descriptor om_halfedge_descriptor;
@ -73,9 +74,10 @@ bool read_OM(const std::string& fname, Graph& g, VPM vpm, VFeaturePM vfpm, EFeat
}
template <typename Graph, typename VPM, typename VFeaturePM, typename EFeaturePM>
bool write_OM(std::string fname, const Graph& g, VPM vpm, VFeaturePM vfpm, EFeaturePM efpm)
bool write_OM(std::string fname, const Graph& g, VPM vpm, VFeaturePM vfpm, EFeaturePM efpm,
const std::streamsize precision)
{
typedef OpenMesh::PolyMesh_ArrayKernelT<> OMesh;
typedef OpenMesh::PolyMesh_ArrayKernelT<OpenMesh::DefaultTraitsDouble> OMesh;
typedef typename boost::graph_traits<OMesh>::vertex_descriptor om_vertex_descriptor;
typedef typename boost::graph_traits<Graph>::vertex_descriptor vertex_descriptor;
typedef typename boost::graph_traits<OMesh>::halfedge_descriptor om_halfedge_descriptor;
@ -108,7 +110,7 @@ bool write_OM(std::string fname, const Graph& g, VPM vpm, VFeaturePM vfpm, EFeat
omesh.status(omv).set_feature(isfeature);
}
return OpenMesh::IO::write_mesh(omesh, fname, OpenMesh::IO::Options::Status);
return OpenMesh::IO::write_mesh(omesh, fname, OpenMesh::IO::Options::Status, precision);
}
} // end of internal namespace
@ -208,6 +210,11 @@ bool read_OM(const std::string& fname,
\cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<Graph>::%vertex_descriptor`
as key type and `bool` as value type.}
\cgalParamNEnd
\cgalParamNBegin{stream_precision}
\cgalParamDescription{a parameter used to set the precision (i.e. how many digits are generated) of the output stream}
\cgalParamType{int}
\cgalParamDefault{the precision of the stream `os`}
\cgalParamNEnd
\cgalNamedParamsEnd
\returns `true` if writing was successful, `false` otherwise.
@ -228,7 +235,9 @@ bool write_OM(const std::string& fname,
CGAL::Constant_property_map<edge_descriptor, bool>(false));
auto vpm = choose_parameter(get_parameter(np, internal_np::vertex_point),
get_const_property_map(vertex_point, g));
return internal::write_OM(fname, g, vpm, vfpm, efpm);
std::streamsize precision = choose_parameter(get_parameter(np, internal_np::stream_precision),
18);
return internal::write_OM(fname, g, vpm, vfpm, efpm, precision);
}

View File

@ -283,6 +283,8 @@ requires solving complex non-linear least squares problems.
Visit the official website of the library at <A HREF="http://ceres-solver.org/index.html">`ceres-solver.org`</A>
for more information.
\attention \ceres requires to be compiled with the exact same version of \eigen that is used for \cgal.
\attention \ceres indicates that `glog` is a recommended dependency. `glog` has `libunwind` as a recommended dependency.
On some platforms, linking with `libunwind` was responsible for an increase of the runtime of the final application.
If you experience such an issue, we recommend to compile \ceres without `glog` support.
@ -309,7 +311,7 @@ The \scip web site is <A HREF="https://www.scipopt.org/">`https://www.scipopt.or
\osqp (Operator Splitting Quadratic Program) is currently one of the fastest open source solvers for convex Quadratic Programs (QP).
In \cgal, \osqp provides an optional solver for the QP problems often arising in various computational geometry algorithms.
In \cgal, \osqp provides an optional solver for the quadratic programming used in the \ref PkgShapeRegularization package.
In order to use \osqp in \cgal programs, the executables should be linked with the CMake imported target `CGAL::OSQP_support` provided in `CGAL_OSQP_support.cmake`.
The \osqp web site is <A HREF="https://osqp.org">`https://osqp.org`</A>.

View File

@ -149,11 +149,11 @@
#define CGAL_USE_SSE2_FABS
#endif
// Require C++17
#if !(__cplusplus >= 201703L || _MSVC_LANG >= 201703L)
#error "CGAL requires C++ 17"
#endif
// Detect C++20
// Macro to detect C++20
#if __cplusplus >= 202002L || _MSVC_LANG >= 202002L
# define CGAL_CXX20 1
#endif

View File

@ -289,9 +289,8 @@ public:
m_initial_intervals.resize(e.size());
std::size_t idx = 0;
for (const auto& edge : e) {
for (const auto& edge : e)
m_initial_intervals[idx++] = m_graph[edge].intervals;
}
m_initial_part_of_partition.resize(m_ifaces.size());
for (idx = 0; idx < m_ifaces.size(); idx++)
@ -303,9 +302,8 @@ public:
CGAL_assertion(e.size() == m_initial_intervals.size());
std::size_t idx = 0;
for (auto edge : e) {
m_graph[edge].intervals = m_initial_intervals[idx];
}
for (auto edge : e)
m_graph[edge].intervals = m_initial_intervals[idx++];
CGAL_assertion(m_ifaces.size() == m_initial_part_of_partition.size());
for (idx = 0; idx < m_ifaces.size(); idx++)

View File

@ -731,7 +731,7 @@ public:
}
if (m_parameters.verbose)
std::cout << "ksp v: " << m_partition_nodes[0].m_data->vertices().size() << " f: " << m_partition_nodes[0].face2vertices.size() << " vol: " << m_volumes.size() << std::endl;
std::cout << "ksp v: " << m_partition_nodes[0].m_data->vertices().size() << " f: " << m_partition_nodes[0].face2vertices.size() << " vol: " << m_volumes.size() << std::endl;
return;
}

View File

@ -284,9 +284,9 @@ Building_C
<TD class="math" ALIGN=RIGHT NOWRAP>
3.432
<TD class="math" ALIGN=RIGHT NOWRAP>
370
369
<TD class="math" ALIGN=RIGHT NOWRAP>
1.466
1.457
<TD class="math" ALIGN=RIGHT NOWRAP>
40,1
<TD class="math" ALIGN=RIGHT NOWRAP>
@ -376,10 +376,10 @@ Meeting Room
<TD class="math" ALIGN=RIGHT NOWRAP>
15
<TD class="math" ALIGN=RIGHT NOWRAP>
0,03
<TD class="math" ALIGN=RIGHT NOWRAP>
10
<TD class="math" ALIGN=RIGHT NOWRAP>
0,03
<TD class="math" ALIGN=RIGHT NOWRAP>
3
<TD class="math" ALIGN=RIGHT NOWRAP>
0,5
@ -396,10 +396,10 @@ Full Thing
<TD class="math" ALIGN=RIGHT NOWRAP>
12
<TD class="math" ALIGN=RIGHT NOWRAP>
0,05
<TD class="math" ALIGN=RIGHT NOWRAP>
3
<TD class="math" ALIGN=RIGHT NOWRAP>
0,05
<TD class="math" ALIGN=RIGHT NOWRAP>
1
<TD class="math" ALIGN=RIGHT NOWRAP>
0,5
@ -416,10 +416,10 @@ Hilbert cube
<TD class="math" ALIGN=RIGHT NOWRAP>
12
<TD class="math" ALIGN=RIGHT NOWRAP>
0,03
<TD class="math" ALIGN=RIGHT NOWRAP>
5
<TD class="math" ALIGN=RIGHT NOWRAP>
0,03
<TD class="math" ALIGN=RIGHT NOWRAP>
4
<TD class="math" ALIGN=RIGHT NOWRAP>
0,5
@ -456,10 +456,10 @@ Building_C
<TD class="math" ALIGN=RIGHT NOWRAP>
15
<TD class="math" ALIGN=RIGHT NOWRAP>
0,5
<TD class="math" ALIGN=RIGHT NOWRAP>
3
<TD class="math" ALIGN=RIGHT NOWRAP>
0,5
<TD class="math" ALIGN=RIGHT NOWRAP>
2
<TD class="math" ALIGN=RIGHT NOWRAP>
0,77

View File

@ -171,15 +171,10 @@ int main(const int argc, const char** argv) {
timer.start();
std::size_t num_shapes = ksr.detect_planar_shapes(param);
std::cout << num_shapes << " detected planar shapes" << std::endl;
std::cout << num_shapes << " regularized detected planar shapes" << std::endl;
FT after_shape_detection = timer.time();
ksr.initialize_partition(param);
FT after_init = timer.time();
ksr.partition(parameters.k_intersections);
FT after_partition = timer.time();
@ -198,6 +193,8 @@ int main(const int argc, const char** argv) {
FT after_reconstruction = timer.time();
std::cout << polylist.size() << " polygons, " << vtx.size() << " vertices" << std::endl;
if (polylist.size() > 0)
CGAL::IO::write_polygon_soup("polylist_" + std::to_string(parameters.graphcut_lambda) + (parameters.use_ground ? "_g" : "_") + ".off", vtx, polylist);
@ -220,19 +217,16 @@ int main(const int argc, const char** argv) {
else
ksr.reconstruct(l, external_nodes, std::back_inserter(vtx), std::back_inserter(polylist));
if (polylist.size() > 0) {
non_empty = true;
CGAL::IO::write_polygon_soup("polylist_" + std::to_string(l) + (parameters.use_ground ? "_g" : "_") + ".off", vtx, polylist);
}
}
std::cout << "Shape detection: " << after_shape_detection << " seconds!" << std::endl;
std::cout << "Kinetic partition: " << (after_partition - after_shape_detection) << " seconds!" << std::endl;
std::cout << " initialization: " << (after_init - after_shape_detection) << " seconds!" << std::endl;
std::cout << " partition: " << (after_partition - after_init) << " seconds!" << std::endl;
std::cout << "Kinetic reconstruction: " << (after_reconstruction - after_partition) << " seconds!" << std::endl;
std::cout << "Total time: " << time << " seconds!" << std::endl << std::endl;
std::cout << "Shape detection and initialization\nof kinetic partition: " << after_shape_detection << " seconds!" << std::endl;
std::cout << "Kinetic partition: " << (after_partition - after_shape_detection) << " seconds!" << std::endl;
std::cout << "Kinetic reconstruction: " << (after_reconstruction - after_partition) << " seconds!" << std::endl;
std::cout << "Total time: " << time << " seconds!" << std::endl << std::endl;
return (non_empty) ? EXIT_SUCCESS : EXIT_FAILURE;
}

View File

@ -627,7 +627,6 @@ private:
std::vector<std::pair<std::size_t, std::size_t> > m_volume_votes; // pair<inside, outside> votes
std::vector<bool> m_volume_below_ground;
std::vector<std::vector<double> > m_cost_matrix;
std::vector<FT> m_volumes; // normalized volume of each kinetic volume
std::vector<std::size_t> m_labels;
std::size_t m_total_inliers;
@ -747,9 +746,9 @@ private:
std::cout << "* computing data term ... ";
std::size_t max_inside = 0, max_outside = 0;
for (std::size_t i = 0; i < m_volumes.size(); i++) {
max_inside = (std::max<std::size_t>)(static_cast<std::size_t>(m_cost_matrix[0][i + 6]), max_inside);
max_outside = (std::max<std::size_t>)(static_cast<std::size_t>(m_cost_matrix[1][i + 6]), max_outside);
for (std::size_t i = 6; i < m_cost_matrix[0].size(); i++) {
max_inside = (std::max<std::size_t>)(static_cast<std::size_t>(m_cost_matrix[0][i]), max_inside);
max_outside = (std::max<std::size_t>)(static_cast<std::size_t>(m_cost_matrix[1][i]), max_outside);
}
// Dump volumes colored by votes
@ -1743,55 +1742,14 @@ private:
return face_area;
}
FT volume(typename LCC::Dart_descriptor volume_dart) {
FT x = 0, y = 0, z = 0;
std::size_t count = 0;
From_exact from_exact;
// Collect vertices to obtain point on the inside.
for (auto& fd : m_lcc.template one_dart_per_incident_cell<2, 3>(volume_dart)) {
typename LCC::Dart_descriptor fdh = m_lcc.dart_descriptor(fd);
for (const auto& vd : m_lcc.template one_dart_per_incident_cell<0, 2>(fdh)) {
const auto &p = from_exact(m_lcc.point(m_lcc.dart_descriptor(vd)));
x += p.x();
y += p.y();
z += p.z();
count++;
}
}
Point_3 center(x / count, y / count, z / count);
FT vol = 0;
// Second iteration for computing the area of each face and the volume spanned with the center point.
for (auto& fd : m_lcc.template one_dart_per_incident_cell<2, 3>(volume_dart)) {
typename LCC::Dart_descriptor fdh = m_lcc.dart_descriptor(fd);
Plane_3 plane;
FT a = area(fdh, plane);
Vector_3 n = plane.orthogonal_vector();
FT distance = CGAL::abs((plane.point() - center) * n);
vol += distance * a / 3.0;
}
return vol;
}
void count_volume_votes_lcc() {
// const int debug_volume = -1;
FT total_volume = 0;
std::size_t num_volumes = m_kinetic_partition.number_of_volumes();
m_volume_votes.clear();
m_volume_votes.resize(num_volumes, std::make_pair(0, 0));
m_volumes.resize(num_volumes, 0);
for (std::size_t i = 6; i < num_volumes; i++) {
for (std::size_t i = 6; i < num_volumes; i++)
m_cost_matrix[0][i] = m_cost_matrix[1][i] = 0;
m_volumes[i] = 0;
}
From_exact from_exact;
@ -1829,28 +1787,15 @@ private:
m_cost_matrix[1][v[j] + 6] += static_cast<double>(out[j]);
}
}
for (auto& d : m_lcc.template one_dart_per_cell<3>()) {
typename LCC::Dart_descriptor dh = m_lcc.dart_descriptor(d);
std::size_t volume_index = m_lcc.template info<3>(dh).volume_id;
m_volumes[volume_index] = volume(dh);
total_volume += m_volumes[volume_index];
}
// Normalize volumes
for (FT& v : m_volumes)
v /= total_volume;
}
template<typename NamedParameters>
void create_planar_shapes(const NamedParameters& np) {
if (m_points.size() < 3) {
if (m_verbose) std::cout << "* no points found, skipping" << std::endl;
return;
}
if (m_verbose) std::cout << "* getting planar shapes using region growing" << std::endl;
FT xmin, ymin, zmin, xmax, ymax, zmax;

View File

@ -180,12 +180,14 @@ save(QFileInfo fileinfo, QList<CGAL::Three::Scene_item*>& items)
res = CGAL::IO::write_OM((const char*)fileinfo.filePath().toUtf8()
, *sm_item->face_graph()
, CGAL::parameters::vertex_is_constrained_map(selection_item->constrained_vertices_pmap())
.edge_is_constrained_map(selection_item->constrained_edges_pmap()));
.edge_is_constrained_map(selection_item->constrained_edges_pmap())
.stream_precision(17));
}
else
{
res = CGAL::IO::write_OM((const char*)fileinfo.filePath().toUtf8()
, *sm_item->face_graph());
, *sm_item->face_graph()
, CGAL::parameters::stream_precision(17));
}
if (res)

View File

@ -19,6 +19,7 @@ use Date::Format;
use JSON;
use File::Copy;
use FindBin;
use IO::Compress::Gzip qw(gzip $GzipError) ;
my $server_url="https://cgal.geometryfactory.com/";
my $cgal_members="${server_url}CGAL/Members/";
@ -827,7 +828,8 @@ sub create_summary_page {
};
my $json = JSON->new->allow_nonref;
my $json_text = $json->encode($final_data);
open my $fh, '>', "$testresult_dir/$release_name/search_index.json" or die "Could not open file: $!";
my $fh = new IO::Compress::Gzip "$testresult_dir/$release_name/search_index.json.gz"
or die "IO::Compress::Gzip failed: $GzipError\n";
print $fh $json_text;
close $fh;

View File

@ -1,4 +1,4 @@
// Copyright(c) 2006 Fernando Luis Cacciola Carballal. All rights reserved.
// Copyright (c) 2006 Fernando Luis Cacciola Carballal. All rights reserved.
//
// This file is part of CGAL(www.cgal.org).
//

View File

@ -1,4 +1,4 @@
// Copyright(c) 2018 INRIA Sophia-Antipolis (France).
// Copyright (c) 2018 INRIA Sophia-Antipolis (France).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2022 GeometryFactory (France).
// Copyright (c) 2022 GeometryFactory (France).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 1997 INRIA Sophia-Antipolis (France).
// Copyright (c) 1997 INRIA Sophia-Antipolis (France).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2022 GeometryFactory (France).
// Copyright (c) 2022 GeometryFactory (France).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2022 GeometryFactory (France).
// Copyright (c) 2022 GeometryFactory (France).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2018 INRIA Sophia-Antipolis (France).
// Copyright (c) 2018 INRIA Sophia-Antipolis (France).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2022 GeometryFactory (France).
// Copyright (c) 2022 GeometryFactory (France).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).

View File

@ -1,4 +1,4 @@
// Copyright(c) 2019 Foundation for Research and Technology-Hellas (Greece).
// Copyright (c) 2019 Foundation for Research and Technology-Hellas (Greece).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).