mirror of https://github.com/CGAL/cgal
Merge remote-tracking branch 'cgal/master' into Triangulation_3-CDT_3-lrineau
This commit is contained in:
commit
196f00c34b
|
|
@ -10,17 +10,18 @@ jobs:
|
||||||
reuse:
|
reuse:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- name: Checkout
|
||||||
- name: REUSE version
|
uses: actions/checkout@v4
|
||||||
uses: fsfe/reuse-action@v4
|
- name: Display reuse-tool version
|
||||||
|
uses: fsfe/reuse-action@v5
|
||||||
with:
|
with:
|
||||||
args: --version
|
args: --version
|
||||||
- name: REUSE lint
|
- name: REUSE Compliance Check
|
||||||
uses: fsfe/reuse-action@v4
|
uses: fsfe/reuse-action@v5
|
||||||
with:
|
with:
|
||||||
args: --include-submodules lint
|
args: --include-submodules lint
|
||||||
- name: REUSE SPDX SBOM
|
- name: REUSE SPDX SBOM
|
||||||
uses: fsfe/reuse-action@v4
|
uses: fsfe/reuse-action@v5
|
||||||
with:
|
with:
|
||||||
args: spdx
|
args: spdx
|
||||||
- name: install dependencies
|
- name: install dependencies
|
||||||
|
|
@ -29,7 +30,7 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
mkdir -p ./release
|
mkdir -p ./release
|
||||||
cmake -DDESTINATION=./release -DCGAL_VERSION=9.9 -P ./Scripts/developer_scripts/cgal_create_release_with_cmake.cmake
|
cmake -DDESTINATION=./release -DCGAL_VERSION=9.9 -P ./Scripts/developer_scripts/cgal_create_release_with_cmake.cmake
|
||||||
- name: REUSE lint release tarball
|
- name: REUSE Compliance Check of release tarball
|
||||||
uses: fsfe/reuse-action@v4
|
uses: fsfe/reuse-action@v5
|
||||||
with:
|
with:
|
||||||
args: --root ./release/CGAL-9.9 --include-submodules lint
|
args: --root ./release/CGAL-9.9 --include-submodules lint
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University(Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University(Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2023, 2024 Tel-Aviv University (Israel).
|
// Copyright (c) 2023, 2024 Tel-Aviv University (Israel).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@
|
||||||
|
|
||||||
#include <OpenMesh/Core/IO/MeshIO.hh>
|
#include <OpenMesh/Core/IO/MeshIO.hh>
|
||||||
#include <OpenMesh/Core/Mesh/TriMesh_ArrayKernelT.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/copy_face_graph.h>
|
||||||
#include <CGAL/boost/graph/graph_traits_PolyMesh_ArrayKernelT.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>
|
template <typename Graph, typename VPM, typename VFeaturePM, typename EFeaturePM>
|
||||||
bool read_OM(const std::string& fname, Graph& g, VPM vpm, VFeaturePM vfpm, EFeaturePM efpm)
|
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<OMesh>::vertex_descriptor om_vertex_descriptor;
|
||||||
typedef typename boost::graph_traits<Graph>::vertex_descriptor vertex_descriptor;
|
typedef typename boost::graph_traits<Graph>::vertex_descriptor vertex_descriptor;
|
||||||
typedef typename boost::graph_traits<OMesh>::halfedge_descriptor om_halfedge_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>
|
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<OMesh>::vertex_descriptor om_vertex_descriptor;
|
||||||
typedef typename boost::graph_traits<Graph>::vertex_descriptor vertex_descriptor;
|
typedef typename boost::graph_traits<Graph>::vertex_descriptor vertex_descriptor;
|
||||||
typedef typename boost::graph_traits<OMesh>::halfedge_descriptor om_halfedge_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);
|
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
|
} // 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`
|
\cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits<Graph>::%vertex_descriptor`
|
||||||
as key type and `bool` as value type.}
|
as key type and `bool` as value type.}
|
||||||
\cgalParamNEnd
|
\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
|
\cgalNamedParamsEnd
|
||||||
|
|
||||||
\returns `true` if writing was successful, `false` otherwise.
|
\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));
|
CGAL::Constant_property_map<edge_descriptor, bool>(false));
|
||||||
auto vpm = choose_parameter(get_parameter(np, internal_np::vertex_point),
|
auto vpm = choose_parameter(get_parameter(np, internal_np::vertex_point),
|
||||||
get_const_property_map(vertex_point, g));
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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>
|
Visit the official website of the library at <A HREF="http://ceres-solver.org/index.html">`ceres-solver.org`</A>
|
||||||
for more information.
|
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.
|
\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.
|
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.
|
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).
|
\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`.
|
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>.
|
The \osqp web site is <A HREF="https://osqp.org">`https://osqp.org`</A>.
|
||||||
|
|
|
||||||
|
|
@ -149,11 +149,11 @@
|
||||||
#define CGAL_USE_SSE2_FABS
|
#define CGAL_USE_SSE2_FABS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Require C++17
|
|
||||||
#if !(__cplusplus >= 201703L || _MSVC_LANG >= 201703L)
|
#if !(__cplusplus >= 201703L || _MSVC_LANG >= 201703L)
|
||||||
#error "CGAL requires C++ 17"
|
#error "CGAL requires C++ 17"
|
||||||
#endif
|
#endif
|
||||||
// Detect C++20
|
|
||||||
|
// Macro to detect C++20
|
||||||
#if __cplusplus >= 202002L || _MSVC_LANG >= 202002L
|
#if __cplusplus >= 202002L || _MSVC_LANG >= 202002L
|
||||||
# define CGAL_CXX20 1
|
# define CGAL_CXX20 1
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -289,9 +289,8 @@ public:
|
||||||
m_initial_intervals.resize(e.size());
|
m_initial_intervals.resize(e.size());
|
||||||
|
|
||||||
std::size_t idx = 0;
|
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_intervals[idx++] = m_graph[edge].intervals;
|
||||||
}
|
|
||||||
|
|
||||||
m_initial_part_of_partition.resize(m_ifaces.size());
|
m_initial_part_of_partition.resize(m_ifaces.size());
|
||||||
for (idx = 0; idx < m_ifaces.size(); idx++)
|
for (idx = 0; idx < m_ifaces.size(); idx++)
|
||||||
|
|
@ -303,9 +302,8 @@ public:
|
||||||
CGAL_assertion(e.size() == m_initial_intervals.size());
|
CGAL_assertion(e.size() == m_initial_intervals.size());
|
||||||
std::size_t idx = 0;
|
std::size_t idx = 0;
|
||||||
|
|
||||||
for (auto edge : e) {
|
for (auto edge : e)
|
||||||
m_graph[edge].intervals = m_initial_intervals[idx];
|
m_graph[edge].intervals = m_initial_intervals[idx++];
|
||||||
}
|
|
||||||
|
|
||||||
CGAL_assertion(m_ifaces.size() == m_initial_part_of_partition.size());
|
CGAL_assertion(m_ifaces.size() == m_initial_part_of_partition.size());
|
||||||
for (idx = 0; idx < m_ifaces.size(); idx++)
|
for (idx = 0; idx < m_ifaces.size(); idx++)
|
||||||
|
|
|
||||||
|
|
@ -731,7 +731,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_parameters.verbose)
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -284,9 +284,9 @@ Building_C
|
||||||
<TD class="math" ALIGN=RIGHT NOWRAP>
|
<TD class="math" ALIGN=RIGHT NOWRAP>
|
||||||
3.432
|
3.432
|
||||||
<TD class="math" ALIGN=RIGHT NOWRAP>
|
<TD class="math" ALIGN=RIGHT NOWRAP>
|
||||||
370
|
369
|
||||||
<TD class="math" ALIGN=RIGHT NOWRAP>
|
<TD class="math" ALIGN=RIGHT NOWRAP>
|
||||||
1.466
|
1.457
|
||||||
<TD class="math" ALIGN=RIGHT NOWRAP>
|
<TD class="math" ALIGN=RIGHT NOWRAP>
|
||||||
40,1
|
40,1
|
||||||
<TD class="math" ALIGN=RIGHT NOWRAP>
|
<TD class="math" ALIGN=RIGHT NOWRAP>
|
||||||
|
|
@ -376,10 +376,10 @@ Meeting Room
|
||||||
<TD class="math" ALIGN=RIGHT NOWRAP>
|
<TD class="math" ALIGN=RIGHT NOWRAP>
|
||||||
15
|
15
|
||||||
<TD class="math" ALIGN=RIGHT NOWRAP>
|
<TD class="math" ALIGN=RIGHT NOWRAP>
|
||||||
0,03
|
|
||||||
<TD class="math" ALIGN=RIGHT NOWRAP>
|
|
||||||
10
|
10
|
||||||
<TD class="math" ALIGN=RIGHT NOWRAP>
|
<TD class="math" ALIGN=RIGHT NOWRAP>
|
||||||
|
0,03
|
||||||
|
<TD class="math" ALIGN=RIGHT NOWRAP>
|
||||||
3
|
3
|
||||||
<TD class="math" ALIGN=RIGHT NOWRAP>
|
<TD class="math" ALIGN=RIGHT NOWRAP>
|
||||||
0,5
|
0,5
|
||||||
|
|
@ -396,10 +396,10 @@ Full Thing
|
||||||
<TD class="math" ALIGN=RIGHT NOWRAP>
|
<TD class="math" ALIGN=RIGHT NOWRAP>
|
||||||
12
|
12
|
||||||
<TD class="math" ALIGN=RIGHT NOWRAP>
|
<TD class="math" ALIGN=RIGHT NOWRAP>
|
||||||
0,05
|
|
||||||
<TD class="math" ALIGN=RIGHT NOWRAP>
|
|
||||||
3
|
3
|
||||||
<TD class="math" ALIGN=RIGHT NOWRAP>
|
<TD class="math" ALIGN=RIGHT NOWRAP>
|
||||||
|
0,05
|
||||||
|
<TD class="math" ALIGN=RIGHT NOWRAP>
|
||||||
1
|
1
|
||||||
<TD class="math" ALIGN=RIGHT NOWRAP>
|
<TD class="math" ALIGN=RIGHT NOWRAP>
|
||||||
0,5
|
0,5
|
||||||
|
|
@ -416,10 +416,10 @@ Hilbert cube
|
||||||
<TD class="math" ALIGN=RIGHT NOWRAP>
|
<TD class="math" ALIGN=RIGHT NOWRAP>
|
||||||
12
|
12
|
||||||
<TD class="math" ALIGN=RIGHT NOWRAP>
|
<TD class="math" ALIGN=RIGHT NOWRAP>
|
||||||
0,03
|
|
||||||
<TD class="math" ALIGN=RIGHT NOWRAP>
|
|
||||||
5
|
5
|
||||||
<TD class="math" ALIGN=RIGHT NOWRAP>
|
<TD class="math" ALIGN=RIGHT NOWRAP>
|
||||||
|
0,03
|
||||||
|
<TD class="math" ALIGN=RIGHT NOWRAP>
|
||||||
4
|
4
|
||||||
<TD class="math" ALIGN=RIGHT NOWRAP>
|
<TD class="math" ALIGN=RIGHT NOWRAP>
|
||||||
0,5
|
0,5
|
||||||
|
|
@ -456,10 +456,10 @@ Building_C
|
||||||
<TD class="math" ALIGN=RIGHT NOWRAP>
|
<TD class="math" ALIGN=RIGHT NOWRAP>
|
||||||
15
|
15
|
||||||
<TD class="math" ALIGN=RIGHT NOWRAP>
|
<TD class="math" ALIGN=RIGHT NOWRAP>
|
||||||
0,5
|
|
||||||
<TD class="math" ALIGN=RIGHT NOWRAP>
|
|
||||||
3
|
3
|
||||||
<TD class="math" ALIGN=RIGHT NOWRAP>
|
<TD class="math" ALIGN=RIGHT NOWRAP>
|
||||||
|
0,5
|
||||||
|
<TD class="math" ALIGN=RIGHT NOWRAP>
|
||||||
2
|
2
|
||||||
<TD class="math" ALIGN=RIGHT NOWRAP>
|
<TD class="math" ALIGN=RIGHT NOWRAP>
|
||||||
0,77
|
0,77
|
||||||
|
|
|
||||||
|
|
@ -171,15 +171,10 @@ int main(const int argc, const char** argv) {
|
||||||
timer.start();
|
timer.start();
|
||||||
std::size_t num_shapes = ksr.detect_planar_shapes(param);
|
std::size_t num_shapes = ksr.detect_planar_shapes(param);
|
||||||
|
|
||||||
|
std::cout << num_shapes << " regularized detected planar shapes" << std::endl;
|
||||||
std::cout << num_shapes << " detected planar shapes" << std::endl;
|
|
||||||
|
|
||||||
FT after_shape_detection = timer.time();
|
FT after_shape_detection = timer.time();
|
||||||
|
|
||||||
ksr.initialize_partition(param);
|
|
||||||
|
|
||||||
FT after_init = timer.time();
|
|
||||||
|
|
||||||
ksr.partition(parameters.k_intersections);
|
ksr.partition(parameters.k_intersections);
|
||||||
|
|
||||||
FT after_partition = timer.time();
|
FT after_partition = timer.time();
|
||||||
|
|
@ -198,6 +193,8 @@ int main(const int argc, const char** argv) {
|
||||||
|
|
||||||
FT after_reconstruction = timer.time();
|
FT after_reconstruction = timer.time();
|
||||||
|
|
||||||
|
std::cout << polylist.size() << " polygons, " << vtx.size() << " vertices" << std::endl;
|
||||||
|
|
||||||
if (polylist.size() > 0)
|
if (polylist.size() > 0)
|
||||||
CGAL::IO::write_polygon_soup("polylist_" + std::to_string(parameters.graphcut_lambda) + (parameters.use_ground ? "_g" : "_") + ".off", vtx, polylist);
|
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
|
else
|
||||||
ksr.reconstruct(l, external_nodes, std::back_inserter(vtx), std::back_inserter(polylist));
|
ksr.reconstruct(l, external_nodes, std::back_inserter(vtx), std::back_inserter(polylist));
|
||||||
|
|
||||||
|
|
||||||
if (polylist.size() > 0) {
|
if (polylist.size() > 0) {
|
||||||
non_empty = true;
|
non_empty = true;
|
||||||
CGAL::IO::write_polygon_soup("polylist_" + std::to_string(l) + (parameters.use_ground ? "_g" : "_") + ".off", vtx, polylist);
|
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 << "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 partition: " << (after_partition - after_shape_detection) << " seconds!" << std::endl;
|
||||||
std::cout << " initialization: " << (after_init - after_shape_detection) << " seconds!" << std::endl;
|
std::cout << "Kinetic reconstruction: " << (after_reconstruction - after_partition) << " seconds!" << std::endl;
|
||||||
std::cout << " partition: " << (after_partition - after_init) << " seconds!" << std::endl;
|
std::cout << "Total time: " << time << " seconds!" << std::endl << 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;
|
return (non_empty) ? EXIT_SUCCESS : EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -627,7 +627,6 @@ private:
|
||||||
std::vector<std::pair<std::size_t, std::size_t> > m_volume_votes; // pair<inside, outside> votes
|
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<bool> m_volume_below_ground;
|
||||||
std::vector<std::vector<double> > m_cost_matrix;
|
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::vector<std::size_t> m_labels;
|
||||||
|
|
||||||
std::size_t m_total_inliers;
|
std::size_t m_total_inliers;
|
||||||
|
|
@ -747,9 +746,9 @@ private:
|
||||||
std::cout << "* computing data term ... ";
|
std::cout << "* computing data term ... ";
|
||||||
|
|
||||||
std::size_t max_inside = 0, max_outside = 0;
|
std::size_t max_inside = 0, max_outside = 0;
|
||||||
for (std::size_t i = 0; i < m_volumes.size(); i++) {
|
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 + 6]), max_inside);
|
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 + 6]), max_outside);
|
max_outside = (std::max<std::size_t>)(static_cast<std::size_t>(m_cost_matrix[1][i]), max_outside);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dump volumes colored by votes
|
// Dump volumes colored by votes
|
||||||
|
|
@ -1743,55 +1742,14 @@ private:
|
||||||
return face_area;
|
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() {
|
void count_volume_votes_lcc() {
|
||||||
// const int debug_volume = -1;
|
// const int debug_volume = -1;
|
||||||
FT total_volume = 0;
|
|
||||||
std::size_t num_volumes = m_kinetic_partition.number_of_volumes();
|
std::size_t num_volumes = m_kinetic_partition.number_of_volumes();
|
||||||
m_volume_votes.clear();
|
m_volume_votes.clear();
|
||||||
m_volume_votes.resize(num_volumes, std::make_pair(0, 0));
|
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_cost_matrix[0][i] = m_cost_matrix[1][i] = 0;
|
||||||
m_volumes[i] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
From_exact from_exact;
|
From_exact from_exact;
|
||||||
|
|
||||||
|
|
@ -1829,28 +1787,15 @@ private:
|
||||||
m_cost_matrix[1][v[j] + 6] += static_cast<double>(out[j]);
|
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>
|
template<typename NamedParameters>
|
||||||
void create_planar_shapes(const NamedParameters& np) {
|
void create_planar_shapes(const NamedParameters& np) {
|
||||||
|
|
||||||
if (m_points.size() < 3) {
|
if (m_points.size() < 3) {
|
||||||
if (m_verbose) std::cout << "* no points found, skipping" << std::endl;
|
if (m_verbose) std::cout << "* no points found, skipping" << std::endl;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_verbose) std::cout << "* getting planar shapes using region growing" << std::endl;
|
if (m_verbose) std::cout << "* getting planar shapes using region growing" << std::endl;
|
||||||
|
|
||||||
FT xmin, ymin, zmin, xmax, ymax, zmax;
|
FT xmin, ymin, zmin, xmax, ymax, zmax;
|
||||||
|
|
|
||||||
|
|
@ -180,12 +180,14 @@ save(QFileInfo fileinfo, QList<CGAL::Three::Scene_item*>& items)
|
||||||
res = CGAL::IO::write_OM((const char*)fileinfo.filePath().toUtf8()
|
res = CGAL::IO::write_OM((const char*)fileinfo.filePath().toUtf8()
|
||||||
, *sm_item->face_graph()
|
, *sm_item->face_graph()
|
||||||
, CGAL::parameters::vertex_is_constrained_map(selection_item->constrained_vertices_pmap())
|
, 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
|
else
|
||||||
{
|
{
|
||||||
res = CGAL::IO::write_OM((const char*)fileinfo.filePath().toUtf8()
|
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)
|
if (res)
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ use Date::Format;
|
||||||
use JSON;
|
use JSON;
|
||||||
use File::Copy;
|
use File::Copy;
|
||||||
use FindBin;
|
use FindBin;
|
||||||
|
use IO::Compress::Gzip qw(gzip $GzipError) ;
|
||||||
|
|
||||||
my $server_url="https://cgal.geometryfactory.com/";
|
my $server_url="https://cgal.geometryfactory.com/";
|
||||||
my $cgal_members="${server_url}CGAL/Members/";
|
my $cgal_members="${server_url}CGAL/Members/";
|
||||||
|
|
@ -827,7 +828,8 @@ sub create_summary_page {
|
||||||
};
|
};
|
||||||
my $json = JSON->new->allow_nonref;
|
my $json = JSON->new->allow_nonref;
|
||||||
my $json_text = $json->encode($final_data);
|
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;
|
print $fh $json_text;
|
||||||
close $fh;
|
close $fh;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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).
|
// This file is part of CGAL(www.cgal.org).
|
||||||
//
|
//
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2018 INRIA Sophia-Antipolis (France).
|
// Copyright (c) 2018 INRIA Sophia-Antipolis (France).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2022 GeometryFactory (France).
|
// Copyright (c) 2022 GeometryFactory (France).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 1997 INRIA Sophia-Antipolis (France).
|
// Copyright (c) 1997 INRIA Sophia-Antipolis (France).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2022 GeometryFactory (France).
|
// Copyright (c) 2022 GeometryFactory (France).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2022 GeometryFactory (France).
|
// Copyright (c) 2022 GeometryFactory (France).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2018 INRIA Sophia-Antipolis (France).
|
// Copyright (c) 2018 INRIA Sophia-Antipolis (France).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright(c) 2022 GeometryFactory (France).
|
// Copyright (c) 2022 GeometryFactory (France).
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
|
|
@ -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.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// This file is part of CGAL (www.cgal.org).
|
// This file is part of CGAL (www.cgal.org).
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue