From c523eef0d00b0c1ef0c7e61677fb5246571f4d24 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Wed, 16 Apr 2025 08:25:24 +0100 Subject: [PATCH 01/12] Sphere Packing (new package) --- Documentation/doc/Documentation/packages.txt | 1 + .../include/CGAL/license/Sphere_packing.h | 54 ++++++++++++++++++ Sphere_packing/doc/Sphere_packing/Doxyfile.in | 3 + .../doc/Sphere_packing/PackageDescription.txt | 40 +++++++++++++ .../doc/Sphere_packing/Sphere_packing.txt | 29 ++++++++++ .../doc/Sphere_packing/dependencies | 6 ++ .../doc/Sphere_packing/examples.txt | 3 + .../doc/Sphere_packing/fig/pkg-small.png | Bin 0 -> 9467 bytes .../examples/Sphere_packing/CMakeLists.txt | 14 +++++ .../Sphere_packing/sphere_packing.cpp | 6 ++ Sphere_packing/include/CGAL/Sphere_packing.h | 52 +++++++++++++++++ .../package_info/Sphere_packing/copyright | 1 + .../Sphere_packing/description.txt | 1 + .../package_info/Sphere_packing/license.txt | 1 + .../Sphere_packing/long_description.txt | 1 + .../package_info/Sphere_packing/maintainer | 1 + .../test/Sphere_packing/CMakeLists.txt | 14 +++++ .../Sphere_packing/sphere_packing_test.cpp | 6 ++ 18 files changed, 233 insertions(+) create mode 100644 Installation/include/CGAL/license/Sphere_packing.h create mode 100644 Sphere_packing/doc/Sphere_packing/Doxyfile.in create mode 100644 Sphere_packing/doc/Sphere_packing/PackageDescription.txt create mode 100644 Sphere_packing/doc/Sphere_packing/Sphere_packing.txt create mode 100644 Sphere_packing/doc/Sphere_packing/dependencies create mode 100644 Sphere_packing/doc/Sphere_packing/examples.txt create mode 100644 Sphere_packing/doc/Sphere_packing/fig/pkg-small.png create mode 100644 Sphere_packing/examples/Sphere_packing/CMakeLists.txt create mode 100644 Sphere_packing/examples/Sphere_packing/sphere_packing.cpp create mode 100644 Sphere_packing/include/CGAL/Sphere_packing.h create mode 100644 Sphere_packing/package_info/Sphere_packing/copyright create mode 100644 Sphere_packing/package_info/Sphere_packing/description.txt create mode 100644 Sphere_packing/package_info/Sphere_packing/license.txt create mode 100644 Sphere_packing/package_info/Sphere_packing/long_description.txt create mode 100644 Sphere_packing/package_info/Sphere_packing/maintainer create mode 100644 Sphere_packing/test/Sphere_packing/CMakeLists.txt create mode 100644 Sphere_packing/test/Sphere_packing/sphere_packing_test.cpp diff --git a/Documentation/doc/Documentation/packages.txt b/Documentation/doc/Documentation/packages.txt index 24513e000baa..e49d7b4b3900 100644 --- a/Documentation/doc/Documentation/packages.txt +++ b/Documentation/doc/Documentation/packages.txt @@ -149,6 +149,7 @@ \package_listing{Polytope_distance_d} \package_listing{Principal_component_analysis} \package_listing{Optimal_bounding_box} +\package_listing{Sphere_packing} \cgalPackageSection{PartInterpolation,Interpolation} diff --git a/Installation/include/CGAL/license/Sphere_packing.h b/Installation/include/CGAL/license/Sphere_packing.h new file mode 100644 index 000000000000..871379973df5 --- /dev/null +++ b/Installation/include/CGAL/license/Sphere_packing.h @@ -0,0 +1,54 @@ +// Copyright (c) 2016 GeometryFactory SARL (France). +// All rights reserved. +// +// This file is part of CGAL (www.cgal.org) +// +// $URL$ +// $Id$ +// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-Commercial +// +// Author(s) : Andreas Fabri +// +// Warning: this file is generated, see include/CGAL/license/README.md + +#ifndef CGAL_LICENSE_SPHERE_PACKING_H +#define CGAL_LICENSE_SPHERE_PACKING_H + +#include +#include + +#ifdef CGAL_SPHERE_PACKING_COMMERCIAL_LICENSE + +# if CGAL_SPHERE_PACKING_COMMERCIAL_LICENSE < CGAL_RELEASE_DATE + +# if defined(CGAL_LICENSE_WARNING) + + CGAL_pragma_warning("Your commercial license for CGAL does not cover " + "this release of the Sphere Packing package.") +# endif + +# ifdef CGAL_LICENSE_ERROR +# error "Your commercial license for CGAL does not cover this release \ + of the Sphere Packings package. \ + You get this error, as you defined CGAL_LICENSE_ERROR." +# endif // CGAL_LICENSE_ERROR + +# endif // CGAL_SPHERE_PACKING_COMMERCIAL_LICENSE < CGAL_RELEASE_DATE + +#else // no CGAL_SPHERE_PACKING_COMMERCIAL_LICENSE + +# if defined(CGAL_LICENSE_WARNING) + CGAL_pragma_warning("\nThe macro CGAL_SPHERE_PACKING_COMMERCIAL_LICENSE is not defined." + "\nYou use the CGAL Sphere Packings package under " + "the terms of the GPLv3+.") +# endif // CGAL_LICENSE_WARNING + +# ifdef CGAL_LICENSE_ERROR +# error "The macro CGAL_SPHERE_PACKING_COMMERCIAL_LICENSE is not defined.\ + You use the CGAL Sphere Packings package under the terms of \ + the GPLv3+. You get this error, as you defined CGAL_LICENSE_ERROR." +# endif // CGAL_LICENSE_ERROR + +#endif // no CGAL_SPHERE_PACKING_COMMERCIAL_LICENSE + +#endif // CGAL_LICENSE_SPHERE_PACKING_H diff --git a/Sphere_packing/doc/Sphere_packing/Doxyfile.in b/Sphere_packing/doc/Sphere_packing/Doxyfile.in new file mode 100644 index 000000000000..63c00010065f --- /dev/null +++ b/Sphere_packing/doc/Sphere_packing/Doxyfile.in @@ -0,0 +1,3 @@ +@INCLUDE = ${CGAL_DOC_PACKAGE_DEFAULTS} + +PROJECT_NAME = "CGAL ${CGAL_DOC_VERSION} - Sphere Packing" diff --git a/Sphere_packing/doc/Sphere_packing/PackageDescription.txt b/Sphere_packing/doc/Sphere_packing/PackageDescription.txt new file mode 100644 index 000000000000..ae3018b8457e --- /dev/null +++ b/Sphere_packing/doc/Sphere_packing/PackageDescription.txt @@ -0,0 +1,40 @@ + +/// \defgroup PkgSpherePackingRef Sphere Packing Reference +/// \defgroup PkgSpherePackingConcepts Concepts +/// \ingroup PkgSpherePackingRef + +/// \defgroup PkgSpherePackingAlgorithmClasses Algorithm Classes +/// \ingroup PkgSpherePackingRef + +/// \defgroup PkgSpherePackingTraitsClasses Traits Classes +/// \ingroup PkgSpherePackingRef + +/// \defgroup PkgSpherePackingMiscellaneous Miscellaneous +/// \ingroup PkgSpherePackingRef + +/*! +\cgalPkgDescriptionBegin{SpherePacking, PkgSpherePacking} +\cgalPkgPicture{pkg-small.png} + +\cgalPkgSummaryBegin +\cgalPkgAuthors{Rene Weller} +\cgalPkgDesc{ +The SpherePacking provides ... } +\cgalPkgManuals{Chapter_SpherePacking,PkgSpherePackingRef} +\cgalPkgSummaryEnd + +\cgalPkgShortInfoBegin +\cgalPkgSince{6.2} +\cgalPkgBib{cgal:w-sp} +\cgalPkgLicense{\ref licensesGPL "GPL"} + +\cgalPkgShortInfoEnd + +\cgalPkgDescriptionEnd + + +\cgalClassifedRefPages + +\cgalCRPSection{Classes} +- `CGAL::Sphere_packing` +*/ diff --git a/Sphere_packing/doc/Sphere_packing/Sphere_packing.txt b/Sphere_packing/doc/Sphere_packing/Sphere_packing.txt new file mode 100644 index 000000000000..993eada6a174 --- /dev/null +++ b/Sphere_packing/doc/Sphere_packing/Sphere_packing.txt @@ -0,0 +1,29 @@ +namespace CGAL { +/*! + +\mainpage User Manual +\anchor Chapter_SpherePacking + +\cgalAutoToc +\author Rene Weller + +This chapter describes the ... + +\section secSpherePackingDefinitions Definitions + +Section on definitions here ... + +\section secSpherePackingExamples Examples + +\subsection secSpherePackingFirstExample First Example + +The following example shows ... + +\cgalExample{ } + +\cgalFigureBegin{figPck,bench.png} +Left: ... +\cgalFigureEnd + +*/ +} /* namespace CGAL */ diff --git a/Sphere_packing/doc/Sphere_packing/dependencies b/Sphere_packing/doc/Sphere_packing/dependencies new file mode 100644 index 000000000000..a4d5f76715e3 --- /dev/null +++ b/Sphere_packing/doc/Sphere_packing/dependencies @@ -0,0 +1,6 @@ +Manual +Kernel_23 +STL_Extension +Algebraic_foundations +Circulator +Stream_support diff --git a/Sphere_packing/doc/Sphere_packing/examples.txt b/Sphere_packing/doc/Sphere_packing/examples.txt new file mode 100644 index 000000000000..d5bd6f7ef60d --- /dev/null +++ b/Sphere_packing/doc/Sphere_packing/examples.txt @@ -0,0 +1,3 @@ +/*! +\example Sphere_packing/sphere_packing.cpp +*/ diff --git a/Sphere_packing/doc/Sphere_packing/fig/pkg-small.png b/Sphere_packing/doc/Sphere_packing/fig/pkg-small.png new file mode 100644 index 0000000000000000000000000000000000000000..5609b037587a48c46b483d2c0768c7ae88b40c72 GIT binary patch literal 9467 zcmZ`QsjDeqppv3OAP@}2H?o@G)$`?vj0nC9ne$JA7erHK1zGS4zV2k21HcQ4 z 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 literal 0 HcmV?d00001 diff --git a/Sphere_packing/examples/Sphere_packing/CMakeLists.txt b/Sphere_packing/examples/Sphere_packing/CMakeLists.txt new file mode 100644 index 000000000000..8594225e107e --- /dev/null +++ b/Sphere_packing/examples/Sphere_packing/CMakeLists.txt @@ -0,0 +1,14 @@ + +cmake_minimum_required(VERSION 3.12...3.31) +project(Sphere_packing_Examples) + +find_package(CGAL REQUIRED) + +# create a target per cppfile +file( + GLOB cppfiles + RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) +foreach(cppfile ${cppfiles}) + create_single_source_cgal_program("${cppfile}") +endforeach() diff --git a/Sphere_packing/examples/Sphere_packing/sphere_packing.cpp b/Sphere_packing/examples/Sphere_packing/sphere_packing.cpp new file mode 100644 index 000000000000..acdc4910620a --- /dev/null +++ b/Sphere_packing/examples/Sphere_packing/sphere_packing.cpp @@ -0,0 +1,6 @@ +#include + +int main() +{ + return 0; +} diff --git a/Sphere_packing/include/CGAL/Sphere_packing.h b/Sphere_packing/include/CGAL/Sphere_packing.h new file mode 100644 index 000000000000..87851b5c4de0 --- /dev/null +++ b/Sphere_packing/include/CGAL/Sphere_packing.h @@ -0,0 +1,52 @@ +// Copyright (c) 2025 Universitaet Bremen +// All rights reserved. +// +// This file is part of CGAL (www.cgal.org). +// +// $URL$ +// $Id$ +// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial +// +// +// Author(s) : Rene Weller +// + +#ifndef CGAL_SPHEERE_PACKINGH_H_ +#define CGAL_SPHEERE_PACKINGH_H_ + +#include + +#include + +#include + + +namespace CGAL { + +/// \ingroup PkgSpherePackingRef + + + +/** + * \brief Sphere packing class. + * + * This class is a placeholder for the Sphere Packing package. + * It is not implemented yet. + * + * \tparam GeomTraits a geometric traits class, model of `Kernel` + * + */ + + +template +class Sphere_packing +{ +}; + + + +} // end namespace CGAL + +#include + +#endif // CGAL_SPHEERE_PACKINGH_H_ diff --git a/Sphere_packing/package_info/Sphere_packing/copyright b/Sphere_packing/package_info/Sphere_packing/copyright new file mode 100644 index 000000000000..7999f03ca2b8 --- /dev/null +++ b/Sphere_packing/package_info/Sphere_packing/copyright @@ -0,0 +1 @@ +University of Bremen diff --git a/Sphere_packing/package_info/Sphere_packing/description.txt b/Sphere_packing/package_info/Sphere_packing/description.txt new file mode 100644 index 000000000000..dbb0a70f2c9e --- /dev/null +++ b/Sphere_packing/package_info/Sphere_packing/description.txt @@ -0,0 +1 @@ +Computes the sphere packing for a triangle mesh or a point set delimiting a volume diff --git a/Sphere_packing/package_info/Sphere_packing/license.txt b/Sphere_packing/package_info/Sphere_packing/license.txt new file mode 100644 index 000000000000..8bb8efcb72b0 --- /dev/null +++ b/Sphere_packing/package_info/Sphere_packing/license.txt @@ -0,0 +1 @@ +GPL (v3 or later) diff --git a/Sphere_packing/package_info/Sphere_packing/long_description.txt b/Sphere_packing/package_info/Sphere_packing/long_description.txt new file mode 100644 index 000000000000..dbb0a70f2c9e --- /dev/null +++ b/Sphere_packing/package_info/Sphere_packing/long_description.txt @@ -0,0 +1 @@ +Computes the sphere packing for a triangle mesh or a point set delimiting a volume diff --git a/Sphere_packing/package_info/Sphere_packing/maintainer b/Sphere_packing/package_info/Sphere_packing/maintainer new file mode 100644 index 000000000000..53456210416f --- /dev/null +++ b/Sphere_packing/package_info/Sphere_packing/maintainer @@ -0,0 +1 @@ +Rene Welle, Sven Oesau diff --git a/Sphere_packing/test/Sphere_packing/CMakeLists.txt b/Sphere_packing/test/Sphere_packing/CMakeLists.txt new file mode 100644 index 000000000000..1cd0f06159eb --- /dev/null +++ b/Sphere_packing/test/Sphere_packing/CMakeLists.txt @@ -0,0 +1,14 @@ + +cmake_minimum_required(VERSION 3.12...3.31) +project(Sphere_packing_Tests) + +find_package(CGAL REQUIRED) + +# create a target per cppfile +file( + GLOB cppfiles + RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) +foreach(cppfile ${cppfiles}) + create_single_source_cgal_program("${cppfile}") +endforeach() diff --git a/Sphere_packing/test/Sphere_packing/sphere_packing_test.cpp b/Sphere_packing/test/Sphere_packing/sphere_packing_test.cpp new file mode 100644 index 000000000000..acdc4910620a --- /dev/null +++ b/Sphere_packing/test/Sphere_packing/sphere_packing_test.cpp @@ -0,0 +1,6 @@ +#include + +int main() +{ + return 0; +} From 50fe3a426ef03e4f0eab836956de2ebcce82ce86 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Wed, 16 Apr 2025 12:51:46 +0100 Subject: [PATCH 02/12] doc --- Sphere_packing/doc/Sphere_packing/PackageDescription.txt | 2 ++ Sphere_packing/include/CGAL/Sphere_packing.h | 9 +++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Sphere_packing/doc/Sphere_packing/PackageDescription.txt b/Sphere_packing/doc/Sphere_packing/PackageDescription.txt index ae3018b8457e..7ee437f014d9 100644 --- a/Sphere_packing/doc/Sphere_packing/PackageDescription.txt +++ b/Sphere_packing/doc/Sphere_packing/PackageDescription.txt @@ -13,6 +13,8 @@ /// \ingroup PkgSpherePackingRef /*! + +\addtogroup PkgSpherePackingRef \cgalPkgDescriptionBegin{SpherePacking, PkgSpherePacking} \cgalPkgPicture{pkg-small.png} diff --git a/Sphere_packing/include/CGAL/Sphere_packing.h b/Sphere_packing/include/CGAL/Sphere_packing.h index 87851b5c4de0..f15b3b967b4c 100644 --- a/Sphere_packing/include/CGAL/Sphere_packing.h +++ b/Sphere_packing/include/CGAL/Sphere_packing.h @@ -11,8 +11,8 @@ // Author(s) : Rene Weller // -#ifndef CGAL_SPHEERE_PACKINGH_H_ -#define CGAL_SPHEERE_PACKINGH_H_ +#ifndef CGAL_SPHERE_PACKINGH_H_ +#define CGAL_SPHERE_PACKINGH_H_ #include @@ -23,11 +23,12 @@ namespace CGAL { -/// \ingroup PkgSpherePackingRef + /** + * \ingroup PkgSpherePackingAlgorithmClasses * \brief Sphere packing class. * * This class is a placeholder for the Sphere Packing package. @@ -49,4 +50,4 @@ class Sphere_packing #include -#endif // CGAL_SPHEERE_PACKINGH_H_ +#endif // CGAL_SPHERE_PACKINGH_H_ From 42d9c26805f3568c4cdf07917179ab45ac5e32b4 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Fri, 18 Apr 2025 12:09:03 +0100 Subject: [PATCH 03/12] cleanup to have no warnings --- Sphere_packing/doc/Sphere_packing/Sphere_packing.txt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Sphere_packing/doc/Sphere_packing/Sphere_packing.txt b/Sphere_packing/doc/Sphere_packing/Sphere_packing.txt index 993eada6a174..56f12a6dce97 100644 --- a/Sphere_packing/doc/Sphere_packing/Sphere_packing.txt +++ b/Sphere_packing/doc/Sphere_packing/Sphere_packing.txt @@ -19,11 +19,9 @@ Section on definitions here ... The following example shows ... -\cgalExample{ } +\cgalExample{Sphere_packing/sphere_packing.cpp} + -\cgalFigureBegin{figPck,bench.png} -Left: ... -\cgalFigureEnd */ } /* namespace CGAL */ From 444a8bef4e7f58cb16479ce6a47eac63bfd7ab6b Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Fri, 25 Apr 2025 12:53:34 +0100 Subject: [PATCH 04/12] Add to gpl_package_list --- Installation/include/CGAL/license/gpl_package_list.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/Installation/include/CGAL/license/gpl_package_list.txt b/Installation/include/CGAL/license/gpl_package_list.txt index bac50919912f..3e9be14e815b 100644 --- a/Installation/include/CGAL/license/gpl_package_list.txt +++ b/Installation/include/CGAL/license/gpl_package_list.txt @@ -86,6 +86,7 @@ Skin_surface_3 3D Skin Surface Meshing SMDS_3 3D Simplicial Mesh Data Structure Snap_rounding_2 2D Snap Rounding Spatial_searching dD Spatial Searching +Sphere_packing Sphere Packing Straight_skeleton_2 2D Straight Skeleton and Polygon Offsetting Straight_skeleton_extrusion_2 2D Straight Skeleton Extrusion Stream_lines_2 2D Placement of Streamlines From ed19f90b9a8cbdba8935e2b80a1c508258803f68 Mon Sep 17 00:00:00 2001 From: Sven Oesau Date: Fri, 1 Aug 2025 14:47:48 +0200 Subject: [PATCH 05/12] added interface documentation for pack_spheres() --- .../doc/Sphere_packing/PackageDescription.txt | 15 +-- .../doc/Sphere_packing/dependencies | 1 + .../examples/Sphere_packing/CMakeLists.txt | 23 +++-- .../Sphere_packing/sphere_packing.cpp | 19 +++- Sphere_packing/include/CGAL/Sphere_packing.h | 99 +++++++++++++++---- 5 files changed, 118 insertions(+), 39 deletions(-) diff --git a/Sphere_packing/doc/Sphere_packing/PackageDescription.txt b/Sphere_packing/doc/Sphere_packing/PackageDescription.txt index 7ee437f014d9..338b5e5079b2 100644 --- a/Sphere_packing/doc/Sphere_packing/PackageDescription.txt +++ b/Sphere_packing/doc/Sphere_packing/PackageDescription.txt @@ -1,17 +1,8 @@ /// \defgroup PkgSpherePackingRef Sphere Packing Reference -/// \defgroup PkgSpherePackingConcepts Concepts -/// \ingroup PkgSpherePackingRef - -/// \defgroup PkgSpherePackingAlgorithmClasses Algorithm Classes -/// \ingroup PkgSpherePackingRef -/// \defgroup PkgSpherePackingTraitsClasses Traits Classes +/// \defgroup PkgSpherePackingAlgorithms Algorithms /// \ingroup PkgSpherePackingRef - -/// \defgroup PkgSpherePackingMiscellaneous Miscellaneous -/// \ingroup PkgSpherePackingRef - /*! \addtogroup PkgSpherePackingRef @@ -37,6 +28,6 @@ The SpherePacking provides ... } \cgalClassifedRefPages -\cgalCRPSection{Classes} -- `CGAL::Sphere_packing` +\cgalCRPSection{Algorithms} +- `CGAL::pack_spheres` */ diff --git a/Sphere_packing/doc/Sphere_packing/dependencies b/Sphere_packing/doc/Sphere_packing/dependencies index a4d5f76715e3..80d55008aa4e 100644 --- a/Sphere_packing/doc/Sphere_packing/dependencies +++ b/Sphere_packing/doc/Sphere_packing/dependencies @@ -4,3 +4,4 @@ STL_Extension Algebraic_foundations Circulator Stream_support +BGL diff --git a/Sphere_packing/examples/Sphere_packing/CMakeLists.txt b/Sphere_packing/examples/Sphere_packing/CMakeLists.txt index 8594225e107e..70fab7bd9cff 100644 --- a/Sphere_packing/examples/Sphere_packing/CMakeLists.txt +++ b/Sphere_packing/examples/Sphere_packing/CMakeLists.txt @@ -1,14 +1,19 @@ cmake_minimum_required(VERSION 3.12...3.31) -project(Sphere_packing_Examples) +project(Sphere_packing_Examples CXX CUDA) find_package(CGAL REQUIRED) +#find_package(ProtoSphere) + +# Allow the user to specify the path to MyLib's include directory +set(ProtoSphere_INCLUDE_DIR "" CACHE PATH "Path to ProtoSphere include directory") + +# Allow the user to specify the path to MyLib's library directory +set(ProtoSphere_LIBRARY "" CACHE FILEPATH "Path to ProtoSphere library file (e.g. libmylib.a or mylib.lib)") + +message(STATUS ${CMAKE_CUDA_COMPILER_VERSION}) + +create_single_source_cgal_program("sphere_packing.cpp") +target_link_libraries(sphere_packing PRIVATE ${ProtoSphere_LIBRARY}) +target_include_directories(sphere_packing PRIVATE ${ProtoSphere_INCLUDE_DIR}) -# create a target per cppfile -file( - GLOB cppfiles - RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) -foreach(cppfile ${cppfiles}) - create_single_source_cgal_program("${cppfile}") -endforeach() diff --git a/Sphere_packing/examples/Sphere_packing/sphere_packing.cpp b/Sphere_packing/examples/Sphere_packing/sphere_packing.cpp index acdc4910620a..df625fd4c7d6 100644 --- a/Sphere_packing/examples/Sphere_packing/sphere_packing.cpp +++ b/Sphere_packing/examples/Sphere_packing/sphere_packing.cpp @@ -1,6 +1,23 @@ #include +#include +#include +#include -int main() +using Kernel = CGAL::Simple_cartesian; +using Point = Kernel::Point_3; +using Mesh = CGAL::Surface_mesh; + +namespace PMP = CGAL::Polygon_mesh_processing; + +int main(int argc, const char **argv) { + const std::string filename = (argc > 1) ? argv[1] : CGAL::data_file_path("meshes/bear.off"); + + Mesh mesh; + if (!PMP::IO::read_polygon_mesh(filename, mesh)) + { + std::cerr << "Invalid input." << std::endl; + return 1; + } return 0; } diff --git a/Sphere_packing/include/CGAL/Sphere_packing.h b/Sphere_packing/include/CGAL/Sphere_packing.h index f15b3b967b4c..5b74604d0cf5 100644 --- a/Sphere_packing/include/CGAL/Sphere_packing.h +++ b/Sphere_packing/include/CGAL/Sphere_packing.h @@ -8,7 +8,7 @@ // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial // // -// Author(s) : Rene Weller +// Author(s) : Rene Weller, Sven Oesau // #ifndef CGAL_SPHERE_PACKINGH_H_ @@ -18,33 +18,98 @@ #include -#include - namespace CGAL { - - - - /** - * \ingroup PkgSpherePackingAlgorithmClasses - * \brief Sphere packing class. + * \ingroup PkgSpherePackingAlgorithms + * \brief Packs spheres into a closed mesh. + * Computes a packing of spheres into a closed and self-intersection free triangle mesh. The possible range of radii of spheres can be chosen; large spheres are preferred during the packing. + * The optimal solution is not guaranteed as it has NP-hard complexity. + * + * Note that the precision of the method is limited by the precision of the GPU, i.e., non-exact arithmetic with 32-bit floating point numbers is used. + * + * \tparam FaceGraph a model of `HalfedgeListGraph`, `FaceListGraph`, and `MutableFaceGraph` + * + * \tparam OutputIterator must be an output iterator accepting variables of type `Sphere_3`. + * + * \tparam NamedParameters a sequence of \ref bgl_namedparameters "Named Parameters" + * + * \param mesh the input mesh to pack spheres into. It has to be a closed triangle mesh and may not have self-intersections. + * \param out output iterator into which the packed spheres are written. + * \param np an optional sequence of \ref bgl_namedparameters "Named Parameters" among the ones listed below * - * This class is a placeholder for the Sphere Packing package. - * It is not implemented yet. + * \cgalNamedParamsBegin * - * \tparam GeomTraits a geometric traits class, model of `Kernel` + * \cgalParamNBegin{number_of_target_spheres} + * \cgalParamDescription{target number of spheres to be packed into `mesh`.} + * \cgalParamType{unsigned int} + * \cgalParamDefault{10,000} + * \cgalParamNEnd * + * \cgalParamNBegin{minimum_radius} + * \cgalParamDescription{minimum radius of packed spheres} + * \cgalParamType{float} + * \cgalParamDefault{0} + * \cgalParamNEnd + * + * \cgalParamNBegin{maximum_radius} + * \cgalParamDescription{maximum radius of packed spheres} + * \cgalParamType{float} + * \cgalParamDefault{FLT_MAX} + * \cgalParamNEnd + * + * \cgalParamNBegin{iteration_functor} + * \cgalParamDescription{a functor that is called before each split to decide whether the packing should continue.} + * \cgalParamType{an instance of `std::function`.} + * \cgalParamDefault{No functor is used. Packing continues until `number_of_target_spheres` or `maximum_splits` are met.} + * \cgalParamExtra{`float4` is a CUDA data type and has 4 members: `float x, y, z, w`.} + * \cgalParamNEnd + * + * \cgalParamNBegin{initial_grid_resolution} + * \cgalParamDescription{number of grid cells for the longest side of the bounding box. Grid cells are cubes.} + * \cgalParamType{unsigned int} + * \cgalParamDefault{4} + * \cgalParamNEnd + * + * \cgalParamNBegin{maximum_splits} + * \cgalParamDescription{how often the grid is subdivided at most.} + * \cgalParamType{unsigned int} + * \cgalParamDefault{6} + * \cgalParamNEnd + * + * \cgalParamNBegin{iterations_between_splits} + * \cgalParamDescription{iterations of placing spheres between splitting the grid into a higher resolution.} + * \cgalParamType{unsigned int} + * \cgalParamDefault{30} + * \cgalParamNEnd + * + * \cgalParamNBegin{vertex_point_map} + * \cgalParamDescription{a property map associating points to the vertices of `mesh`} + * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits::%vertex_descriptor` + * as key type and `%Point_3` as value type} + * \cgalParamDefault{`boost::get(CGAL::vertex_point, mesh)`} + * \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t` + * must be available in `FaceGraph`.} + * \cgalParamNEnd + * + * \cgalParamNBegin{geom_traits} + * \cgalParamDescription{an instance of a geometric traits class} + * \cgalParamType{a class model of `Kernel`} + * \cgalParamDefault{a \cgal Kernel deduced from the point type of `FaceGraph`, using `CGAL::Kernel_traits`} + * \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.} + * \cgalParamNEnd + * + * \cgalNamedParamsEnd + * + * \return number of convex hulls. Can be lower than the `maximum_number_of_convex_hulls` if the specified `volume_error` is quickly met. */ -template -class Sphere_packing -{ -}; - +template +std::size_t pack_spheres(const FaceGraph& mesh, OutputIterator &out, const NamedParameters& np = parameters::default_values()) { +} } // end namespace CGAL From 5182b071da6e267c7edf1dfffc6dc3b649502670 Mon Sep 17 00:00:00 2001 From: Sven Oesau Date: Fri, 1 Aug 2025 15:01:51 +0200 Subject: [PATCH 06/12] remove CUDA from project languages --- Sphere_packing/examples/Sphere_packing/CMakeLists.txt | 10 +++++++--- Sphere_packing/include/CGAL/Sphere_packing.h | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Sphere_packing/examples/Sphere_packing/CMakeLists.txt b/Sphere_packing/examples/Sphere_packing/CMakeLists.txt index 70fab7bd9cff..f887611afdc6 100644 --- a/Sphere_packing/examples/Sphere_packing/CMakeLists.txt +++ b/Sphere_packing/examples/Sphere_packing/CMakeLists.txt @@ -1,18 +1,22 @@ cmake_minimum_required(VERSION 3.12...3.31) -project(Sphere_packing_Examples CXX CUDA) +project(Sphere_packing_Examples CXX) find_package(CGAL REQUIRED) +find_package(CUDAToolkit) #find_package(ProtoSphere) +if (CUDAToolkit_FOUND) + message(STATUS ${CMAKE_CUDA_COMPILER_VERSION}) + enable_language(CUDA) +endif() + # Allow the user to specify the path to MyLib's include directory set(ProtoSphere_INCLUDE_DIR "" CACHE PATH "Path to ProtoSphere include directory") # Allow the user to specify the path to MyLib's library directory set(ProtoSphere_LIBRARY "" CACHE FILEPATH "Path to ProtoSphere library file (e.g. libmylib.a or mylib.lib)") -message(STATUS ${CMAKE_CUDA_COMPILER_VERSION}) - create_single_source_cgal_program("sphere_packing.cpp") target_link_libraries(sphere_packing PRIVATE ${ProtoSphere_LIBRARY}) target_include_directories(sphere_packing PRIVATE ${ProtoSphere_INCLUDE_DIR}) diff --git a/Sphere_packing/include/CGAL/Sphere_packing.h b/Sphere_packing/include/CGAL/Sphere_packing.h index 5b74604d0cf5..50f801f3b35c 100644 --- a/Sphere_packing/include/CGAL/Sphere_packing.h +++ b/Sphere_packing/include/CGAL/Sphere_packing.h @@ -17,6 +17,7 @@ #include #include +#include namespace CGAL { From 89f84f89c1ada6f029d2c33a2f30c54abae6fb8e Mon Sep 17 00:00:00 2001 From: Sven Oesau Date: Fri, 1 Aug 2025 15:17:40 +0200 Subject: [PATCH 07/12] adding logo removing language from CMake project --- .../doc/Sphere_packing/PackageDescription.txt | 4 ++-- .../doc/Sphere_packing/fig/pkg-small.png | Bin 9467 -> 0 bytes .../Sphere_packing/fig/sphere_packing_logo.png | Bin 0 -> 116001 bytes .../examples/Sphere_packing/CMakeLists.txt | 3 +-- 4 files changed, 3 insertions(+), 4 deletions(-) delete mode 100644 Sphere_packing/doc/Sphere_packing/fig/pkg-small.png create mode 100644 Sphere_packing/doc/Sphere_packing/fig/sphere_packing_logo.png diff --git a/Sphere_packing/doc/Sphere_packing/PackageDescription.txt b/Sphere_packing/doc/Sphere_packing/PackageDescription.txt index 338b5e5079b2..7633cd874a70 100644 --- a/Sphere_packing/doc/Sphere_packing/PackageDescription.txt +++ b/Sphere_packing/doc/Sphere_packing/PackageDescription.txt @@ -7,10 +7,10 @@ \addtogroup PkgSpherePackingRef \cgalPkgDescriptionBegin{SpherePacking, PkgSpherePacking} -\cgalPkgPicture{pkg-small.png} +\cgalPkgPicture{sphere_packing_logo_small.png} \cgalPkgSummaryBegin -\cgalPkgAuthors{Rene Weller} +\cgalPkgAuthors{Rene Weller, Sven Oesau} \cgalPkgDesc{ The SpherePacking provides ... } \cgalPkgManuals{Chapter_SpherePacking,PkgSpherePackingRef} diff --git a/Sphere_packing/doc/Sphere_packing/fig/pkg-small.png b/Sphere_packing/doc/Sphere_packing/fig/pkg-small.png deleted file mode 100644 index 5609b037587a48c46b483d2c0768c7ae88b40c72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9467 zcmZ`QsjDeqppv3OAP@}2H?o@G)$`?vj0nC9ne$JA7erHK1zGS4zV2k21HcQ4 z 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 diff --git a/Sphere_packing/doc/Sphere_packing/fig/sphere_packing_logo.png b/Sphere_packing/doc/Sphere_packing/fig/sphere_packing_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f8fa75c3a2309bcd55d7db77e97456236a7204ac GIT binary patch literal 116001 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

2yAL`Ia0dfFlkHjI3WByYd+n7aq_T`rh03 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 Date: Fri, 1 Aug 2025 15:23:53 +0200 Subject: [PATCH 08/12] adding named parameters --- .../CGAL/STL_Extension/internal/parameters_interface.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/STL_Extension/include/CGAL/STL_Extension/internal/parameters_interface.h b/STL_Extension/include/CGAL/STL_Extension/internal/parameters_interface.h index 305527636c1c..fcf2e4a5b7ab 100644 --- a/STL_Extension/include/CGAL/STL_Extension/internal/parameters_interface.h +++ b/STL_Extension/include/CGAL/STL_Extension/internal/parameters_interface.h @@ -175,6 +175,13 @@ CGAL_add_named_parameter(progressive_t, progressive, progressive) CGAL_add_named_parameter(tiling_t, tiling, tiling) CGAL_add_named_parameter(dimension_t, dimension, dimension) +// List of named parameters that we use in the package 'Sphere packing' +CGAL_add_named_parameter(number_of_target_spheres_t, number_of_target_spheres, number_of_target_spheres) +CGAL_add_named_parameter(iteration_functor_t, iteration_functor, iteration_functor) +CGAL_add_named_parameter(iterations_between_splits_t, iterations_between_splits, iterations_between_splits) +CGAL_add_named_parameter(maximum_splits_t, maximum_splits, maximum_splits) +CGAL_add_named_parameter(number_of_target_spheres_t, number_of_target_spheres, number_of_target_spheres) + // List of named parameters that we use in the package 'Surface Mesh Simplification' CGAL_add_named_parameter(get_cost_policy_t, get_cost_policy, get_cost) From ce04179feb5d029e8b60678380dae282057811c4 Mon Sep 17 00:00:00 2001 From: Sven Oesau Date: Fri, 1 Aug 2025 15:42:04 +0200 Subject: [PATCH 09/12] adding small logo [skip ci] --- .../fig/sphere_packing_logo_small.png | Bin 0 -> 8037 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Sphere_packing/doc/Sphere_packing/fig/sphere_packing_logo_small.png diff --git a/Sphere_packing/doc/Sphere_packing/fig/sphere_packing_logo_small.png b/Sphere_packing/doc/Sphere_packing/fig/sphere_packing_logo_small.png new file mode 100644 index 0000000000000000000000000000000000000000..a2c9917443d8a2668860ec69418c4388d9732d87 GIT binary patch literal 8037 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 Date: Fri, 1 Aug 2025 16:35:21 +0200 Subject: [PATCH 10/12] review integration --- .../internal/parameters_interface.h | 1 - Sphere_packing/include/CGAL/Sphere_packing.h | 27 ++++++++++--------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/STL_Extension/include/CGAL/STL_Extension/internal/parameters_interface.h b/STL_Extension/include/CGAL/STL_Extension/internal/parameters_interface.h index fcf2e4a5b7ab..f39f0469d21c 100644 --- a/STL_Extension/include/CGAL/STL_Extension/internal/parameters_interface.h +++ b/STL_Extension/include/CGAL/STL_Extension/internal/parameters_interface.h @@ -180,7 +180,6 @@ CGAL_add_named_parameter(number_of_target_spheres_t, number_of_target_spheres, n CGAL_add_named_parameter(iteration_functor_t, iteration_functor, iteration_functor) CGAL_add_named_parameter(iterations_between_splits_t, iterations_between_splits, iterations_between_splits) CGAL_add_named_parameter(maximum_splits_t, maximum_splits, maximum_splits) -CGAL_add_named_parameter(number_of_target_spheres_t, number_of_target_spheres, number_of_target_spheres) // List of named parameters that we use in the package 'Surface Mesh Simplification' diff --git a/Sphere_packing/include/CGAL/Sphere_packing.h b/Sphere_packing/include/CGAL/Sphere_packing.h index 50f801f3b35c..e53995b9d093 100644 --- a/Sphere_packing/include/CGAL/Sphere_packing.h +++ b/Sphere_packing/include/CGAL/Sphere_packing.h @@ -30,20 +30,20 @@ namespace CGAL { * * Note that the precision of the method is limited by the precision of the GPU, i.e., non-exact arithmetic with 32-bit floating point numbers is used. * - * \tparam FaceGraph a model of `HalfedgeListGraph`, `FaceListGraph`, and `MutableFaceGraph` + * \tparam TriangleMesh a model of `HalfedgeListGraph`, `FaceListGraph`, and `MutableFaceGraph` * - * \tparam OutputIterator must be an output iterator accepting variables of type `Sphere_3`. + * \tparam OutputIterator must be an output iterator accepting variables of type `geom_traits::Sphere_3`. * * \tparam NamedParameters a sequence of \ref bgl_namedparameters "Named Parameters" * - * \param mesh the input mesh to pack spheres into. It has to be a closed triangle mesh and may not have self-intersections. + * \param tm the input tm to pack spheres into. It has to be a closed triangle mesh and may not have self-intersections. * \param out output iterator into which the packed spheres are written. * \param np an optional sequence of \ref bgl_namedparameters "Named Parameters" among the ones listed below * * \cgalNamedParamsBegin * * \cgalParamNBegin{number_of_target_spheres} - * \cgalParamDescription{target number of spheres to be packed into `mesh`.} + * \cgalParamDescription{target number of spheres to be packed into `tm`.} * \cgalParamType{unsigned int} * \cgalParamDefault{10,000} * \cgalParamNEnd @@ -57,7 +57,7 @@ namespace CGAL { * \cgalParamNBegin{maximum_radius} * \cgalParamDescription{maximum radius of packed spheres} * \cgalParamType{float} - * \cgalParamDefault{FLT_MAX} + * \cgalParamDefault{std::numeric_limits::max()} * \cgalParamNEnd * * \cgalParamNBegin{iteration_functor} @@ -86,30 +86,31 @@ namespace CGAL { * \cgalParamNEnd * * \cgalParamNBegin{vertex_point_map} - * \cgalParamDescription{a property map associating points to the vertices of `mesh`} - * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits::%vertex_descriptor` + * \cgalParamDescription{a property map associating points to the vertices of `tm`} + * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits::%vertex_descriptor` * as key type and `%Point_3` as value type} - * \cgalParamDefault{`boost::get(CGAL::vertex_point, mesh)`} + * \cgalParamDefault{`boost::get(CGAL::vertex_point, tm)`} * \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t` - * must be available in `FaceGraph`.} + * must be available in `TriangleMesh`.} * \cgalParamNEnd * * \cgalParamNBegin{geom_traits} * \cgalParamDescription{an instance of a geometric traits class} * \cgalParamType{a class model of `Kernel`} - * \cgalParamDefault{a \cgal Kernel deduced from the point type of `FaceGraph`, using `CGAL::Kernel_traits`} + * \cgalParamDefault{a \cgal Kernel deduced from the point type of `TriangleMesh`, using `CGAL::Kernel_traits`} * \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.} * \cgalParamNEnd * * \cgalNamedParamsEnd * - * \return number of convex hulls. Can be lower than the `maximum_number_of_convex_hulls` if the specified `volume_error` is quickly met. + * \return `out`, the output iterator */ -template -std::size_t pack_spheres(const FaceGraph& mesh, OutputIterator &out, const NamedParameters& np = parameters::default_values()) { +template +OutputIterator pack_spheres(const TriangleMesh& tm, OutputIterator out, const NamedParameters& np = parameters::default_values()) { + return out; } } // end namespace CGAL From bc6cb1c8c934305dd765dbd3bb6a1f4f9c2d739b Mon Sep 17 00:00:00 2001 From: Sven Oesau Date: Fri, 1 Aug 2025 16:44:11 +0200 Subject: [PATCH 11/12] merge fix --- .../include/CGAL/STL_Extension/internal/parameters_interface.h | 1 + 1 file changed, 1 insertion(+) diff --git a/STL_Extension/include/CGAL/STL_Extension/internal/parameters_interface.h b/STL_Extension/include/CGAL/STL_Extension/internal/parameters_interface.h index 2acdeec08d69..988a58618b6c 100644 --- a/STL_Extension/include/CGAL/STL_Extension/internal/parameters_interface.h +++ b/STL_Extension/include/CGAL/STL_Extension/internal/parameters_interface.h @@ -185,6 +185,7 @@ CGAL_add_named_parameter(number_of_target_spheres_t, number_of_target_spheres, n CGAL_add_named_parameter(iteration_functor_t, iteration_functor, iteration_functor) CGAL_add_named_parameter(iterations_between_splits_t, iterations_between_splits, iterations_between_splits) CGAL_add_named_parameter(maximum_splits_t, maximum_splits, maximum_splits) +CGAL_add_named_parameter(initial_grid_resolution_t, initial_grid_resolution, initial_grid_resolution) // List of named parameters that we use in the package 'Surface Mesh Simplification' CGAL_add_named_parameter(get_cost_policy_t, get_cost_policy, get_cost) From 09ce67b687e7c834dc9c90b79942856eedcaa131 Mon Sep 17 00:00:00 2001 From: Sven Oesau Date: Fri, 1 Aug 2025 16:48:08 +0200 Subject: [PATCH 12/12] doc fix --- Sphere_packing/doc/Sphere_packing/PackageDescription.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sphere_packing/doc/Sphere_packing/PackageDescription.txt b/Sphere_packing/doc/Sphere_packing/PackageDescription.txt index 7633cd874a70..901d90c43d98 100644 --- a/Sphere_packing/doc/Sphere_packing/PackageDescription.txt +++ b/Sphere_packing/doc/Sphere_packing/PackageDescription.txt @@ -29,5 +29,5 @@ The SpherePacking provides ... } \cgalClassifedRefPages \cgalCRPSection{Algorithms} -- `CGAL::pack_spheres` +- `CGAL::pack_spheres()` */