mirror of https://github.com/CGAL/cgal
Merge branch 'master' into CGAL-GlobalCMakeListsForEachPackage-jtournois
This commit is contained in:
commit
2601f1332f
|
|
@ -12,15 +12,15 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- name: REUSE version
|
- name: REUSE version
|
||||||
uses: fsfe/reuse-action@v3
|
uses: fsfe/reuse-action@v4
|
||||||
with:
|
with:
|
||||||
args: --version
|
args: --version
|
||||||
- name: REUSE lint
|
- name: REUSE lint
|
||||||
uses: fsfe/reuse-action@v3
|
uses: fsfe/reuse-action@v4
|
||||||
with:
|
with:
|
||||||
args: --include-submodules lint
|
args: --include-submodules lint
|
||||||
- name: REUSE SPDX SBOM
|
- name: REUSE SPDX SBOM
|
||||||
uses: fsfe/reuse-action@v3
|
uses: fsfe/reuse-action@v4
|
||||||
with:
|
with:
|
||||||
args: spdx
|
args: spdx
|
||||||
- name: install dependencies
|
- name: install dependencies
|
||||||
|
|
@ -30,6 +30,6 @@ jobs:
|
||||||
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 lint release tarball
|
||||||
uses: fsfe/reuse-action@v3
|
uses: fsfe/reuse-action@v4
|
||||||
with:
|
with:
|
||||||
args: --root ./release/CGAL-9.9 --include-submodules lint
|
args: --root ./release/CGAL-9.9 --include-submodules lint
|
||||||
|
|
|
||||||
12
.reuse/dep5
12
.reuse/dep5
|
|
@ -1,12 +0,0 @@
|
||||||
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
|
||||||
Upstream-Name: CGAL
|
|
||||||
Upstream-Contact: CGAL Editorial Board <info@cgal.org>
|
|
||||||
Source: https://github.com/CGAL/cgal
|
|
||||||
|
|
||||||
Files: .* *.cmake *.md .github/* Maintenance/* */TODO */doc/* */deb/* */applications/* */doc_html/* */scripts/* */developer_scripts/* */demo/* */examples/* */src/* */test/* */benchmarks/* */benchmark/* */package_info/* */data/* */cmake/*
|
|
||||||
Copyright: 1995-2023 The CGAL Project
|
|
||||||
License: CC0-1.0
|
|
||||||
|
|
||||||
Files: CMakeLists.txt GraphicsView/include/CGAL/Qt/ImageInterface.ui GraphicsView/include/CGAL/Qt/resources/qglviewer-icon.xpm Installation/AUTHORS Installation/CMakeLists.txt Installation/README Installation/auxiliary/cgal_create_cmake_script.1 Installation/auxiliary/gmp/README Installation/include/CGAL/license/gpl_package_list.txt MacOSX/auxiliary/cgal_app.icns copyright
|
|
||||||
Copyright: 1995-2023 The CGAL Project
|
|
||||||
License: CC0-1.0
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Created by the script cgal_create_cmake_script
|
# Created by the script cgal_create_cmake_script
|
||||||
# This is the CMake script for compiling a CGAL application.
|
# This is the CMake script for compiling a CGAL application.
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(AABB_traits_benchmark)
|
project(AABB_traits_benchmark)
|
||||||
|
|
||||||
find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Core)
|
find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Core)
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# This is the CMake script for compiling the AABB tree demo.
|
# This is the CMake script for compiling the AABB tree demo.
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(AABB_tree_Demo)
|
project(AABB_tree_Demo)
|
||||||
|
|
||||||
# Find includes in corresponding build directories
|
# Find includes in corresponding build directories
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Created by the script cgal_create_cmake_script
|
# Created by the script cgal_create_cmake_script
|
||||||
# This is the CMake script for compiling a CGAL application.
|
# This is the CMake script for compiling a CGAL application.
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(AABB_tree_Examples)
|
project(AABB_tree_Examples)
|
||||||
|
|
||||||
find_package(CGAL REQUIRED)
|
find_package(CGAL REQUIRED)
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Created by the script cgal_create_cmake_script
|
# Created by the script cgal_create_cmake_script
|
||||||
# This is the CMake script for compiling a CGAL application.
|
# This is the CMake script for compiling a CGAL application.
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(AABB_tree_Tests)
|
project(AABB_tree_Tests)
|
||||||
|
|
||||||
find_package(CGAL REQUIRED)
|
find_package(CGAL REQUIRED)
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Created by the script cgal_create_cmake_script
|
# Created by the script cgal_create_cmake_script
|
||||||
# This is the CMake script for compiling a CGAL application.
|
# This is the CMake script for compiling a CGAL application.
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(Advancing_front_surface_reconstruction_Examples)
|
project(Advancing_front_surface_reconstruction_Examples)
|
||||||
|
|
||||||
find_package(CGAL REQUIRED)
|
find_package(CGAL REQUIRED)
|
||||||
|
|
|
||||||
|
|
@ -126,7 +126,7 @@ int main (int argc, char* argv[])
|
||||||
|
|
||||||
Efficient_ransac ransac;
|
Efficient_ransac ransac;
|
||||||
ransac.set_input(points);
|
ransac.set_input(points);
|
||||||
ransac.add_shape_factory<Plane>(); // Only planes are useful for stucturing
|
ransac.add_shape_factory<Plane>(); // Only planes are useful for structuring
|
||||||
|
|
||||||
// Default RANSAC parameters
|
// Default RANSAC parameters
|
||||||
Efficient_ransac::Parameters op;
|
Efficient_ransac::Parameters op;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Created by the script cgal_create_cmake_script
|
# Created by the script cgal_create_cmake_script
|
||||||
# This is the CMake script for compiling a CGAL application.
|
# This is the CMake script for compiling a CGAL application.
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(Advancing_front_surface_reconstruction_Tests)
|
project(Advancing_front_surface_reconstruction_Tests)
|
||||||
|
|
||||||
find_package(CGAL REQUIRED)
|
find_package(CGAL REQUIRED)
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Created by the script cgal_create_cmake_script
|
# Created by the script cgal_create_cmake_script
|
||||||
# This is the CMake script for compiling a CGAL application.
|
# This is the CMake script for compiling a CGAL application.
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(Algebraic_foundations_Examples)
|
project(Algebraic_foundations_Examples)
|
||||||
|
|
||||||
find_package(CGAL REQUIRED)
|
find_package(CGAL REQUIRED)
|
||||||
|
|
|
||||||
|
|
@ -426,7 +426,7 @@ void test_algebraic_structure_intern(
|
||||||
//commutative
|
//commutative
|
||||||
assert(a+b+c==c+b+a);
|
assert(a+b+c==c+b+a);
|
||||||
assert(a*b*c==c*b*a);
|
assert(a*b*c==c*b*a);
|
||||||
//distributiv
|
//distributive
|
||||||
assert((a-b)*c==a*c-b*c);
|
assert((a-b)*c==a*c-b*c);
|
||||||
assert((a+b)*c==a*c+b*c);
|
assert((a+b)*c==a*c+b*c);
|
||||||
//binom
|
//binom
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Created by the script cgal_create_cmake_script
|
# Created by the script cgal_create_cmake_script
|
||||||
# This is the CMake script for compiling a CGAL application.
|
# This is the CMake script for compiling a CGAL application.
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(Algebraic_foundations_Tests)
|
project(Algebraic_foundations_Tests)
|
||||||
|
|
||||||
find_package(CGAL REQUIRED COMPONENTS Core)
|
find_package(CGAL REQUIRED COMPONENTS Core)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(Algebraic_kernel_d_Examples)
|
project(Algebraic_kernel_d_Examples)
|
||||||
|
|
||||||
find_package(CGAL REQUIRED COMPONENTS Core)
|
find_package(CGAL REQUIRED COMPONENTS Core)
|
||||||
|
|
|
||||||
|
|
@ -1811,7 +1811,7 @@ public:
|
||||||
* An x-critical point (x,y) of \c f (or its induced curve)
|
* An x-critical point (x,y) of \c f (or its induced curve)
|
||||||
* satisfies f(x,y) = f_y(x,y) = 0,
|
* satisfies f(x,y) = f_y(x,y) = 0,
|
||||||
* where f_y means the derivative w.r.t. y.
|
* where f_y means the derivative w.r.t. y.
|
||||||
* In pariticular, each singular point is x-critical.
|
* In particular, each singular point is x-critical.
|
||||||
*/
|
*/
|
||||||
class X_critical_points_2 :
|
class X_critical_points_2 :
|
||||||
public CGAL::cpp98::binary_function< Curve_analysis_2,
|
public CGAL::cpp98::binary_function< Curve_analysis_2,
|
||||||
|
|
@ -1890,7 +1890,7 @@ public:
|
||||||
* An y-critical point (x,y) of \c f (or its induced curve)
|
* An y-critical point (x,y) of \c f (or its induced curve)
|
||||||
* satisfies f(x,y) = f_x(x,y) = 0,
|
* satisfies f(x,y) = f_x(x,y) = 0,
|
||||||
* where f_x means the derivative w.r.t. x.
|
* where f_x means the derivative w.r.t. x.
|
||||||
* In pariticular, each singular point is y-critical.
|
* In particular, each singular point is y-critical.
|
||||||
*/
|
*/
|
||||||
class Y_critical_points_2 :
|
class Y_critical_points_2 :
|
||||||
public CGAL::cpp98::binary_function< Curve_analysis_2,
|
public CGAL::cpp98::binary_function< Curve_analysis_2,
|
||||||
|
|
|
||||||
|
|
@ -1153,7 +1153,7 @@ public:
|
||||||
/*!
|
/*!
|
||||||
* \brief Constructor for a polynomial \c f
|
* \brief Constructor for a polynomial \c f
|
||||||
*
|
*
|
||||||
* See the documentation of the constrctor
|
* See the documentation of the constructor
|
||||||
* with \c Square_free_descartes_tag
|
* with \c Square_free_descartes_tag
|
||||||
*/
|
*/
|
||||||
Bitstream_descartes(Polynomial f,
|
Bitstream_descartes(Polynomial f,
|
||||||
|
|
|
||||||
|
|
@ -135,7 +135,7 @@ public:
|
||||||
//! curve has vertical line at this x-coordinate
|
//! curve has vertical line at this x-coordinate
|
||||||
mutable bool _m_vertical_line;
|
mutable bool _m_vertical_line;
|
||||||
|
|
||||||
//! decsribes an event
|
//! describes an event
|
||||||
mutable bool _m_event;
|
mutable bool _m_event;
|
||||||
|
|
||||||
//! number of arcs running down the pole
|
//! number of arcs running down the pole
|
||||||
|
|
|
||||||
|
|
@ -268,7 +268,7 @@ void algebraic_number_test()
|
||||||
|
|
||||||
//simplify
|
//simplify
|
||||||
{
|
{
|
||||||
// just a synatx check
|
// just a syntax check
|
||||||
Algebraic_real_d_1(P_s2510,1,2).simplify();
|
Algebraic_real_d_1(P_s2510,1,2).simplify();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(Algebraic_kernel_d_Tests)
|
project(Algebraic_kernel_d_Tests)
|
||||||
|
|
||||||
# CGAL and its components
|
# CGAL and its components
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Created by the script cgal_create_cmake_script
|
# Created by the script cgal_create_cmake_script
|
||||||
# This is the CMake script for compiling a CGAL application.
|
# This is the CMake script for compiling a CGAL application.
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(Algebraic_kernel_for_circles_Tests)
|
project(Algebraic_kernel_for_circles_Tests)
|
||||||
|
|
||||||
find_package(CGAL REQUIRED)
|
find_package(CGAL REQUIRED)
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Created by the script cgal_create_cmake_script
|
# Created by the script cgal_create_cmake_script
|
||||||
# This is the CMake script for compiling a CGAL application.
|
# This is the CMake script for compiling a CGAL application.
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(Algebraic_kernel_for_spheres_Tests)
|
project(Algebraic_kernel_for_spheres_Tests)
|
||||||
|
|
||||||
find_package(CGAL REQUIRED)
|
find_package(CGAL REQUIRED)
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Created by the script cgal_create_cmake_script
|
# Created by the script cgal_create_cmake_script
|
||||||
# This is the CMake script for compiling a CGAL application.
|
# This is the CMake script for compiling a CGAL application.
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(Alpha_shapes_2_Examples)
|
project(Alpha_shapes_2_Examples)
|
||||||
|
|
||||||
find_package(CGAL REQUIRED)
|
find_package(CGAL REQUIRED)
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Created by the script cgal_create_cmake_script
|
# Created by the script cgal_create_cmake_script
|
||||||
# This is the CMake script for compiling a CGAL application.
|
# This is the CMake script for compiling a CGAL application.
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(Alpha_shapes_2_Tests)
|
project(Alpha_shapes_2_Tests)
|
||||||
|
|
||||||
find_package(CGAL REQUIRED)
|
find_package(CGAL REQUIRED)
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Created by the script cgal_create_cmake_script
|
# Created by the script cgal_create_cmake_script
|
||||||
# This is the CMake script for compiling a CGAL application.
|
# This is the CMake script for compiling a CGAL application.
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(Alpha_shapes_3_Demo)
|
project(Alpha_shapes_3_Demo)
|
||||||
|
|
||||||
# Find includes in corresponding build directories
|
# Find includes in corresponding build directories
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Created by the script cgal_create_cmake_script
|
# Created by the script cgal_create_cmake_script
|
||||||
# This is the CMake script for compiling a CGAL application.
|
# This is the CMake script for compiling a CGAL application.
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(Alpha_shapes_3_Examples)
|
project(Alpha_shapes_3_Examples)
|
||||||
|
|
||||||
find_package(CGAL REQUIRED)
|
find_package(CGAL REQUIRED)
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Created by the script cgal_create_cmake_script
|
# Created by the script cgal_create_cmake_script
|
||||||
# This is the CMake script for compiling a CGAL application.
|
# This is the CMake script for compiling a CGAL application.
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(Alpha_shapes_3_Tests)
|
project(Alpha_shapes_3_Tests)
|
||||||
|
|
||||||
find_package(CGAL REQUIRED)
|
find_package(CGAL REQUIRED)
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Created by the script cgal_create_cmake_script
|
# Created by the script cgal_create_cmake_script
|
||||||
# This is the CMake script for compiling a CGAL application.
|
# This is the CMake script for compiling a CGAL application.
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1...3.20)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(Alpha_wrap_3_Benchmark)
|
project(Alpha_wrap_3_Benchmark)
|
||||||
|
|
||||||
find_package(CGAL REQUIRED)
|
find_package(CGAL REQUIRED)
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Created by the script cgal_create_cmake_script
|
# Created by the script cgal_create_cmake_script
|
||||||
# This is the CMake script for compiling a CGAL application.
|
# This is the CMake script for compiling a CGAL application.
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(Alpha_wrap_3_Examples)
|
project(Alpha_wrap_3_Examples)
|
||||||
|
|
||||||
find_package(CGAL REQUIRED)
|
find_package(CGAL REQUIRED)
|
||||||
|
|
|
||||||
|
|
@ -1191,7 +1191,7 @@ private:
|
||||||
|
|
||||||
if(refining)
|
if(refining)
|
||||||
{
|
{
|
||||||
// If we are re-using the triangulation, change the label of the extra elements
|
// If we are reusing the triangulation, change the label of the extra elements
|
||||||
// that we have added to ensure a manifold result back to external ("manifold" -> "outside")
|
// that we have added to ensure a manifold result back to external ("manifold" -> "outside")
|
||||||
reset_manifold_labels();
|
reset_manifold_labels();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Created by the script cgal_create_cmake_script
|
# Created by the script cgal_create_cmake_script
|
||||||
# This is the CMake script for compiling a CGAL application.
|
# This is the CMake script for compiling a CGAL application.
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(Alpha_wrap_3_Tests)
|
project(Alpha_wrap_3_Tests)
|
||||||
|
|
||||||
find_package(CGAL REQUIRED)
|
find_package(CGAL REQUIRED)
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Created by the script cgal_create_cmake_script
|
# Created by the script cgal_create_cmake_script
|
||||||
# This is the CMake script for compiling a CGAL application.
|
# This is the CMake script for compiling a CGAL application.
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(Apollonius_graph_2_Examples)
|
project(Apollonius_graph_2_Examples)
|
||||||
|
|
||||||
find_package(CGAL REQUIRED COMPONENTS Core)
|
find_package(CGAL REQUIRED COMPONENTS Core)
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ namespace ApolloniusGraph_2 {
|
||||||
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
//--------------------------------------------------------------------
|
||||||
// help functions for the compulation of various quantites
|
// help functions for the compulation of various quantities
|
||||||
|
|
||||||
template < class FT >
|
template < class FT >
|
||||||
inline FT
|
inline FT
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Created by the script cgal_create_cmake_script
|
# Created by the script cgal_create_cmake_script
|
||||||
# This is the CMake script for compiling a CGAL application.
|
# This is the CMake script for compiling a CGAL application.
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(Apollonius_graph_2_Tests)
|
project(Apollonius_graph_2_Tests)
|
||||||
|
|
||||||
find_package(CGAL REQUIRED)
|
find_package(CGAL REQUIRED)
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Created by the script cgal_create_cmake_script
|
# Created by the script cgal_create_cmake_script
|
||||||
# This is the CMake script for compiling a CGAL application.
|
# This is the CMake script for compiling a CGAL application.
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(Arithmetic_kernel_Tests)
|
project(Arithmetic_kernel_Tests)
|
||||||
|
|
||||||
find_package(CGAL REQUIRED COMPONENTS Core)
|
find_package(CGAL REQUIRED COMPONENTS Core)
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
another chapter on "2D Arrangements on General Surfaces".
|
another chapter on "2D Arrangements on General Surfaces".
|
||||||
This chapter can be much shorter, as all you can do with arrangements was
|
This chapter can be much shorter, as all you can do with arrangements was
|
||||||
explained and demonstrated in the "2D Arrangements" chapter. We should
|
explained and demonstrated in the "2D Arrangements" chapter. We should
|
||||||
however intorduce the concept of TopologyTraits, and re-interpret the
|
however introduce the concept of TopologyTraits, and re-interpret the
|
||||||
functionality of the GeometryTraits.
|
functionality of the GeometryTraits.
|
||||||
|
|
||||||
- Incoorporate:
|
- Incoorporate:
|
||||||
|
|
@ -98,7 +98,7 @@
|
||||||
- The "planar" zone visitor is also used here. I believe this should work,
|
- The "planar" zone visitor is also used here. I believe this should work,
|
||||||
as it is generic enough (I hope).
|
as it is generic enough (I hope).
|
||||||
Can you test it by trying to incrementally insert curves to an
|
Can you test it by trying to incrementally insert curves to an
|
||||||
arrrangement on a sphere.
|
arrangement on a sphere.
|
||||||
|
|
||||||
- We can think of adding a test for the spherical topology, similar to the
|
- We can think of adding a test for the spherical topology, similar to the
|
||||||
construction test developed by Baruch: Namely read n curves from a file,
|
construction test developed by Baruch: Namely read n curves from a file,
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ int main (int argc, char *argv[])
|
||||||
std::cerr << "Usage: " << argv[0] << " <file name> <method>"
|
std::cerr << "Usage: " << argv[0] << " <file name> <method>"
|
||||||
<< std::endl
|
<< std::endl
|
||||||
<< "method is either:" << std::endl
|
<< "method is either:" << std::endl
|
||||||
<< " -a for aggragated insertion;" << std::endl
|
<< " -a for aggregated insertion;" << std::endl
|
||||||
<< " -n for incremental insertion with naive point-location;"
|
<< " -n for incremental insertion with naive point-location;"
|
||||||
<< std::endl
|
<< std::endl
|
||||||
<< " -w for incremental insertion with walk point-location."
|
<< " -w for incremental insertion with walk point-location."
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
// of line segments it reads from a file.
|
// of line segments it reads from a file.
|
||||||
//
|
//
|
||||||
// Usage: seg_arr <-a | -n | -w> <input file>
|
// Usage: seg_arr <-a | -n | -w> <input file>
|
||||||
// Where: -a -- Use aggragated insertion (sweep-line);
|
// Where: -a -- Use aggregated insertion (sweep-line);
|
||||||
// -n -- Use incremental insertion with naive point-location;
|
// -n -- Use incremental insertion with naive point-location;
|
||||||
// -w -- Use incremental insertion with walk point-location.
|
// -w -- Use incremental insertion with walk point-location.
|
||||||
//
|
//
|
||||||
|
|
@ -70,7 +70,7 @@ int main (int argc, char **argv)
|
||||||
std::cerr << "Usage: " << argv[0] << " <file name> <method> [format]"
|
std::cerr << "Usage: " << argv[0] << " <file name> <method> [format]"
|
||||||
<< std::endl
|
<< std::endl
|
||||||
<< "method is either:" << std::endl
|
<< "method is either:" << std::endl
|
||||||
<< " -a for aggragated insertion;" << std::endl
|
<< " -a for aggregated insertion;" << std::endl
|
||||||
<< " -n for incremental insertion with naive point-location;"
|
<< " -n for incremental insertion with naive point-location;"
|
||||||
<< std::endl
|
<< std::endl
|
||||||
<< " -w for incremental insertion with walk point-location."
|
<< " -w for incremental insertion with walk point-location."
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
// of line segments it reads from a file.
|
// of line segments it reads from a file.
|
||||||
//
|
//
|
||||||
// Usage: seg_arr <-a | -n | -w> <input file>
|
// Usage: seg_arr <-a | -n | -w> <input file>
|
||||||
// Where: -a -- Use aggragated insertion (sweep-line);
|
// Where: -a -- Use aggregated insertion (sweep-line);
|
||||||
// -n -- Use incremental insertion with naive point-location;
|
// -n -- Use incremental insertion with naive point-location;
|
||||||
// -w -- Use incremental insertion with walk point-location.
|
// -w -- Use incremental insertion with walk point-location.
|
||||||
//
|
//
|
||||||
|
|
@ -70,7 +70,7 @@ int main (int argc, char **argv)
|
||||||
std::cerr << "Usage: " << argv[0] << " <file name> <method> [format]"
|
std::cerr << "Usage: " << argv[0] << " <file name> <method> [format]"
|
||||||
<< std::endl
|
<< std::endl
|
||||||
<< "method is either:" << std::endl
|
<< "method is either:" << std::endl
|
||||||
<< " -a for aggragated insertion;" << std::endl
|
<< " -a for aggregated insertion;" << std::endl
|
||||||
<< " -n for incremental insertion with naive point-location;"
|
<< " -n for incremental insertion with naive point-location;"
|
||||||
<< std::endl
|
<< std::endl
|
||||||
<< " -s for incremental insertion with simple point-location;"
|
<< " -s for incremental insertion with simple point-location;"
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,6 @@ namespace Qt
|
||||||
{
|
{
|
||||||
class Callback;
|
class Callback;
|
||||||
class ArrangementGraphicsItemBase;
|
class ArrangementGraphicsItemBase;
|
||||||
class ArrangementGraphicsItemBase;
|
|
||||||
class GraphicsViewCurveInputBase;
|
class GraphicsViewCurveInputBase;
|
||||||
class GraphicsViewNavigation;
|
class GraphicsViewNavigation;
|
||||||
enum class CurveType;
|
enum class CurveType;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# This is the CMake script for compiling a CGAL application.
|
# This is the CMake script for compiling a CGAL application.
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(Arrangement_on_surface_2_Demo)
|
project(Arrangement_on_surface_2_Demo)
|
||||||
|
|
||||||
if(NOT POLICY CMP0070 AND POLICY CMP0053)
|
if(NOT POLICY CMP0070 AND POLICY CMP0053)
|
||||||
|
|
|
||||||
|
|
@ -111,13 +111,10 @@ void CurveInputMethod::beginInput_()
|
||||||
|
|
||||||
static inline void clearPainterPath(QPainterPath& ppath)
|
static inline void clearPainterPath(QPainterPath& ppath)
|
||||||
{
|
{
|
||||||
#if (QT_VERSION >= QT_VERSION_CHECK(5, 13, 0))
|
|
||||||
ppath.clear();
|
ppath.clear();
|
||||||
#else
|
|
||||||
ppath = {};
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void CurveInputMethod::reset()
|
void CurveInputMethod::reset()
|
||||||
{
|
{
|
||||||
this->resetInput();
|
this->resetInput();
|
||||||
|
|
|
||||||
|
|
@ -67,11 +67,7 @@ void GridGraphicsItem::setSpacing(int spacing_)
|
||||||
static inline qreal
|
static inline qreal
|
||||||
horizontalAdvance(const QFontMetrics& fm, const QString& text)
|
horizontalAdvance(const QFontMetrics& fm, const QString& text)
|
||||||
{
|
{
|
||||||
#if (QT_VERSION >= QT_VERSION_CHECK(5, 11, 0))
|
|
||||||
return fm.horizontalAdvance(text);
|
return fm.horizontalAdvance(text);
|
||||||
#else
|
|
||||||
return fm.boundingRect(text).width();
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GridGraphicsItem::paint(
|
void GridGraphicsItem::paint(
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@
|
||||||
|
|
||||||
class QGraphicsScene;
|
class QGraphicsScene;
|
||||||
|
|
||||||
// Genereic `Arr_compute_y_at_x_2`
|
// Generic `Arr_compute_y_at_x_2`
|
||||||
template <typename Traits_>
|
template <typename Traits_>
|
||||||
class Arr_compute_y_at_x_2 : public GraphicsSceneMixin {
|
class Arr_compute_y_at_x_2 : public GraphicsSceneMixin {
|
||||||
public:
|
public:
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@
|
||||||
using json = nlohmann::ordered_json;
|
using json = nlohmann::ordered_json;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
// use this traits everytime you construct an arrangment!
|
// use this traits every time you construct an arrangement!
|
||||||
static Geom_traits s_traits;
|
static Geom_traits s_traits;
|
||||||
|
|
||||||
// Extended DCEL & Arrangement
|
// Extended DCEL & Arrangement
|
||||||
|
|
@ -726,7 +726,7 @@ void Aos::save_arr(Kml::Placemarks& placemarks, const std::string& file_name) {
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////
|
||||||
// CURVES
|
// CURVES
|
||||||
// define a map from each curve to its position in the arrangment
|
// define a map from each curve to its position in the arrangement
|
||||||
auto& js_curves = js["curves"] = json::array();
|
auto& js_curves = js["curves"] = json::array();
|
||||||
using Ext_curve = Ext_aos::X_monotone_curve_2;
|
using Ext_curve = Ext_aos::X_monotone_curve_2;
|
||||||
std::map<Ext_curve*, std::size_t> curve_pos_map;
|
std::map<Ext_curve*, std::size_t> curve_pos_map;
|
||||||
|
|
@ -909,7 +909,7 @@ void Aos::save_arr(Kml::Placemarks& placemarks, const std::string& file_name) {
|
||||||
}
|
}
|
||||||
std::cout << "total num half-edges = " << total_num_half_edges << std::endl;
|
std::cout << "total num half-edges = " << total_num_half_edges << std::endl;
|
||||||
|
|
||||||
// save the arrangment
|
// save the arrangement
|
||||||
std::ofstream ofile(file_name);
|
std::ofstream ofile(file_name);
|
||||||
ofile << js.dump(2);
|
ofile << js.dump(2);
|
||||||
ofile.close();
|
ofile.close();
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ using json = nlohmann::ordered_json;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
// use this traits everytime you construct an arrangment!
|
// use this traits every time you construct an arrangement!
|
||||||
static Geom_traits s_traits;
|
static Geom_traits s_traits;
|
||||||
using Dir3 = Kernel::Direction_3;
|
using Dir3 = Kernel::Direction_3;
|
||||||
using Approximate_number_type = Geom_traits::Approximate_number_type;
|
using Approximate_number_type = Geom_traits::Approximate_number_type;
|
||||||
|
|
@ -71,7 +71,7 @@ std::vector<QVector3D> Aos_triangulator::get_all(Aos::Arr_handle arrh) {
|
||||||
// COMPUTE THE CENTROID OF ALL FACE-POINTS
|
// COMPUTE THE CENTROID OF ALL FACE-POINTS
|
||||||
std::vector<QVector3D> face_points;
|
std::vector<QVector3D> face_points;
|
||||||
|
|
||||||
// loop on the egdes of the current outer-ccb
|
// loop on the edges of the current outer-ccb
|
||||||
auto first = fh->outer_ccb();
|
auto first = fh->outer_ccb();
|
||||||
auto curr = first;
|
auto curr = first;
|
||||||
do {
|
do {
|
||||||
|
|
@ -225,7 +225,7 @@ Aos_triangulator::get_by_country(Aos::Arr_handle arrh, float error,
|
||||||
if (0 == fh->number_of_outer_ccbs()) continue;
|
if (0 == fh->number_of_outer_ccbs()) continue;
|
||||||
|
|
||||||
std::vector<QVector3D> face_points;
|
std::vector<QVector3D> face_points;
|
||||||
// Loop on the egdes of the current outer-ccb
|
// Loop on the edges of the current outer-ccb
|
||||||
auto first = fh->outer_ccb();
|
auto first = fh->outer_ccb();
|
||||||
auto curr = first;
|
auto curr = first;
|
||||||
do {
|
do {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# This is the CMake script for compiling a CGAL application.
|
# This is the CMake script for compiling a CGAL application.
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(Arrangement_on_surface_2_earth_Demo)
|
project(Arrangement_on_surface_2_earth_Demo)
|
||||||
|
|
||||||
if(NOT POLICY CMP0070 AND POLICY CMP0053)
|
if(NOT POLICY CMP0070 AND POLICY CMP0053)
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ protected:
|
||||||
// This is called when the required approximation of the arcs is below the
|
// This is called when the required approximation of the arcs is below the
|
||||||
// currently required one defined by the zoom level and window size. If you
|
// currently required one defined by the zoom level and window size. If you
|
||||||
// zoom-in or increase the window-size this can be called. But once a minimum
|
// zoom-in or increase the window-size this can be called. But once a minimum
|
||||||
// approximation error is needed, it will stay there until futher change.
|
// approximation error is needed, it will stay there until further change.
|
||||||
// SEE the definition of "m_current_approx_error" member variable below!
|
// SEE the definition of "m_current_approx_error" member variable below!
|
||||||
float compute_backprojected_error(float pixel_error);
|
float compute_backprojected_error(float pixel_error);
|
||||||
|
|
||||||
|
|
@ -124,7 +124,7 @@ private:
|
||||||
// After zooming in or making the viewport larger, the approximation-error
|
// After zooming in or making the viewport larger, the approximation-error
|
||||||
// needs to be updated and checked against the old value. If a lower approxi-
|
// needs to be updated and checked against the old value. If a lower approxi-
|
||||||
// mation error is needed the necessary graphics-side updates need to be made
|
// mation error is needed the necessary graphics-side updates need to be made
|
||||||
// INSIDE the paintGL (or whereever the OpenGL context is active)!
|
// INSIDE the paintGL (or wherever the OpenGL context is active)!
|
||||||
bool m_update_approx_error = false;
|
bool m_update_approx_error = false;
|
||||||
float m_current_approx_error;
|
float m_current_approx_error;
|
||||||
std::size_t m_num_uniform_points;
|
std::size_t m_num_uniform_points;
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,7 @@ protected:
|
||||||
// This is called when the required approximation of the arcs is below the
|
// This is called when the required approximation of the arcs is below the
|
||||||
// currently required one defined by the zoom level and window size. If you
|
// currently required one defined by the zoom level and window size. If you
|
||||||
// zoom-in or increase the window-size this can be called. But once a minimum
|
// zoom-in or increase the window-size this can be called. But once a minimum
|
||||||
// approximation error is needed, it will stay there until futher change.
|
// approximation error is needed, it will stay there until further change.
|
||||||
// SEE the definition of "m_current_approx_error" member variable below!
|
// SEE the definition of "m_current_approx_error" member variable below!
|
||||||
float compute_backprojected_error(float pixel_error);
|
float compute_backprojected_error(float pixel_error);
|
||||||
|
|
||||||
|
|
@ -139,7 +139,7 @@ private:
|
||||||
// After zooming in or making the viewport larger, the approximation-error
|
// After zooming in or making the viewport larger, the approximation-error
|
||||||
// needs to be updated and checked against the old value. If a lower approxi-
|
// needs to be updated and checked against the old value. If a lower approxi-
|
||||||
// mation error is needed the necessary graphics-side updates need to be made
|
// mation error is needed the necessary graphics-side updates need to be made
|
||||||
// INSIDE the paintGL (or whereever the OpenGL context is active)!
|
// INSIDE the paintGL (or wherever the OpenGL context is active)!
|
||||||
bool m_update_approx_error = false;
|
bool m_update_approx_error = false;
|
||||||
float m_current_approx_error;
|
float m_current_approx_error;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
class Verification {
|
class Verification {
|
||||||
public:
|
public:
|
||||||
// Use this to find the approximate of the true minimum projected error.
|
// Use this to find the approximate of the true minimum projected error.
|
||||||
// we are ot using this complicated method, but provide it for completeness.
|
// we are not using this complicated method, but provide it for completeness.
|
||||||
static void find_minimum_projected_error_on_sphere(float we, Camera& cam,
|
static void find_minimum_projected_error_on_sphere(float we, Camera& cam,
|
||||||
int vp_width,
|
int vp_width,
|
||||||
int vp_height);
|
int vp_height);
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ namespace CGAL {
|
||||||
* The \dcel class used by the `Arrangement_2`,
|
* The \dcel class used by the `Arrangement_2`,
|
||||||
* `Arr_bounded_planar_topology_traits_2`, `Arr_unb_planar_topology_traits_2`
|
* `Arr_bounded_planar_topology_traits_2`, `Arr_unb_planar_topology_traits_2`
|
||||||
* class templates and other templates. It is parameterized by a geometry
|
* class templates and other templates. It is parameterized by a geometry
|
||||||
* traits type and optionaly by a vertex, halfedge, or face types. By default,
|
* traits type and optionally by a vertex, halfedge, or face types. By default,
|
||||||
* the `Arr_dcel` class template uses the \link
|
* the `Arr_dcel` class template uses the \link
|
||||||
* ArrangementBasicTraits_2::Point_2 `Point_2`\endlink and \link
|
* ArrangementBasicTraits_2::Point_2 `Point_2`\endlink and \link
|
||||||
* ArrangementBasicTraits_2::X_monotone_curve_2 `X_monotone_curve_2`\endlink
|
* ArrangementBasicTraits_2::X_monotone_curve_2 `X_monotone_curve_2`\endlink
|
||||||
|
|
@ -13,7 +13,7 @@ namespace CGAL {
|
||||||
* types, respectively. Thus, by default the \dcel only stores the topological
|
* types, respectively. Thus, by default the \dcel only stores the topological
|
||||||
* incidence relations and the geometric data attached to vertices and
|
* incidence relations and the geometric data attached to vertices and
|
||||||
* edges. Any one of the vertex, halfedge, or face types can be
|
* edges. Any one of the vertex, halfedge, or face types can be
|
||||||
* overriden. Notice that if the vertex and halfedge types are overriden, the
|
* overridden. Notice that if the vertex and halfedge types are overridden, the
|
||||||
* traits type is ignored.
|
* traits type is ignored.
|
||||||
*
|
*
|
||||||
* \cgalModels{ArrangementDcelWithRebind}
|
* \cgalModels{ArrangementDcelWithRebind}
|
||||||
|
|
|
||||||
|
|
@ -109,7 +109,7 @@ namespace CGAL {
|
||||||
* polycurve.
|
* polycurve.
|
||||||
*
|
*
|
||||||
* This functor constructs general polycurve. Its `operator()` is
|
* This functor constructs general polycurve. Its `operator()` is
|
||||||
* oveloaded to support various input types.
|
* overloaded to support various input types.
|
||||||
*
|
*
|
||||||
* Note that the composing subcurves, depending on the `SubcurveTraits_2`,
|
* Note that the composing subcurves, depending on the `SubcurveTraits_2`,
|
||||||
* might not be \f$x\f$-monotone.
|
* might not be \f$x\f$-monotone.
|
||||||
|
|
|
||||||
|
|
@ -209,7 +209,7 @@ public:
|
||||||
* polyline.
|
* polyline.
|
||||||
*
|
*
|
||||||
* This functor constructs general polylines. Its `operator()` is
|
* This functor constructs general polylines. Its `operator()` is
|
||||||
* oveloaded to support various input types.
|
* overloaded to support various input types.
|
||||||
*
|
*
|
||||||
* Note that the composing segments, depending on the `SegmentTraits_2`,
|
* Note that the composing segments, depending on the `SegmentTraits_2`,
|
||||||
* might not be \f$x\f$-monotone.
|
* might not be \f$x\f$-monotone.
|
||||||
|
|
|
||||||
|
|
@ -118,7 +118,7 @@ public:
|
||||||
void cleanup_cache() const;
|
void cleanup_cache() const;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns a pointer to the used algerbaic kernel object.
|
Returns a pointer to the used algebraic kernel object.
|
||||||
*/
|
*/
|
||||||
const Algebraic_kernel_d_1* algebraic_kernel_d_1() const;
|
const Algebraic_kernel_d_1* algebraic_kernel_d_1() const;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Created by the script cgal_create_cmake_script
|
# Created by the script cgal_create_cmake_script
|
||||||
# This is the CMake script for compiling a CGAL application.
|
# This is the CMake script for compiling a CGAL application.
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(Arrangement_on_surface_2_Examples)
|
project(Arrangement_on_surface_2_Examples)
|
||||||
|
|
||||||
find_package(CGAL REQUIRED COMPONENTS Core OPTIONAL_COMPONENTS Qt6)
|
find_package(CGAL REQUIRED COMPONENTS Core OPTIONAL_COMPONENTS Qt6)
|
||||||
|
|
|
||||||
|
|
@ -519,12 +519,12 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual void after_move_isolated_vertex(Vertex_handle /* v */) {}
|
virtual void after_move_isolated_vertex(Vertex_handle /* v */) {}
|
||||||
|
|
||||||
/*! Notificaion before the removal of a vertex.
|
/*! Notification before the removal of a vertex.
|
||||||
* \param v A handle to the vertex to be deleted.
|
* \param v A handle to the vertex to be deleted.
|
||||||
*/
|
*/
|
||||||
virtual void before_remove_vertex(Vertex_handle /* v */) {}
|
virtual void before_remove_vertex(Vertex_handle /* v */) {}
|
||||||
|
|
||||||
/*! Notificaion after the removal of a vertex. */
|
/*! Notification after the removal of a vertex. */
|
||||||
virtual void after_remove_vertex() {}
|
virtual void after_remove_vertex() {}
|
||||||
|
|
||||||
/*! Notification before the removal of an edge.
|
/*! Notification before the removal of an edge.
|
||||||
|
|
@ -532,7 +532,7 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual void before_remove_edge(Halfedge_handle /* e */) {}
|
virtual void before_remove_edge(Halfedge_handle /* e */) {}
|
||||||
|
|
||||||
/*! Notificaion after the removal of an edge. */
|
/*! Notification after the removal of an edge. */
|
||||||
virtual void after_remove_edge() {}
|
virtual void after_remove_edge() {}
|
||||||
|
|
||||||
/*! Notification before the removal of an outer CCB.
|
/*! Notification before the removal of an outer CCB.
|
||||||
|
|
@ -543,7 +543,7 @@ public:
|
||||||
Ccb_halfedge_circulator /* h */)
|
Ccb_halfedge_circulator /* h */)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
/*! Notificaion after the removal of an outer CCB.
|
/*! Notification after the removal of an outer CCB.
|
||||||
* \param f The face that used to own the outer CCB.
|
* \param f The face that used to own the outer CCB.
|
||||||
*/
|
*/
|
||||||
virtual void after_remove_outer_ccb(Face_handle /* f */) {}
|
virtual void after_remove_outer_ccb(Face_handle /* f */) {}
|
||||||
|
|
@ -556,7 +556,7 @@ public:
|
||||||
Ccb_halfedge_circulator /* h */)
|
Ccb_halfedge_circulator /* h */)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
/*! Notificaion after the removal of an inner CCB.
|
/*! Notification after the removal of an inner CCB.
|
||||||
* \param f The face that used to contain the inner CCB.
|
* \param f The face that used to contain the inner CCB.
|
||||||
*/
|
*/
|
||||||
virtual void after_remove_inner_ccb(Face_handle /* f */) {}
|
virtual void after_remove_inner_ccb(Face_handle /* f */) {}
|
||||||
|
|
|
||||||
|
|
@ -1107,7 +1107,7 @@ public:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Intersect the supporing conic curves of this arc and the given arc.
|
/*! Intersect the supporting conic curves of this arc and the given arc.
|
||||||
* \param arc The arc to intersect with.
|
* \param arc The arc to intersect with.
|
||||||
* \param inter_list The list of intersection points.
|
* \param inter_list The list of intersection points.
|
||||||
*/
|
*/
|
||||||
|
|
@ -1133,7 +1133,7 @@ public:
|
||||||
if (xcv2.is_special_segment()) {
|
if (xcv2.is_special_segment()) {
|
||||||
// The second arc is a special segment (a*x + b*y + c = 0).
|
// The second arc is a special segment (a*x + b*y + c = 0).
|
||||||
if (xcv1.is_special_segment()) {
|
if (xcv1.is_special_segment()) {
|
||||||
// Both arc are sepcial segment, so they have at most one intersection
|
// Both arc are special segments, so they have at most one intersection
|
||||||
// point.
|
// point.
|
||||||
const auto* extra_data1 = xcv1.extra_data();
|
const auto* extra_data1 = xcv1.extra_data();
|
||||||
const auto* extra_data2 = xcv2.extra_data();
|
const auto* extra_data2 = xcv2.extra_data();
|
||||||
|
|
@ -1724,7 +1724,7 @@ public:
|
||||||
* r·𝑥^2 + s·𝑦^2 + t·𝑥·𝑦 + u·𝑥 + v·𝑦 + w = 0
|
* r·𝑥^2 + s·𝑦^2 + t·𝑥·𝑦 + u·𝑥 + v·𝑦 + w = 0
|
||||||
* where 4·r·s−t^2 > 0
|
* where 4·r·s−t^2 > 0
|
||||||
* We eliminate t so that the x·y term vanishes, applying an inverse
|
* We eliminate t so that the x·y term vanishes, applying an inverse
|
||||||
* rotation. Then, we compute the radi and the center. Finaly, we rotate
|
* rotation. Then, we compute the radi and the center. Finally, we rotate
|
||||||
* back. The angle of rotation is given by:
|
* back. The angle of rotation is given by:
|
||||||
* 𝑡𝑎𝑛(2𝜃) = 𝐵 / (𝐴−𝐶)
|
* 𝑡𝑎𝑛(2𝜃) = 𝐵 / (𝐴−𝐶)
|
||||||
* Then
|
* Then
|
||||||
|
|
@ -2260,7 +2260,7 @@ public:
|
||||||
const Rational& u, const Rational& v, const Rational& w,
|
const Rational& u, const Rational& v, const Rational& w,
|
||||||
Orientation orient,
|
Orientation orient,
|
||||||
const Point_2& source, const Point_2& target) const {
|
const Point_2& source, const Point_2& target) const {
|
||||||
// Make sure that the source and the taget are not the same.
|
// Make sure that the source and the target are not the same.
|
||||||
const auto alg_kernel = m_traits.m_alg_kernel;
|
const auto alg_kernel = m_traits.m_alg_kernel;
|
||||||
CGAL_precondition_code(auto eq = alg_kernel->compare_xy_2_object());
|
CGAL_precondition_code(auto eq = alg_kernel->compare_xy_2_object());
|
||||||
CGAL_precondition(eq(source, target) != EQUAL);
|
CGAL_precondition(eq(source, target) != EQUAL);
|
||||||
|
|
@ -2297,7 +2297,7 @@ public:
|
||||||
Point_2 target(nt_traits->convert(x3), nt_traits->convert(y3));
|
Point_2 target(nt_traits->convert(x3), nt_traits->convert(y3));
|
||||||
arc.set_endpoints(source, target);
|
arc.set_endpoints(source, target);
|
||||||
|
|
||||||
// Make sure that the source and the taget are not the same.
|
// Make sure that the source and the target are not the same.
|
||||||
CGAL_precondition_code(auto cmp_xy = alg_kernel->compare_xy_2_object());
|
CGAL_precondition_code(auto cmp_xy = alg_kernel->compare_xy_2_object());
|
||||||
CGAL_precondition(cmp_xy(source, target) != EQUAL);
|
CGAL_precondition(cmp_xy(source, target) != EQUAL);
|
||||||
|
|
||||||
|
|
@ -2324,7 +2324,7 @@ public:
|
||||||
const bool points_collinear = (CGAL::sign(D) == ZERO);
|
const bool points_collinear = (CGAL::sign(D) == ZERO);
|
||||||
|
|
||||||
if (points_collinear) {
|
if (points_collinear) {
|
||||||
arc.reset_flags(); // inavlid arc
|
arc.reset_flags(); // invalid arc
|
||||||
return arc;
|
return arc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2381,7 +2381,7 @@ public:
|
||||||
orient_f(p3, p4, p5) == COLLINEAR);
|
orient_f(p3, p4, p5) == COLLINEAR);
|
||||||
|
|
||||||
if (point_collinear) {
|
if (point_collinear) {
|
||||||
arc.reset_flags(); // inavlid arc
|
arc.reset_flags(); // invalid arc
|
||||||
return arc;
|
return arc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2439,7 +2439,7 @@ public:
|
||||||
! m_traits.is_strictly_between_endpoints(arc, mp3) ||
|
! m_traits.is_strictly_between_endpoints(arc, mp3) ||
|
||||||
! m_traits.is_strictly_between_endpoints(arc, mp4))
|
! m_traits.is_strictly_between_endpoints(arc, mp4))
|
||||||
{
|
{
|
||||||
arc.reset_flags(); // inavlid arc
|
arc.reset_flags(); // invalid arc
|
||||||
return arc;
|
return arc;
|
||||||
}
|
}
|
||||||
return arc;
|
return arc;
|
||||||
|
|
@ -2589,7 +2589,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! found) {
|
if (! found) {
|
||||||
arc.reset_flags(); // inavlid arc
|
arc.reset_flags(); // invalid arc
|
||||||
return arc;
|
return arc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -2597,7 +2597,7 @@ public:
|
||||||
// Make sure that the source and the target are not the same.
|
// Make sure that the source and the target are not the same.
|
||||||
auto cmp_xy = m_traits.m_alg_kernel->compare_xy_2_object();
|
auto cmp_xy = m_traits.m_alg_kernel->compare_xy_2_object();
|
||||||
if (cmp_xy(arc.source(), arc.target()) == EQUAL) {
|
if (cmp_xy(arc.source(), arc.target()) == EQUAL) {
|
||||||
arc.reset_flags(); // inavlid arc
|
arc.reset_flags(); // invalid arc
|
||||||
return arc;
|
return arc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2646,7 +2646,7 @@ public:
|
||||||
cv.set_source(Point_2(nt_traits->convert(x1), nt_traits->convert(y1)));
|
cv.set_source(Point_2(nt_traits->convert(x1), nt_traits->convert(y1)));
|
||||||
cv.set_target(Point_2(nt_traits->convert(x2), nt_traits->convert(y2)));
|
cv.set_target(Point_2(nt_traits->convert(x2), nt_traits->convert(y2)));
|
||||||
|
|
||||||
// Make sure that the source and the taget are not the same.
|
// Make sure that the source and the target are not the same.
|
||||||
CGAL_precondition_code(auto cmp_xy = rat_kernel->compare_xy_2_object());
|
CGAL_precondition_code(auto cmp_xy = rat_kernel->compare_xy_2_object());
|
||||||
CGAL_precondition(cmp_xy(source, target) != EQUAL);
|
CGAL_precondition(cmp_xy(source, target) != EQUAL);
|
||||||
|
|
||||||
|
|
@ -2695,7 +2695,7 @@ public:
|
||||||
Rational y0 = center.y();
|
Rational y0 = center.y();
|
||||||
Rational r_sqr = rat_kernel->compute_squared_radius_2_object()(circ);
|
Rational r_sqr = rat_kernel->compute_squared_radius_2_object()(circ);
|
||||||
|
|
||||||
// Produce the correponding conic: if the circle center is (x0,y0)
|
// Produce the corresponding conic: if the circle center is (x0,y0)
|
||||||
// and its squared radius is R^2, that its equation is:
|
// and its squared radius is R^2, that its equation is:
|
||||||
// x^2 + y^2 - 2*x0*x - 2*y0*y + (x0^2 + y0^2 - R^2) = 0
|
// x^2 + y^2 - 2*x0*x - 2*y0*y + (x0^2 + y0^2 - R^2) = 0
|
||||||
// Note that this equation describes a curve with a negative (clockwise)
|
// Note that this equation describes a curve with a negative (clockwise)
|
||||||
|
|
@ -2726,7 +2726,7 @@ public:
|
||||||
*/
|
*/
|
||||||
Curve_2 operator()(const Rat_circle_2& circ, Orientation orient,
|
Curve_2 operator()(const Rat_circle_2& circ, Orientation orient,
|
||||||
const Point_2& source, const Point_2& target) const {
|
const Point_2& source, const Point_2& target) const {
|
||||||
// Make sure that the source and the taget are not the same.
|
// Make sure that the source and the target are not the same.
|
||||||
CGAL_precondition_code(auto cmp_xy =
|
CGAL_precondition_code(auto cmp_xy =
|
||||||
m_traits.m_alg_kernel->compare_xy_2_object());
|
m_traits.m_alg_kernel->compare_xy_2_object());
|
||||||
CGAL_precondition(cmp_xy(source, target) != EQUAL);
|
CGAL_precondition(cmp_xy(source, target) != EQUAL);
|
||||||
|
|
@ -2743,7 +2743,7 @@ public:
|
||||||
Rational y0 = center.y();
|
Rational y0 = center.y();
|
||||||
Rational r_sqr = rat_kernel->compute_squared_radius_2_object()(circ);
|
Rational r_sqr = rat_kernel->compute_squared_radius_2_object()(circ);
|
||||||
|
|
||||||
// Produce the correponding conic: if the circle center is (x0,y0)
|
// Produce the corresponding conic: if the circle center is (x0,y0)
|
||||||
// and it squared radius is R^2, that its equation is:
|
// and it squared radius is R^2, that its equation is:
|
||||||
// x^2 + y^2 - 2*x0*x - 2*y0*y + (x0^2 + y0^2 - R^2) = 0
|
// x^2 + y^2 - 2*x0*x - 2*y0*y + (x0^2 + y0^2 - R^2) = 0
|
||||||
// Since this equation describes a curve with a negative (clockwise)
|
// Since this equation describes a curve with a negative (clockwise)
|
||||||
|
|
@ -2853,7 +2853,7 @@ public:
|
||||||
m_traits.compare_y_at_x_2_object());
|
m_traits.compare_y_at_x_2_object());
|
||||||
CGAL_precondition_code(Equal_2 equal_2 = m_traits.equal_2_object());
|
CGAL_precondition_code(Equal_2 equal_2 = m_traits.equal_2_object());
|
||||||
Compare_x_2 compare_x_2 = m_traits.compare_x_2_object();
|
Compare_x_2 compare_x_2 = m_traits.compare_x_2_object();
|
||||||
// Check whether source and taget are two distinct points and they lie
|
// Check whether source and target are two distinct points and they lie
|
||||||
// on the line.
|
// on the line.
|
||||||
CGAL_precondition(compare_y_at_x_2(src, xcv) == EQUAL);
|
CGAL_precondition(compare_y_at_x_2(src, xcv) == EQUAL);
|
||||||
CGAL_precondition(compare_y_at_x_2(tgt, xcv) == EQUAL);
|
CGAL_precondition(compare_y_at_x_2(tgt, xcv) == EQUAL);
|
||||||
|
|
@ -2983,7 +2983,7 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Use the source and target to initialize the exterme points.
|
// Use the source and target to initialize the extreme points.
|
||||||
bool source_left =
|
bool source_left =
|
||||||
CGAL::to_double(xcv.source().x()) < CGAL::to_double(xcv.target().x());
|
CGAL::to_double(xcv.source().x()) < CGAL::to_double(xcv.target().x());
|
||||||
x_min = (source_left) ?
|
x_min = (source_left) ?
|
||||||
|
|
@ -3077,7 +3077,7 @@ public:
|
||||||
if (! is_on_supporting_conic(cv, source) ||
|
if (! is_on_supporting_conic(cv, source) ||
|
||||||
! is_on_supporting_conic(cv, target))
|
! is_on_supporting_conic(cv, target))
|
||||||
{
|
{
|
||||||
cv.reset_flags(); // inavlid arc
|
cv.reset_flags(); // invalid arc
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3098,7 +3098,7 @@ public:
|
||||||
m_nt_traits->convert(v)) * p_mid.y() +
|
m_nt_traits->convert(v)) * p_mid.y() +
|
||||||
m_nt_traits->convert(w)) != ZERO)
|
m_nt_traits->convert(w)) != ZERO)
|
||||||
{
|
{
|
||||||
cv.reset_flags(); // inavlid arc
|
cv.reset_flags(); // invalid arc
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3109,7 +3109,7 @@ public:
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// The sign of (4rs - t^2) detetmines the conic type:
|
// The sign of (4rs - t^2) detetmines the conic type:
|
||||||
// - if it is possitive, the conic is an ellipse,
|
// - if it is positive, the conic is an ellipse,
|
||||||
// - if it is negative, the conic is a hyperbola,
|
// - if it is negative, the conic is a hyperbola,
|
||||||
// - if it is zero, the conic is a parabola.
|
// - if it is zero, the conic is a parabola.
|
||||||
CGAL::Sign sign_conic = CGAL::sign(4*r*s - t*t);
|
CGAL::Sign sign_conic = CGAL::sign(4*r*s - t*t);
|
||||||
|
|
@ -3126,7 +3126,7 @@ public:
|
||||||
bool finite_at_x = (points_at_x(cv, p_mid, ps) > 0);
|
bool finite_at_x = (points_at_x(cv, p_mid, ps) > 0);
|
||||||
bool finite_at_y = (points_at_y(cv, p_mid, ps) > 0);
|
bool finite_at_y = (points_at_y(cv, p_mid, ps) > 0);
|
||||||
if (! finite_at_x && ! finite_at_y) {
|
if (! finite_at_x && ! finite_at_y) {
|
||||||
cv.reset_flags(); // inavlid arc
|
cv.reset_flags(); // invalid arc
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -3192,7 +3192,7 @@ public:
|
||||||
cv.set_flag(Curve_2::IS_VALID);
|
cv.set_flag(Curve_2::IS_VALID);
|
||||||
cv.set_flag(Curve_2::IS_FULL_CONIC);
|
cv.set_flag(Curve_2::IS_FULL_CONIC);
|
||||||
}
|
}
|
||||||
else cv.reset_flags(); // inavlid arc
|
else cv.reset_flags(); // invalid arc
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Check whether the given point lies on the supporting conic of the arc.
|
/*! Check whether the given point lies on the supporting conic of the arc.
|
||||||
|
|
@ -3300,7 +3300,7 @@ public:
|
||||||
return (orient_f(source, p, target) == RIGHT_TURN);
|
return (orient_f(source, p, target) == RIGHT_TURN);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Build the data for hyperbolic arc, contaning the characterization of the
|
/*! Build the data for hyperbolic arc, containing the characterization of the
|
||||||
* hyperbolic branch the arc is placed on.
|
* hyperbolic branch the arc is placed on.
|
||||||
*/
|
*/
|
||||||
void build_hyperbolic_arc_data(Curve_2& cv) const {
|
void build_hyperbolic_arc_data(Curve_2& cv) const {
|
||||||
|
|
@ -3680,7 +3680,7 @@ public:
|
||||||
|
|
||||||
// Check whether the conic is facing up or facing down:
|
// Check whether the conic is facing up or facing down:
|
||||||
// Check whether the arc (which is x-monotone of degree 2) lies above or
|
// Check whether the arc (which is x-monotone of degree 2) lies above or
|
||||||
// below the segement that connects its two end-points (x1,y1) and (x2,y2).
|
// below the segment that connects its two end-points (x1,y1) and (x2,y2).
|
||||||
// To do that, we find the y coordinate of a point on the arc whose x
|
// To do that, we find the y coordinate of a point on the arc whose x
|
||||||
// coordinate is (x1+x2)/2 and compare it to (y1+y2)/2.
|
// coordinate is (x1+x2)/2 and compare it to (y1+y2)/2.
|
||||||
auto cmp_y = m_alg_kernel->compare_y_2_object();
|
auto cmp_y = m_alg_kernel->compare_y_2_object();
|
||||||
|
|
@ -3753,7 +3753,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Check whether the given point lies on the arc.
|
/*! Check whether the given point lies on the arc.
|
||||||
* \param p The qury point.
|
* \param p The query point.
|
||||||
* \param (true) if p lies on the arc; (false) otherwise.
|
* \param (true) if p lies on the arc; (false) otherwise.
|
||||||
*/
|
*/
|
||||||
bool contains_point(const X_monotone_curve_2& xcv, const Point_2& p) const {
|
bool contains_point(const X_monotone_curve_2& xcv, const Point_2& p) const {
|
||||||
|
|
@ -3778,7 +3778,7 @@ public:
|
||||||
return is_between_endpoints(xcv, p);
|
return is_between_endpoints(xcv, p);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Find the vertical tangency points of the undelying conic.
|
/*! Find the vertical tangency points of the underlying conic.
|
||||||
* \param ps The output points of vertical tangency.
|
* \param ps The output points of vertical tangency.
|
||||||
* This area must be allocated at the size of 2.
|
* This area must be allocated at the size of 2.
|
||||||
* \return The number of vertical tangency points.
|
* \return The number of vertical tangency points.
|
||||||
|
|
@ -3876,7 +3876,7 @@ public:
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Find the horizontal tangency points of the undelying conic.
|
/*! Find the horizontal tangency points of the underlying conic.
|
||||||
* \param ps The output points of horizontal tangency.
|
* \param ps The output points of horizontal tangency.
|
||||||
* This area must be allocated at the size of 2.
|
* This area must be allocated at the size of 2.
|
||||||
* \return The number of horizontal tangency points.
|
* \return The number of horizontal tangency points.
|
||||||
|
|
|
||||||
|
|
@ -79,10 +79,10 @@ public:
|
||||||
typedef typename internal::Arr_complete_right_side_category<Base_traits_2>::
|
typedef typename internal::Arr_complete_right_side_category<Base_traits_2>::
|
||||||
Category Right_side_category;
|
Category Right_side_category;
|
||||||
|
|
||||||
// Representation of a curve with an additonal data field:
|
// Representation of a curve with an additional data field:
|
||||||
typedef _Curve_data_ex<Base_curve_2, Curve_data> Curve_2;
|
typedef _Curve_data_ex<Base_curve_2, Curve_data> Curve_2;
|
||||||
|
|
||||||
// Representation of an x-monotone curve with an additonal data field:
|
// Representation of an x-monotone curve with an additional data field:
|
||||||
typedef _Curve_data_ex<Base_x_monotone_curve_2, X_monotone_curve_data>
|
typedef _Curve_data_ex<Base_x_monotone_curve_2, X_monotone_curve_data>
|
||||||
X_monotone_curve_2;
|
X_monotone_curve_2;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@
|
||||||
* The partition traits class for geodesic arcs on the sphere enables
|
* The partition traits class for geodesic arcs on the sphere enables
|
||||||
* the partition of geodesic polygons to convex polygons. It models the
|
* the partition of geodesic polygons to convex polygons. It models the
|
||||||
* concept YMonotonePartitionTraits_2.
|
* concept YMonotonePartitionTraits_2.
|
||||||
* This partition of geodesic polygons is garenteed to work only for polygons
|
* This partition of geodesic polygons is guaranteed to work only for polygons
|
||||||
* that are contained in a hemisphere and that do not intersect one of the
|
* that are contained in a hemisphere and that do not intersect one of the
|
||||||
* boundaries.
|
* boundaries.
|
||||||
* For larger polygons there is a chance that at least one steiner point may
|
* For larger polygons there is a chance that at least one steiner point may
|
||||||
|
|
@ -329,7 +329,7 @@ public:
|
||||||
* The partition traits class for geodesic arcs on the sphere enables
|
* The partition traits class for geodesic arcs on the sphere enables
|
||||||
* the partition of geodesic polygons to convex polygons. It models the
|
* the partition of geodesic polygons to convex polygons. It models the
|
||||||
* concept YMonotonePartitionTraits_2.
|
* concept YMonotonePartitionTraits_2.
|
||||||
* This partition of geodesic polygons is garenteed to work only for polygons
|
* This partition of geodesic polygons is guaranteed to work only for polygons
|
||||||
* that are contained in a hemisphere and that do not intersect one of the
|
* that are contained in a hemisphere and that do not intersect one of the
|
||||||
* boundaries.
|
* boundaries.
|
||||||
* For larger polygons there is a chance that at least one steiner point may
|
* For larger polygons there is a chance that at least one steiner point may
|
||||||
|
|
|
||||||
|
|
@ -641,8 +641,7 @@ public:
|
||||||
* \param[in] plane the containing plane.
|
* \param[in] plane the containing plane.
|
||||||
* \param[in] source the source-point direction.
|
* \param[in] source the source-point direction.
|
||||||
* \param[in] target the target-point direction.
|
* \param[in] target the target-point direction.
|
||||||
* \pre Both endpoint lie on the given plane.
|
* \pre Both endpoints lie on the given plane.
|
||||||
* \pre Both endpoint lie on the given plane.
|
|
||||||
*/
|
*/
|
||||||
X_monotone_curve_2 operator()(const Point_2& source, const Point_2& target,
|
X_monotone_curve_2 operator()(const Point_2& source, const Point_2& target,
|
||||||
const Direction_3& normal) const
|
const Direction_3& normal) const
|
||||||
|
|
@ -3113,7 +3112,7 @@ public:
|
||||||
* \param is_directed_right is the arc directed from left to right?
|
* \param is_directed_right is the arc directed from left to right?
|
||||||
* \param is_full is the arc a full circle?
|
* \param is_full is the arc a full circle?
|
||||||
* \param is_degenerate is the arc degenerate (single point)?
|
* \param is_degenerate is the arc degenerate (single point)?
|
||||||
* \pre Both endpoint lie on the given plane.
|
* \pre Both endpoints lie on the given plane.
|
||||||
*/
|
*/
|
||||||
Arr_x_monotone_geodesic_arc_on_sphere_3
|
Arr_x_monotone_geodesic_arc_on_sphere_3
|
||||||
(const Arr_extended_direction_3& src,
|
(const Arr_extended_direction_3& src,
|
||||||
|
|
@ -3312,8 +3311,7 @@ public:
|
||||||
* \param plane the containing plane.
|
* \param plane the containing plane.
|
||||||
* \param source the source-point direction.
|
* \param source the source-point direction.
|
||||||
* \param target the target-point direction.
|
* \param target the target-point direction.
|
||||||
* \pre Both endpoint lie on the given plane.
|
* \pre Both endpoints lie on the given plane.
|
||||||
* \pre Both endpoint lie on the given plane.
|
|
||||||
*/
|
*/
|
||||||
Arr_x_monotone_geodesic_arc_on_sphere_3
|
Arr_x_monotone_geodesic_arc_on_sphere_3
|
||||||
(const Arr_extended_direction_3& source,
|
(const Arr_extended_direction_3& source,
|
||||||
|
|
|
||||||
|
|
@ -588,7 +588,7 @@ bool _Bezier_cache<NtTraits>::_intersection_params
|
||||||
Integer coeff;
|
Integer coeff;
|
||||||
int k;
|
int k;
|
||||||
|
|
||||||
// Consruct the bivariate polynomial that corresponds to Equation I.
|
// Construct the bivariate polynomial that corresponds to Equation I.
|
||||||
// Note that we represent a bivariate polynomial as a vector of univariate
|
// Note that we represent a bivariate polynomial as a vector of univariate
|
||||||
// polynomials, whose i'th entry corresponds to the coefficient of t^i,
|
// polynomials, whose i'th entry corresponds to the coefficient of t^i,
|
||||||
// which is in turn a polynomial it s.
|
// which is in turn a polynomial it s.
|
||||||
|
|
@ -602,7 +602,7 @@ bool _Bezier_cache<NtTraits>::_intersection_params
|
||||||
}
|
}
|
||||||
coeffsX_st[0] = coeffsX_st[0] - nt_traits.scale (polyX_1, normX_2);
|
coeffsX_st[0] = coeffsX_st[0] - nt_traits.scale (polyX_1, normX_2);
|
||||||
|
|
||||||
// Consruct the bivariate polynomial that corresponds to Equation II.
|
// Construct the bivariate polynomial that corresponds to Equation II.
|
||||||
const int degY_2 = nt_traits.degree (polyY_2);
|
const int degY_2 = nt_traits.degree (polyY_2);
|
||||||
std::vector<Polynomial> coeffsY_st (degY_2 < 0 ? 1 : (degY_2 + 1));
|
std::vector<Polynomial> coeffsY_st (degY_2 < 0 ? 1 : (degY_2 + 1));
|
||||||
|
|
||||||
|
|
@ -655,7 +655,7 @@ void _Bezier_cache<NtTraits>::_self_intersection_params
|
||||||
Integer *coeffs;
|
Integer *coeffs;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
// Consruct the bivariate polynomial that corresponds to Equation I.
|
// Construct the bivariate polynomial that corresponds to Equation I.
|
||||||
// Note that we represent a bivariate polynomial as a vector of univariate
|
// Note that we represent a bivariate polynomial as a vector of univariate
|
||||||
// polynomials, whose i'th entry corresponds to the coefficient of t^i,
|
// polynomials, whose i'th entry corresponds to the coefficient of t^i,
|
||||||
// which is in turn a polynomial it s.
|
// which is in turn a polynomial it s.
|
||||||
|
|
@ -675,7 +675,7 @@ void _Bezier_cache<NtTraits>::_self_intersection_params
|
||||||
|
|
||||||
delete[] coeffs;
|
delete[] coeffs;
|
||||||
|
|
||||||
// Consruct the bivariate polynomial that corresponds to Equation II.
|
// Construct the bivariate polynomial that corresponds to Equation II.
|
||||||
const int degY = nt_traits.degree (polyY);
|
const int degY = nt_traits.degree (polyY);
|
||||||
CGAL_assertion(degY > 0);
|
CGAL_assertion(degY > 0);
|
||||||
if (degY <= 0) return; //no self intersection if Y is constant
|
if (degY <= 0) return; //no self intersection if Y is constant
|
||||||
|
|
|
||||||
|
|
@ -800,7 +800,7 @@ typename _Bezier_curve_2<RatKer, AlgKer, NtTrt, BndTrt>::Rat_point_2
|
||||||
_Bezier_curve_2<RatKer, AlgKer, NtTrt, BndTrt>::operator()
|
_Bezier_curve_2<RatKer, AlgKer, NtTrt, BndTrt>::operator()
|
||||||
(const Rational& t) const
|
(const Rational& t) const
|
||||||
{
|
{
|
||||||
// Check for extermal t values (either 0 or 1).
|
// Check for external t values (either 0 or 1).
|
||||||
const CGAL::Sign sign_t = CGAL::sign (t);
|
const CGAL::Sign sign_t = CGAL::sign (t);
|
||||||
|
|
||||||
CGAL_precondition (sign_t != NEGATIVE);
|
CGAL_precondition (sign_t != NEGATIVE);
|
||||||
|
|
@ -851,7 +851,7 @@ typename _Bezier_curve_2<RatKer, AlgKer, NtTrt, BndTrt>::Alg_point_2
|
||||||
_Bezier_curve_2<RatKer, AlgKer, NtTrt, BndTrt>::operator()
|
_Bezier_curve_2<RatKer, AlgKer, NtTrt, BndTrt>::operator()
|
||||||
(const Algebraic& t) const
|
(const Algebraic& t) const
|
||||||
{
|
{
|
||||||
// Check for extermal t values (either 0 or 1).
|
// Check for external t values (either 0 or 1).
|
||||||
Nt_traits nt_traits;
|
Nt_traits nt_traits;
|
||||||
const CGAL::Sign sign_t = CGAL::sign (t);
|
const CGAL::Sign sign_t = CGAL::sign (t);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2138,7 +2138,7 @@ _intersect(const Self& cv,
|
||||||
else {
|
else {
|
||||||
// Approximate the intersection points and store them in the map.
|
// Approximate the intersection points and store them in the map.
|
||||||
// Note that we do not store approximated self-intersections in the map,
|
// Note that we do not store approximated self-intersections in the map,
|
||||||
// as they realte only to the pecific x-monotone curves, and not to the
|
// as they relate only to the specific x-monotone curves, and not to the
|
||||||
// entire curve.
|
// entire curve.
|
||||||
app_ok = _approximate_intersection_points(cv, inter_pts);
|
app_ok = _approximate_intersection_points(cv, inter_pts);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -392,7 +392,7 @@ public:
|
||||||
const bool points_collinear = (CGAL::sign(D) == ZERO);
|
const bool points_collinear = (CGAL::sign(D) == ZERO);
|
||||||
|
|
||||||
if (points_collinear) {
|
if (points_collinear) {
|
||||||
reset_flags(); // inavlid arc
|
reset_flags(); // invalid arc
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -453,7 +453,7 @@ public:
|
||||||
orient_f (p3, p4, p5) == COLLINEAR);
|
orient_f (p3, p4, p5) == COLLINEAR);
|
||||||
|
|
||||||
if (point_collinear) {
|
if (point_collinear) {
|
||||||
reset_flags(); // inavlid arc
|
reset_flags(); // invalid arc
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -511,7 +511,7 @@ public:
|
||||||
! _is_strictly_between_endpoints(mp3) ||
|
! _is_strictly_between_endpoints(mp3) ||
|
||||||
! _is_strictly_between_endpoints(mp4))
|
! _is_strictly_between_endpoints(mp4))
|
||||||
{
|
{
|
||||||
reset_flags(); // inavlid arc
|
reset_flags(); // invalid arc
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -669,14 +669,14 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! found) {
|
if (! found) {
|
||||||
reset_flags(); // inavlid arc
|
reset_flags(); // invalid arc
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure that the source and the target are not the same.
|
// Make sure that the source and the target are not the same.
|
||||||
if (Alg_kernel().compare_xy_2_object()(m_source, m_target) == EQUAL) {
|
if (Alg_kernel().compare_xy_2_object()(m_source, m_target) == EQUAL) {
|
||||||
reset_flags(); // inavlid arc
|
reset_flags(); // invalid arc
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -724,7 +724,7 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Use the source and target to initialize the exterme points.
|
// Use the source and target to initialize the extreme points.
|
||||||
bool source_left =
|
bool source_left =
|
||||||
CGAL::to_double(m_source.x()) < CGAL::to_double(m_target.x());
|
CGAL::to_double(m_source.x()) < CGAL::to_double(m_target.x());
|
||||||
x_min = source_left ?
|
x_min = source_left ?
|
||||||
|
|
@ -892,7 +892,7 @@ protected:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Find the vertical tangency points of the undelying conic.
|
/*! Find the vertical tangency points of the underlying conic.
|
||||||
* \param ps The output points of vertical tangency.
|
* \param ps The output points of vertical tangency.
|
||||||
* This area must be allocated at the size of 2.
|
* This area must be allocated at the size of 2.
|
||||||
* \return The number of vertical tangency points.
|
* \return The number of vertical tangency points.
|
||||||
|
|
@ -970,7 +970,7 @@ protected:
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Find the horizontal tangency points of the undelying conic.
|
/*! Find the horizontal tangency points of the underlying conic.
|
||||||
* \param ps The output points of horizontal tangency.
|
* \param ps The output points of horizontal tangency.
|
||||||
* This area must be allocated at the size of 2.
|
* This area must be allocated at the size of 2.
|
||||||
* \return The number of horizontal tangency points.
|
* \return The number of horizontal tangency points.
|
||||||
|
|
@ -1071,7 +1071,7 @@ protected:
|
||||||
set_flag(IS_VALID);
|
set_flag(IS_VALID);
|
||||||
set_flag(IS_FULL_CONIC);
|
set_flag(IS_FULL_CONIC);
|
||||||
}
|
}
|
||||||
else reset_flags(); // inavlid arc
|
else reset_flags(); // invalid arc
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Check whether the given point lies on the supporting conic of the arc.
|
/*! Check whether the given point lies on the supporting conic of the arc.
|
||||||
|
|
@ -1093,7 +1093,7 @@ protected:
|
||||||
return (CGAL::sign(val) == ZERO);
|
return (CGAL::sign(val) == ZERO);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Build the data for hyperbolic arc, contaning the characterization of the
|
/*! Build the data for hyperbolic arc, containing the characterization of the
|
||||||
* hyperbolic branch the arc is placed on.
|
* hyperbolic branch the arc is placed on.
|
||||||
*/
|
*/
|
||||||
CGAL_DEPRECATED void _build_hyperbolic_arc_data() {
|
CGAL_DEPRECATED void _build_hyperbolic_arc_data() {
|
||||||
|
|
@ -1372,7 +1372,7 @@ protected:
|
||||||
if (! _is_on_supporting_conic(m_source) ||
|
if (! _is_on_supporting_conic(m_source) ||
|
||||||
! _is_on_supporting_conic(m_target))
|
! _is_on_supporting_conic(m_target))
|
||||||
{
|
{
|
||||||
reset_flags(); // inavlid arc
|
reset_flags(); // invalid arc
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1394,7 +1394,7 @@ protected:
|
||||||
nt_traits.convert(m_v)) * p_mid.y() +
|
nt_traits.convert(m_v)) * p_mid.y() +
|
||||||
nt_traits.convert(m_w)) != ZERO)
|
nt_traits.convert(m_w)) != ZERO)
|
||||||
{
|
{
|
||||||
reset_flags(); // inavlid arc
|
reset_flags(); // invalid arc
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1419,7 +1419,7 @@ protected:
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// The sign of (4rs - t^2) detetmines the conic type:
|
// The sign of (4rs - t^2) detetmines the conic type:
|
||||||
// - if it is possitive, the conic is an ellipse,
|
// - if it is positive, the conic is an ellipse,
|
||||||
// - if it is negative, the conic is a hyperbola,
|
// - if it is negative, the conic is a hyperbola,
|
||||||
// - if it is zero, the conic is a parabola.
|
// - if it is zero, the conic is a parabola.
|
||||||
CGAL::Sign sign_conic = CGAL::sign(4*m_r*m_s - m_t*m_t);
|
CGAL::Sign sign_conic = CGAL::sign(4*m_r*m_s - m_t*m_t);
|
||||||
|
|
@ -1438,7 +1438,7 @@ protected:
|
||||||
bool finite_at_y = (_points_at_y(p_mid, ps) > 0);
|
bool finite_at_y = (_points_at_y(p_mid, ps) > 0);
|
||||||
|
|
||||||
if (! finite_at_x && ! finite_at_y) {
|
if (! finite_at_x && ! finite_at_y) {
|
||||||
reset_flags(); // inavlid arc
|
reset_flags(); // invalid arc
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1515,7 +1515,7 @@ public:
|
||||||
/// \name Get the arc properties.
|
/// \name Get the arc properties.
|
||||||
//@{
|
//@{
|
||||||
|
|
||||||
/*! Determine wheather the arc is valid.
|
/*! Determine whether the arc is valid.
|
||||||
*/
|
*/
|
||||||
bool is_valid() const { return test_flag(IS_VALID); }
|
bool is_valid() const { return test_flag(IS_VALID); }
|
||||||
|
|
||||||
|
|
@ -1600,7 +1600,7 @@ protected:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/// \name Modifying functions (setters);
|
/// \name Modifying functions (setters);
|
||||||
// only friends have the priviledge to use.
|
// only friends have the privilege to use.
|
||||||
//@{
|
//@{
|
||||||
|
|
||||||
/*! Set the source point of the conic arc.
|
/*! Set the source point of the conic arc.
|
||||||
|
|
|
||||||
|
|
@ -82,10 +82,10 @@ public:
|
||||||
/*! Default constructors. */
|
/*! Default constructors. */
|
||||||
Conic_point_2() : Base() {}
|
Conic_point_2() : Base() {}
|
||||||
|
|
||||||
/*! Constrcutor from the base class. */
|
/*! Constructor from the base class. */
|
||||||
Conic_point_2(const Base& p) : Base(p) {}
|
Conic_point_2(const Base& p) : Base(p) {}
|
||||||
|
|
||||||
/*! Constructor with homegeneous coordinates. */
|
/*! Constructor with homogeneous coordinates. */
|
||||||
Conic_point_2(const Algebraic& hx, const Algebraic& hy, const Algebraic& hz) :
|
Conic_point_2(const Algebraic& hx, const Algebraic& hy, const Algebraic& hz) :
|
||||||
Base(hx, hy, hz)
|
Base(hx, hy, hz)
|
||||||
{}
|
{}
|
||||||
|
|
|
||||||
|
|
@ -163,7 +163,7 @@ public:
|
||||||
// Set the basic properties and clear the _info bits.
|
// Set the basic properties and clear the _info bits.
|
||||||
this->set_endpoints(source, target);
|
this->set_endpoints(source, target);
|
||||||
this->set_orientation(COLLINEAR);
|
this->set_orientation(COLLINEAR);
|
||||||
this->reset_flags(); // inavlid arc
|
this->reset_flags(); // invalid arc
|
||||||
|
|
||||||
// Check if the arc is directed right (the target is lexicographically
|
// Check if the arc is directed right (the target is lexicographically
|
||||||
// greater than the source point), or to the left.
|
// greater than the source point), or to the left.
|
||||||
|
|
@ -180,7 +180,7 @@ public:
|
||||||
res = ker.compare_y_2_object()(source, target);
|
res = ker.compare_y_2_object()(source, target);
|
||||||
CGAL_precondition(res != EQUAL);
|
CGAL_precondition(res != EQUAL);
|
||||||
if (res == EQUAL) {
|
if (res == EQUAL) {
|
||||||
reset_flags(); // inavlid arc
|
reset_flags(); // invalid arc
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -290,7 +290,7 @@ private:
|
||||||
|
|
||||||
// Check whether the conic is facing up or facing down:
|
// Check whether the conic is facing up or facing down:
|
||||||
// Check whether the arc (which is x-monotone of degree 2) lies above or
|
// Check whether the arc (which is x-monotone of degree 2) lies above or
|
||||||
// below the segement that contects its two end-points (x1,y1) and (x2,y2).
|
// below the segment that contects its two end-points (x1,y1) and (x2,y2).
|
||||||
// To do that, we find the y coordinate of a point on the arc whose x
|
// To do that, we find the y coordinate of a point on the arc whose x
|
||||||
// coordinate is (x1+x2)/2 and compare it to (y1+y2)/2.
|
// coordinate is (x1+x2)/2 and compare it to (y1+y2)/2.
|
||||||
Comparison_result res = ker.compare_y_2_object()(p_arc_mid, p_mid);
|
Comparison_result res = ker.compare_y_2_object()(p_arc_mid, p_mid);
|
||||||
|
|
@ -301,7 +301,7 @@ private:
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/// \name Public constrcutors, assignment operators, and destructors.
|
/// \name Public constructors, assignment operators, and destructors.
|
||||||
//@{
|
//@{
|
||||||
|
|
||||||
/*! Default constructor.
|
/*! Default constructor.
|
||||||
|
|
@ -350,7 +350,7 @@ public:
|
||||||
private:
|
private:
|
||||||
template <typename, typename, typename> friend class Arr_conic_traits_2;
|
template <typename, typename, typename> friend class Arr_conic_traits_2;
|
||||||
|
|
||||||
/// \name private constrcutors to be used only by the traits class template.
|
/// \name private constructors to be used only by the traits class template.
|
||||||
//@{
|
//@{
|
||||||
|
|
||||||
/*! Construct an x-monotone arc from a conic arc.
|
/*! Construct an x-monotone arc from a conic arc.
|
||||||
|
|
@ -421,7 +421,7 @@ public:
|
||||||
bool is_lower() const { return this->test_flag(FACING_DOWN); }
|
bool is_lower() const { return this->test_flag(FACING_DOWN); }
|
||||||
|
|
||||||
/*! Check whether the arc is a special segment connecting two algebraic
|
/*! Check whether the arc is a special segment connecting two algebraic
|
||||||
* endpoints (and has no undelying integer conic coefficients).
|
* endpoints (and has no underlying integer conic coefficients).
|
||||||
*/
|
*/
|
||||||
bool is_special_segment() const { return this->test_flag(IS_SPECIAL_SEGMENT); }
|
bool is_special_segment() const { return this->test_flag(IS_SPECIAL_SEGMENT); }
|
||||||
|
|
||||||
|
|
@ -447,7 +447,7 @@ public:
|
||||||
Conic_id id() const { return m_id; }
|
Conic_id id() const { return m_id; }
|
||||||
|
|
||||||
/*! Check whether the given point lies on the arc.
|
/*! Check whether the given point lies on the arc.
|
||||||
* \param p The qury point.
|
* \param p The query point.
|
||||||
* \param (true) if p lies on the arc; (false) otherwise.
|
* \param (true) if p lies on the arc; (false) otherwise.
|
||||||
*/
|
*/
|
||||||
CGAL_DEPRECATED
|
CGAL_DEPRECATED
|
||||||
|
|
@ -660,7 +660,7 @@ public:
|
||||||
//@{
|
//@{
|
||||||
|
|
||||||
/*! Flip the arc.
|
/*! Flip the arc.
|
||||||
* \return An arc with swapped source and target and a reverse orienation.
|
* \return An arc with swapped source and target and a reverse orientation.
|
||||||
*/
|
*/
|
||||||
Self flip() const {
|
Self flip() const {
|
||||||
// Make a copy of the current arc.
|
// Make a copy of the current arc.
|
||||||
|
|
@ -1316,7 +1316,7 @@ private:
|
||||||
|
|
||||||
if (CGAL::compare(slope1_numer*slope2_denom, slope2_numer*slope1_denom) !=
|
if (CGAL::compare(slope1_numer*slope2_denom, slope2_numer*slope1_denom) !=
|
||||||
EQUAL) {
|
EQUAL) {
|
||||||
// Different slopes at p - the mutiplicity of p is 1:
|
// Different slopes at p - the multiplicity of p is 1:
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1337,7 +1337,7 @@ private:
|
||||||
if (CGAL::compare(slope1_numer*slope2_denom,
|
if (CGAL::compare(slope1_numer*slope2_denom,
|
||||||
slope2_numer*slope1_denom) != EQUAL)
|
slope2_numer*slope1_denom) != EQUAL)
|
||||||
{
|
{
|
||||||
// Different curvatures at p - the mutiplicity of p is 2:
|
// Different curvatures at p - the multiplicity of p is 2:
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -409,7 +409,7 @@ public:
|
||||||
// and check if it lies next to a pole.
|
// and check if it lies next to a pole.
|
||||||
if (CGAL::sign (nt_traits.evaluate_at (_denom, x_s)) != CGAL::ZERO)
|
if (CGAL::sign (nt_traits.evaluate_at (_denom, x_s)) != CGAL::ZERO)
|
||||||
{
|
{
|
||||||
// We have a nomral endpoint.
|
// We have a normal endpoint.
|
||||||
_ps = Point_2 (x_s, nt_traits.evaluate_at (_numer, x_s) /
|
_ps = Point_2 (x_s, nt_traits.evaluate_at (_numer, x_s) /
|
||||||
nt_traits.evaluate_at (_denom, x_s));
|
nt_traits.evaluate_at (_denom, x_s));
|
||||||
}
|
}
|
||||||
|
|
@ -499,7 +499,7 @@ public:
|
||||||
// Set the source point and check if it lies next to a pole.
|
// Set the source point and check if it lies next to a pole.
|
||||||
if (CGAL::sign (nt_traits.evaluate_at (_denom, x_s)) != CGAL::ZERO)
|
if (CGAL::sign (nt_traits.evaluate_at (_denom, x_s)) != CGAL::ZERO)
|
||||||
{
|
{
|
||||||
// We have a nomral endpoint.
|
// We have a normal endpoint.
|
||||||
_ps = Point_2 (x_s, nt_traits.evaluate_at (_numer, x_s) /
|
_ps = Point_2 (x_s, nt_traits.evaluate_at (_numer, x_s) /
|
||||||
nt_traits.evaluate_at (_denom, x_s));
|
nt_traits.evaluate_at (_denom, x_s));
|
||||||
}
|
}
|
||||||
|
|
@ -521,7 +521,7 @@ public:
|
||||||
// Set the target point and check if it lies next to a pole.
|
// Set the target point and check if it lies next to a pole.
|
||||||
if (CGAL::sign (nt_traits.evaluate_at (_denom, x_t)) != CGAL::ZERO)
|
if (CGAL::sign (nt_traits.evaluate_at (_denom, x_t)) != CGAL::ZERO)
|
||||||
{
|
{
|
||||||
// We have a nomral endpoint.
|
// We have a normal endpoint.
|
||||||
_pt = Point_2 (x_t, nt_traits.evaluate_at (_numer, x_t) /
|
_pt = Point_2 (x_t, nt_traits.evaluate_at (_numer, x_t) /
|
||||||
nt_traits.evaluate_at (_denom, x_t));
|
nt_traits.evaluate_at (_denom, x_t));
|
||||||
}
|
}
|
||||||
|
|
@ -1026,7 +1026,7 @@ public:
|
||||||
* intersection point.
|
* intersection point.
|
||||||
* \param cv The given arc.
|
* \param cv The given arc.
|
||||||
* \param p The intersection point.
|
* \param p The intersection point.
|
||||||
* \param mult Output: The mutiplicity of the intersection point.
|
* \param mult Output: The multiplicity of the intersection point.
|
||||||
* \return SMALLER if (*this) slope is less than cv's;
|
* \return SMALLER if (*this) slope is less than cv's;
|
||||||
* EQUAL if the two slopes are equal;
|
* EQUAL if the two slopes are equal;
|
||||||
* LARGER if (*this) slope is greater than cv's.
|
* LARGER if (*this) slope is greater than cv's.
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ namespace CGAL {
|
||||||
/*! \class Arr_landmarks_point_location
|
/*! \class Arr_landmarks_point_location
|
||||||
* A class that answers point-location queries on an arrangement using the
|
* A class that answers point-location queries on an arrangement using the
|
||||||
* landmarks algorithm, namely by locating the (approximately) nearest
|
* landmarks algorithm, namely by locating the (approximately) nearest
|
||||||
* landmark point to the qury point and walking from it toward the query
|
* landmark point to the query point and walking from it toward the query
|
||||||
* point.
|
* point.
|
||||||
* This class-template has two parameters:
|
* This class-template has two parameters:
|
||||||
* Arrangement corresponds to an arrangement-on-surface instantiation.
|
* Arrangement corresponds to an arrangement-on-surface instantiation.
|
||||||
|
|
|
||||||
|
|
@ -364,7 +364,7 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Notificaion after the removal of a vertex. */
|
/*! Notification after the removal of a vertex. */
|
||||||
virtual void after_remove_vertex() override {
|
virtual void after_remove_vertex() override {
|
||||||
if (! m_ignore_notifications && ! m_ignore_remove_edge) {
|
if (! m_ignore_notifications && ! m_ignore_remove_edge) {
|
||||||
clear_landmark_set();
|
clear_landmark_set();
|
||||||
|
|
@ -381,7 +381,7 @@ public:
|
||||||
m_ignore_remove_edge = false;
|
m_ignore_remove_edge = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Notificaion after the removal of an outer CCB. */
|
/*! Notification after the removal of an outer CCB. */
|
||||||
virtual void after_remove_outer_ccb(Face_handle) override {
|
virtual void after_remove_outer_ccb(Face_handle) override {
|
||||||
if (! m_ignore_notifications && ! m_ignore_remove_edge) {
|
if (! m_ignore_notifications && ! m_ignore_remove_edge) {
|
||||||
clear_landmark_set();
|
clear_landmark_set();
|
||||||
|
|
@ -389,7 +389,7 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Notificaion after the removal of an inner CCB. */
|
/*! Notification after the removal of an inner CCB. */
|
||||||
virtual void after_remove_inner_ccb(Face_handle) override {
|
virtual void after_remove_inner_ccb(Face_handle) override {
|
||||||
if (! m_ignore_notifications && ! m_ignore_remove_edge) {
|
if (! m_ignore_notifications && ! m_ignore_remove_edge) {
|
||||||
clear_landmark_set();
|
clear_landmark_set();
|
||||||
|
|
|
||||||
|
|
@ -113,7 +113,7 @@ Arr_walk_along_line_point_location<Arrangement>::locate(const Point_2& p) const
|
||||||
face = closest_he->twin()->face();
|
face = closest_he->twin()->face();
|
||||||
|
|
||||||
// Perform a vertical walk along the faces of the hole until locating
|
// Perform a vertical walk along the faces of the hole until locating
|
||||||
// a face that contains the qeury point.
|
// a face that contains the query point.
|
||||||
do {
|
do {
|
||||||
CGAL_assertion_code
|
CGAL_assertion_code
|
||||||
(Halfedge_const_handle old_closest_he = closest_he);
|
(Halfedge_const_handle old_closest_he = closest_he);
|
||||||
|
|
@ -256,7 +256,7 @@ _vertical_ray_shoot(const Point_2& p, bool shoot_up) const
|
||||||
face = closest_he->twin()->face();
|
face = closest_he->twin()->face();
|
||||||
|
|
||||||
// Perform a vertical walk along the faces of the hole until locating
|
// Perform a vertical walk along the faces of the hole until locating
|
||||||
// a face that contains the qeury point.
|
// a face that contains the query point.
|
||||||
do {
|
do {
|
||||||
CGAL_assertion_code (
|
CGAL_assertion_code (
|
||||||
Halfedge_const_handle old_closest_he = closest_he;
|
Halfedge_const_handle old_closest_he = closest_he;
|
||||||
|
|
|
||||||
|
|
@ -2636,7 +2636,7 @@ merge_edge(Halfedge_const_handle he1,
|
||||||
Td_map_item rightp_item = locate(rightmost, lt2);
|
Td_map_item rightp_item = locate(rightmost, lt2);
|
||||||
Td_map_item mrgp_item = locate(ce, lt);
|
Td_map_item mrgp_item = locate(ce, lt);
|
||||||
|
|
||||||
//varifying that all trapezoids are not nullptr and are of type POINT
|
//verifying that all trapezoids are not nullptr and are of type POINT
|
||||||
CGAL_warning(std::visit(dag_node_visitor(), leftp_item) != nullptr);
|
CGAL_warning(std::visit(dag_node_visitor(), leftp_item) != nullptr);
|
||||||
CGAL_warning(std::visit(dag_node_visitor(), rightp_item)!= nullptr);
|
CGAL_warning(std::visit(dag_node_visitor(), rightp_item)!= nullptr);
|
||||||
CGAL_warning(std::visit(dag_node_visitor(), mrgp_item) != nullptr);
|
CGAL_warning(std::visit(dag_node_visitor(), mrgp_item) != nullptr);
|
||||||
|
|
|
||||||
|
|
@ -543,7 +543,7 @@ public:
|
||||||
//check if the source point lies next to a pole.
|
//check if the source point lies next to a pole.
|
||||||
if (typename Algebraic_kernel::Sign_at_1()(Q, x_s) != CGAL::ZERO)
|
if (typename Algebraic_kernel::Sign_at_1()(Q, x_s) != CGAL::ZERO)
|
||||||
{
|
{
|
||||||
// We have a nomral endpoint.
|
// We have a normal endpoint.
|
||||||
//nothing to do....
|
//nothing to do....
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -644,7 +644,7 @@ public:
|
||||||
//check if source point lies next to a pole.
|
//check if source point lies next to a pole.
|
||||||
if (typename Algebraic_kernel::Sign_at_1()(Q,x_s) != CGAL::ZERO)
|
if (typename Algebraic_kernel::Sign_at_1()(Q,x_s) != CGAL::ZERO)
|
||||||
{
|
{
|
||||||
// We have a nomral endpoint.
|
// We have a normal endpoint.
|
||||||
//nothing to do ..
|
//nothing to do ..
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -666,7 +666,7 @@ public:
|
||||||
//check if target point lies next to a pole.
|
//check if target point lies next to a pole.
|
||||||
if (typename Algebraic_kernel::Sign_at_1()(Q,x_t) != CGAL::ZERO)
|
if (typename Algebraic_kernel::Sign_at_1()(Q,x_t) != CGAL::ZERO)
|
||||||
{
|
{
|
||||||
// We have a nomral endpoint.
|
// We have a normal endpoint.
|
||||||
//nothing to do ..
|
//nothing to do ..
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -1206,7 +1206,7 @@ public:
|
||||||
// at their given intersection point.
|
// at their given intersection point.
|
||||||
// param cv The given arc.
|
// param cv The given arc.
|
||||||
// param p The intersection point.
|
// param p The intersection point.
|
||||||
// param mult Output: The mutiplicity of the intersection point.
|
// param mult Output: The multiplicity of the intersection point.
|
||||||
// return SMALLER if (*this) slope is less than cv's;
|
// return SMALLER if (*this) slope is less than cv's;
|
||||||
// EQUAL if the two slopes are equal;
|
// EQUAL if the two slopes are equal;
|
||||||
// LARGER if (*this) slope is greater than cv's.
|
// LARGER if (*this) slope is greater than cv's.
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ void Arr_transform_on_sphere(Arrangement & arr,
|
||||||
|
|
||||||
Arr_accessor<Arrangement> m_arr_access(arr);
|
Arr_accessor<Arrangement> m_arr_access(arr);
|
||||||
|
|
||||||
// Preprocessing loop - merge all the edges that were splited
|
// Preprocessing loop - merge all the edges that were split
|
||||||
// (meaning have a common endpoint that lies on the boundary and their degree
|
// (meaning have a common endpoint that lies on the boundary and their degree
|
||||||
// is 2) on the identification curve.
|
// is 2) on the identification curve.
|
||||||
for (auto vi1 = arr.vertices_begin(); vi1 != arr.vertices_end(); ) {
|
for (auto vi1 = arr.vertices_begin(); vi1 != arr.vertices_end(); ) {
|
||||||
|
|
@ -151,7 +151,7 @@ void Arr_transform_on_sphere(Arrangement & arr,
|
||||||
|
|
||||||
// If the curve is not x-monotone - split it into 2 x_monotone parts.
|
// If the curve is not x-monotone - split it into 2 x_monotone parts.
|
||||||
// Since the curves were x_monotone before , can assume that it will be
|
// Since the curves were x_monotone before , can assume that it will be
|
||||||
// splited into 2 parts max.
|
// split into 2 parts max.
|
||||||
if (objects.size() == 2) {
|
if (objects.size() == 2) {
|
||||||
auto it = objects.begin();
|
auto it = objects.begin();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -314,7 +314,7 @@ public:
|
||||||
// defining a type that inherits from the template we need to alias. However,
|
// defining a type that inherits from the template we need to alias. However,
|
||||||
// the non-C++11 code requires the (re)definition of all constructors of the
|
// the non-C++11 code requires the (re)definition of all constructors of the
|
||||||
// derived class. The non-C++11 code follows the commented out C++11 code.
|
// derived class. The non-C++11 code follows the commented out C++11 code.
|
||||||
// When we move to C++11 we can use the more elgant code.
|
// When we move to C++11 we can use the more elegant code.
|
||||||
// Type definition for the construction surface-sweep visitor.
|
// Type definition for the construction surface-sweep visitor.
|
||||||
template <typename Evt, typename Crv>
|
template <typename Evt, typename Crv>
|
||||||
struct Construction_helper :
|
struct Construction_helper :
|
||||||
|
|
|
||||||
|
|
@ -261,7 +261,7 @@ is_in_face(const Face* f, const Point_2& p, const Vertex* v) const
|
||||||
// Ignore vertical curves:
|
// Ignore vertical curves:
|
||||||
if (is_vertical(curr->curve())) {
|
if (is_vertical(curr->curve())) {
|
||||||
/* If this outer ccb chain contains the north pole, and our point
|
/* If this outer ccb chain contains the north pole, and our point
|
||||||
* lies horizontaly between the two vertical curves that meet at
|
* lies horizontally between the two vertical curves that meet at
|
||||||
* the north pole, increase the intersection counter
|
* the north pole, increase the intersection counter
|
||||||
*/
|
*/
|
||||||
if (curr->direction() == ARR_LEFT_TO_RIGHT) {
|
if (curr->direction() == ARR_LEFT_TO_RIGHT) {
|
||||||
|
|
@ -486,7 +486,7 @@ are_equal(const Vertex* v,
|
||||||
|
|
||||||
CGAL_assertion(ps_x != ARR_INTERIOR);
|
CGAL_assertion(ps_x != ARR_INTERIOR);
|
||||||
/* Both vertices have the same x boundary conditions =>
|
/* Both vertices have the same x boundary conditions =>
|
||||||
* comapare their y-position.
|
* compare their y-position.
|
||||||
*/
|
*/
|
||||||
const Point_2& p1 = v->point();
|
const Point_2& p1 = v->point();
|
||||||
const Point_2& p2 = (ind == ARR_MIN_END) ?
|
const Point_2& p2 = (ind == ARR_MIN_END) ?
|
||||||
|
|
|
||||||
|
|
@ -280,7 +280,7 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Notificaion before the removal of a vertex.
|
/*! Notification before the removal of a vertex.
|
||||||
* \param v (in) A handle to the vertex to be deleted.
|
* \param v (in) A handle to the vertex to be deleted.
|
||||||
*/
|
*/
|
||||||
virtual void after_remove_vertex() override {
|
virtual void after_remove_vertex() override {
|
||||||
|
|
@ -331,7 +331,7 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Notificaion after the removal of an inner CCB.
|
/*! Notification after the removal of an inner CCB.
|
||||||
* \param f (in) The face that used to contain the inner CCB.
|
* \param f (in) The face that used to contain the inner CCB.
|
||||||
*/
|
*/
|
||||||
virtual void after_remove_inner_ccb(Face_handle /* f */) override {
|
virtual void after_remove_inner_ccb(Face_handle /* f */) override {
|
||||||
|
|
|
||||||
|
|
@ -112,7 +112,7 @@ assign(const Self& arr)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Go over the list of halfedges in our arrangement. The curves associated
|
// Go over the list of halfedges in our arrangement. The curves associated
|
||||||
// with these edges sotre pointers to the curves in the original
|
// with these edges store pointers to the curves in the original
|
||||||
// arrangement, so we now have to modify these pointers, according to the
|
// arrangement, so we now have to modify these pointers, according to the
|
||||||
// mapping we have just created. While doing so, we also construct the set
|
// mapping we have just created. While doing so, we also construct the set
|
||||||
// of edges associated with each (duplicated) curve in our arrangement.
|
// of edges associated with each (duplicated) curve in our arrangement.
|
||||||
|
|
|
||||||
|
|
@ -312,8 +312,8 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! 6. Implementation of the operator in case the left and right sides have
|
/*! 6. Implementation of the operator in case the left and right sides have
|
||||||
* boundary conditions (but they are nopt identified) and the bottom and top
|
* boundary conditions (but they are not identified) and the bottom and top
|
||||||
* sides are identied.
|
* sides are identified.
|
||||||
*/
|
*/
|
||||||
Comparison_result compare_y_at_x(const Point_2& p,
|
Comparison_result compare_y_at_x(const Point_2& p,
|
||||||
const X_monotone_curve_2& xcv,
|
const X_monotone_curve_2& xcv,
|
||||||
|
|
@ -397,7 +397,7 @@ public:
|
||||||
|
|
||||||
/*! 8. Implementation of the operator in case the left and right sides are
|
/*! 8. Implementation of the operator in case the left and right sides are
|
||||||
* identified, and the bottom and top sides have boundary conditions (but
|
* identified, and the bottom and top sides have boundary conditions (but
|
||||||
* they are not identied).
|
* they are not identified).
|
||||||
*/
|
*/
|
||||||
Comparison_result compare_y_at_x(const Point_2& p,
|
Comparison_result compare_y_at_x(const Point_2& p,
|
||||||
const X_monotone_curve_2& xcv,
|
const X_monotone_curve_2& xcv,
|
||||||
|
|
|
||||||
|
|
@ -2534,7 +2534,7 @@ _insert_at_vertices(DHalfedge* he_to,
|
||||||
// EBEB 2012-07-26 the following code enables optimizations:
|
// EBEB 2012-07-26 the following code enables optimizations:
|
||||||
// - avoid length-test
|
// - avoid length-test
|
||||||
// - search only local minima to find leftmost vertex
|
// - search only local minima to find leftmost vertex
|
||||||
// - re-use of signs of ccbs
|
// - reuse of signs of ccbs
|
||||||
// signs1/2 are only used when hole1 == hole2,
|
// signs1/2 are only used when hole1 == hole2,
|
||||||
// thus we have to init them now
|
// thus we have to init them now
|
||||||
Arr_halfedge_direction cv_dir1 = cv_dir;
|
Arr_halfedge_direction cv_dir1 = cv_dir;
|
||||||
|
|
|
||||||
|
|
@ -1176,7 +1176,7 @@ _zone_in_face(Face_handle face, bool on_boundary) {
|
||||||
m_left_he = (m_right_he->direction() == ARR_LEFT_TO_RIGHT) ?
|
m_left_he = (m_right_he->direction() == ARR_LEFT_TO_RIGHT) ?
|
||||||
inserted_he : m_right_he;
|
inserted_he : m_right_he;
|
||||||
else {
|
else {
|
||||||
// Mutliplicity is unknown:
|
// Multiplicity is unknown:
|
||||||
m_left_he = m_invalid_he;
|
m_left_he = m_invalid_he;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -271,7 +271,7 @@ public:
|
||||||
class Halfedge;
|
class Halfedge;
|
||||||
class Face;
|
class Face;
|
||||||
|
|
||||||
// Definition of the halfedge data-structure itereators and circulators:
|
// Definition of the halfedge data-structure iterators and circulators:
|
||||||
typedef I_Filtered_iterator<DVertex_iter, _Is_concrete_vertex,
|
typedef I_Filtered_iterator<DVertex_iter, _Is_concrete_vertex,
|
||||||
Vertex, DDifference, DIterator_category>
|
Vertex, DDifference, DIterator_category>
|
||||||
Vertex_iterator;
|
Vertex_iterator;
|
||||||
|
|
|
||||||
|
|
@ -2015,7 +2015,7 @@ protected:
|
||||||
* boundary implies equality
|
* boundary implies equality
|
||||||
*
|
*
|
||||||
* \param p first endpoint
|
* \param p first endpoint
|
||||||
* \param q second endpint
|
* \param q second endpoint
|
||||||
* \param equal_x \c true indicates to skip the comparison by x
|
* \param equal_x \c true indicates to skip the comparison by x
|
||||||
* \param only_x \c true indicates to report only the comparison by x
|
* \param only_x \c true indicates to report only the comparison by x
|
||||||
* \returns the result of the queried comparison
|
* \returns the result of the queried comparison
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ struct Curve_interval_arcno_cache {
|
||||||
//! type of second argument
|
//! type of second argument
|
||||||
typedef bool second_argument_type;
|
typedef bool second_argument_type;
|
||||||
|
|
||||||
//! type of third arguent
|
//! type of third argument
|
||||||
typedef int third_argument_type;
|
typedef int third_argument_type;
|
||||||
|
|
||||||
//! the result type
|
//! the result type
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@
|
||||||
// whether to use exact rational arithmetic
|
// whether to use exact rational arithmetic
|
||||||
#define CGAL_CKVA_USE_RATIONAL_ARITHMETIC
|
#define CGAL_CKVA_USE_RATIONAL_ARITHMETIC
|
||||||
|
|
||||||
// this turns on a signleton curve renderer
|
// this turns on a singleton curve renderer
|
||||||
// (not recommended for multi-threaded applications)
|
// (not recommended for multi-threaded applications)
|
||||||
//#define CGAL_CKVA_USE_STATIC_RENDERER
|
//#define CGAL_CKVA_USE_STATIC_RENDERER
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -221,7 +221,7 @@ private:
|
||||||
//! returns \c true when the precision limit for a specified number type is
|
//! returns \c true when the precision limit for a specified number type is
|
||||||
//! reached
|
//! reached
|
||||||
typename Renderer_traits::Precision_limit limit;
|
typename Renderer_traits::Precision_limit limit;
|
||||||
//! maximum level of subdivision dependending on specified number type
|
//! maximum level of subdivision depending on specified number type
|
||||||
static const unsigned MAX_SUBDIVISION_LEVEL =
|
static const unsigned MAX_SUBDIVISION_LEVEL =
|
||||||
Renderer_traits::MAX_SUBDIVISION_LEVEL;
|
Renderer_traits::MAX_SUBDIVISION_LEVEL;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,7 @@ struct Transform {
|
||||||
/*!\brief
|
/*!\brief
|
||||||
* class template \c Curve_renderer_traits
|
* class template \c Curve_renderer_traits
|
||||||
*
|
*
|
||||||
* this traits class prodives various number type conversions for the
|
* this traits class provides various number type conversions for the
|
||||||
* curve renderer
|
* curve renderer
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1237,7 +1237,7 @@ public:
|
||||||
//! \brief checks whether curve has only finitely many self-intersection
|
//! \brief checks whether curve has only finitely many self-intersection
|
||||||
//! points, i.e., it has no self-overlapped continuous parts
|
//! points, i.e., it has no self-overlapped continuous parts
|
||||||
//!
|
//!
|
||||||
//! for algerbaic curves this means that supporting polynomial is
|
//! for algebraic curves this means that supporting polynomial is
|
||||||
//! square-free
|
//! square-free
|
||||||
struct Has_finite_number_of_self_intersections_2 :
|
struct Has_finite_number_of_self_intersections_2 :
|
||||||
public CGAL::cpp98::unary_function< Polynomial_2, bool > {
|
public CGAL::cpp98::unary_function< Polynomial_2, bool > {
|
||||||
|
|
@ -1252,7 +1252,7 @@ public:
|
||||||
//! \brief checks whether a curve pair has finitely many intersections,
|
//! \brief checks whether a curve pair has finitely many intersections,
|
||||||
//! in other words, whether two curves have no continuous common part
|
//! in other words, whether two curves have no continuous common part
|
||||||
//!
|
//!
|
||||||
//! in case of algerbaic curves: checks whether supporting polynomials are
|
//! in case of algebraic curves: checks whether supporting polynomials are
|
||||||
//! coprime
|
//! coprime
|
||||||
struct Has_finite_number_of_intersections_2 :
|
struct Has_finite_number_of_intersections_2 :
|
||||||
public CGAL::cpp98::binary_function< Curve_analysis_2, Curve_analysis_2, bool > {
|
public CGAL::cpp98::binary_function< Curve_analysis_2, Curve_analysis_2, bool > {
|
||||||
|
|
|
||||||
|
|
@ -317,7 +317,7 @@ namespace CGAL {
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Read a circular boundary of a conncted component.
|
* Read a circular boundary of a connected component.
|
||||||
* \param formatter The formatter.
|
* \param formatter The formatter.
|
||||||
* \param boundary_size The number of halfedges along the boundary.
|
* \param boundary_size The number of halfedges along the boundary.
|
||||||
* \param p_outer The outer CCB.
|
* \param p_outer The outer CCB.
|
||||||
|
|
|
||||||
|
|
@ -197,7 +197,7 @@ namespace draw_function_for_arrangement_2
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Draw a region using aproximate coordinates.
|
/*! Draw a region using approximate coordinates.
|
||||||
* Call this member function only if the geometry traits is equipped with
|
* Call this member function only if the geometry traits is equipped with
|
||||||
* the coordinate-approximation functionality of a curve.
|
* the coordinate-approximation functionality of a curve.
|
||||||
* This function must be inlined (e.g., a template) to enable the
|
* This function must be inlined (e.g., a template) to enable the
|
||||||
|
|
@ -416,7 +416,7 @@ namespace draw_function_for_arrangement_2
|
||||||
m_visited.clear();
|
m_visited.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Draw a curve using aproximate coordinates.
|
/*! Draw a curve using approximate coordinates.
|
||||||
* Call this member function only of the geometry traits is equipped with
|
* Call this member function only of the geometry traits is equipped with
|
||||||
* the coordinate-aproximation functionality of a curve.
|
* the coordinate-aproximation functionality of a curve.
|
||||||
* This function must be inlined (e.g., a template) to enable the
|
* This function must be inlined (e.g., a template) to enable the
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Created by the script cgal_create_cmake_script
|
# Created by the script cgal_create_cmake_script
|
||||||
# This is the CMake script for compiling a CGAL application.
|
# This is the CMake script for compiling a CGAL application.
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(Arrangement_on_surface_2_Tests)
|
project(Arrangement_on_surface_2_Tests)
|
||||||
|
|
||||||
enable_testing()
|
enable_testing()
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# Input is based on the curves and points indexes from intersect.pt
|
# Input is based on the curves and points indexes from intersect.pt
|
||||||
# intersect.xcv. The first two numbers are the numbers of the input curves
|
# intersect.xcv. The first two numbers are the numbers of the input curves
|
||||||
# to be intersected. After that there is the number of intesections and
|
# to be intersected. After that there is the number of intersections and
|
||||||
# 2-3 numbers representing each intersection. Meaning, the input is of the form:
|
# 2-3 numbers representing each intersection. Meaning, the input is of the form:
|
||||||
# intersect <id of 1st x-curve> <id of 2nd x-curve> \
|
# intersect <id of 1st x-curve> <id of 2nd x-curve> \
|
||||||
# <expected number of intersections> [<type of intersection> \
|
# <expected number of intersections> [<type of intersection> \
|
||||||
|
|
|
||||||
|
|
@ -476,13 +476,13 @@ public:
|
||||||
virtual void after_move_isolated_vertex(Vertex_handle /* v */) override
|
virtual void after_move_isolated_vertex(Vertex_handle /* v */) override
|
||||||
{ compare_results("after_move_isolated_vertex"); }
|
{ compare_results("after_move_isolated_vertex"); }
|
||||||
|
|
||||||
/*! Notificaion before the removal of a vertex.
|
/*! Notification before the removal of a vertex.
|
||||||
* \param v A handle to the vertex to be deleted.
|
* \param v A handle to the vertex to be deleted.
|
||||||
*/
|
*/
|
||||||
virtual void before_remove_vertex(Vertex_handle /* v */) override
|
virtual void before_remove_vertex(Vertex_handle /* v */) override
|
||||||
{ compare_results("before_remove_vertex"); }
|
{ compare_results("before_remove_vertex"); }
|
||||||
|
|
||||||
/*! Notificaion after the removal of a vertex.
|
/*! Notification after the removal of a vertex.
|
||||||
*/
|
*/
|
||||||
virtual void after_remove_vertex() override
|
virtual void after_remove_vertex() override
|
||||||
{ compare_results("after_remove_vertex"); }
|
{ compare_results("after_remove_vertex"); }
|
||||||
|
|
@ -493,7 +493,7 @@ public:
|
||||||
virtual void before_remove_edge(Halfedge_handle /* e */) override
|
virtual void before_remove_edge(Halfedge_handle /* e */) override
|
||||||
{ compare_results("before_remove_edge"); }
|
{ compare_results("before_remove_edge"); }
|
||||||
|
|
||||||
/*! Notificaion after the removal of an edge.
|
/*! Notification after the removal of an edge.
|
||||||
*/
|
*/
|
||||||
virtual void after_remove_edge() override
|
virtual void after_remove_edge() override
|
||||||
{ compare_results("after_remove_edge"); }
|
{ compare_results("after_remove_edge"); }
|
||||||
|
|
@ -506,7 +506,7 @@ public:
|
||||||
Ccb_halfedge_circulator /* h */) override
|
Ccb_halfedge_circulator /* h */) override
|
||||||
{ compare_results("before_remove_outer_ccb"); }
|
{ compare_results("before_remove_outer_ccb"); }
|
||||||
|
|
||||||
/*! Notificaion after the removal of an outer CCB.
|
/*! Notification after the removal of an outer CCB.
|
||||||
* \param f The face that used to own the outer CCB.
|
* \param f The face that used to own the outer CCB.
|
||||||
*/
|
*/
|
||||||
virtual void after_remove_outer_ccb(Face_handle /* f */) override
|
virtual void after_remove_outer_ccb(Face_handle /* f */) override
|
||||||
|
|
@ -520,7 +520,7 @@ public:
|
||||||
Ccb_halfedge_circulator /* h */) override
|
Ccb_halfedge_circulator /* h */) override
|
||||||
{ compare_results("before_remove_inner_ccb"); }
|
{ compare_results("before_remove_inner_ccb"); }
|
||||||
|
|
||||||
/*! Notificaion after the removal of an inner CCB.
|
/*! Notification after the removal of an inner CCB.
|
||||||
* \param f The face that used to contain the inner CCB.
|
* \param f The face that used to contain the inner CCB.
|
||||||
*/
|
*/
|
||||||
virtual void after_remove_inner_ccb(Face_handle /* f */) override
|
virtual void after_remove_inner_ccb(Face_handle /* f */) override
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Created by the script cgal_create_CMakeLists
|
# Created by the script cgal_create_CMakeLists
|
||||||
# This is the CMake script for compiling a set of CGAL applications.
|
# This is the CMake script for compiling a set of CGAL applications.
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(BGL_LCC_Examples)
|
project(BGL_LCC_Examples)
|
||||||
|
|
||||||
# CGAL and its components
|
# CGAL and its components
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Created by the script cgal_create_CMakeLists
|
# Created by the script cgal_create_CMakeLists
|
||||||
# This is the CMake script for compiling a set of CGAL applications.
|
# This is the CMake script for compiling a set of CGAL applications.
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(BGL_OpenMesh_Examples)
|
project(BGL_OpenMesh_Examples)
|
||||||
|
|
||||||
# CGAL and its components
|
# CGAL and its components
|
||||||
|
|
@ -9,9 +9,9 @@ find_package(CGAL REQUIRED)
|
||||||
|
|
||||||
find_package(OpenMesh)
|
find_package(OpenMesh)
|
||||||
if(OpenMesh_FOUND)
|
if(OpenMesh_FOUND)
|
||||||
include(UseOpenMesh)
|
include(CGAL_OpenMesh_support)
|
||||||
create_single_source_cgal_program("TriMesh.cpp")
|
create_single_source_cgal_program("TriMesh.cpp")
|
||||||
target_link_libraries(TriMesh PRIVATE ${OPENMESH_LIBRARIES})
|
target_link_libraries(TriMesh PRIVATE CGAL::OpenMesh_support)
|
||||||
else()
|
else()
|
||||||
message("NOTICE: This project requires OpenMesh and will not be compiled.")
|
message("NOTICE: This project requires OpenMesh and will not be compiled.")
|
||||||
endif()
|
endif()
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(BGL_arrangement_2_Examples)
|
project(BGL_arrangement_2_Examples)
|
||||||
|
|
||||||
find_package(CGAL REQUIRED)
|
find_package(CGAL REQUIRED)
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Created by the script cgal_create_CMakeLists
|
# Created by the script cgal_create_CMakeLists
|
||||||
# This is the CMake script for compiling a set of CGAL applications.
|
# This is the CMake script for compiling a set of CGAL applications.
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
|
|
||||||
project(BGL_graphcut_Examples)
|
project(BGL_graphcut_Examples)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Created by the script cgal_create_CMakeLists
|
# Created by the script cgal_create_CMakeLists
|
||||||
# This is the CMake script for compiling a set of CGAL applications.
|
# This is the CMake script for compiling a set of CGAL applications.
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(BGL_polyhedron_3_Examples)
|
project(BGL_polyhedron_3_Examples)
|
||||||
|
|
||||||
# CGAL and its components
|
# CGAL and its components
|
||||||
|
|
@ -18,8 +18,8 @@ create_single_source_cgal_program("copy_polyhedron.cpp")
|
||||||
|
|
||||||
find_package(OpenMesh QUIET)
|
find_package(OpenMesh QUIET)
|
||||||
if(OpenMesh_FOUND)
|
if(OpenMesh_FOUND)
|
||||||
target_link_libraries(copy_polyhedron PRIVATE ${OPENMESH_LIBRARIES})
|
include(CGAL_OpenMesh_support)
|
||||||
target_compile_definitions(copy_polyhedron PRIVATE -DCGAL_USE_OPENMESH)
|
target_link_libraries(copy_polyhedron PRIVATE CGAL::OpenMesh_support)
|
||||||
else()
|
else()
|
||||||
message(STATUS "NOTICE: The example 'copy_polyhedron' will not use OpenMesh.")
|
message(STATUS "NOTICE: The example 'copy_polyhedron' will not use OpenMesh.")
|
||||||
endif()
|
endif()
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(BGL_surface_mesh_Examples)
|
project(BGL_surface_mesh_Examples)
|
||||||
|
|
||||||
find_package(CGAL REQUIRED)
|
find_package(CGAL REQUIRED)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
cmake_minimum_required(VERSION 3.1...3.23)
|
cmake_minimum_required(VERSION 3.12...3.29)
|
||||||
project(BGL_triangulation_2_Examples)
|
project(BGL_triangulation_2_Examples)
|
||||||
|
|
||||||
find_package(CGAL REQUIRED)
|
find_package(CGAL REQUIRED)
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,8 @@ namespace CGAL {
|
||||||
|
|
||||||
namespace METIS {
|
namespace METIS {
|
||||||
|
|
||||||
|
#ifndef DOXYGEN_RUNNING
|
||||||
|
|
||||||
template<typename TriangleMesh, typename METIS_options, typename NamedParameters>
|
template<typename TriangleMesh, typename METIS_options, typename NamedParameters>
|
||||||
void partition_dual_graph(const TriangleMesh& tm,
|
void partition_dual_graph(const TriangleMesh& tm,
|
||||||
int nparts,
|
int nparts,
|
||||||
|
|
@ -128,6 +130,8 @@ void partition_dual_graph(const TriangleMesh& tm, int nparts,
|
||||||
return partition_dual_graph(tm, nparts, &options, np);
|
return partition_dual_graph(tm, nparts, &options, np);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
/// \ingroup PkgBGLPartition
|
/// \ingroup PkgBGLPartition
|
||||||
///
|
///
|
||||||
/// computes a partition of the input triangular mesh into `nparts` parts,
|
/// computes a partition of the input triangular mesh into `nparts` parts,
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,8 @@ namespace CGAL {
|
||||||
|
|
||||||
namespace METIS {
|
namespace METIS {
|
||||||
|
|
||||||
|
#ifndef DOXYGEN_RUNNING
|
||||||
|
|
||||||
struct Output_vertex_partition_ids
|
struct Output_vertex_partition_ids
|
||||||
{
|
{
|
||||||
template<typename TriangleMesh, typename Indices>
|
template<typename TriangleMesh, typename Indices>
|
||||||
|
|
@ -68,6 +70,8 @@ struct Output_face_partition_ids
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
template<typename TriangleMesh, typename METIS_options, typename NamedParameters>
|
template<typename TriangleMesh, typename METIS_options, typename NamedParameters>
|
||||||
void partition_graph(const TriangleMesh& tm,
|
void partition_graph(const TriangleMesh& tm,
|
||||||
int nparts,
|
int nparts,
|
||||||
|
|
@ -161,6 +165,9 @@ void partition_graph(const TriangleMesh& tm, int nparts,
|
||||||
return partition_graph(tm, nparts, &options, np);
|
return partition_graph(tm, nparts, &options, np);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/// \ingroup PkgBGLPartition
|
/// \ingroup PkgBGLPartition
|
||||||
///
|
///
|
||||||
/// computes a partition of the input triangular mesh into `nparts` parts, based on the
|
/// computes a partition of the input triangular mesh into `nparts` parts, based on the
|
||||||
|
|
|
||||||
|
|
@ -62,13 +62,15 @@ void copy_face_graph_impl(const SourceMesh& sm, TargetMesh& tm,
|
||||||
const tm_face_descriptor tm_null_face = boost::graph_traits<TargetMesh>::null_face();
|
const tm_face_descriptor tm_null_face = boost::graph_traits<TargetMesh>::null_face();
|
||||||
const tm_vertex_descriptor tm_null_vertex = boost::graph_traits<TargetMesh>::null_vertex();
|
const tm_vertex_descriptor tm_null_vertex = boost::graph_traits<TargetMesh>::null_vertex();
|
||||||
|
|
||||||
reserve(tm, static_cast<typename boost::graph_traits<TargetMesh>::vertices_size_type>(vertices(tm).size()+vertices(sm).size()),
|
reserve(tm, static_cast<typename boost::graph_traits<TargetMesh>::vertices_size_type>(internal::exact_num_vertices(tm)+internal::exact_num_vertices(sm)),
|
||||||
static_cast<typename boost::graph_traits<TargetMesh>::edges_size_type>(edges(tm).size()+edges(sm).size()),
|
static_cast<typename boost::graph_traits<TargetMesh>::edges_size_type>(internal::exact_num_edges(tm)+internal::exact_num_edges(sm)),
|
||||||
static_cast<typename boost::graph_traits<TargetMesh>::faces_size_type>(faces(tm).size()+faces(sm).size()) );
|
static_cast<typename boost::graph_traits<TargetMesh>::faces_size_type>(internal::exact_num_faces(tm)+internal::exact_num_faces(sm)) );
|
||||||
|
|
||||||
//insert halfedges and create each vertex when encountering its halfedge
|
//insert halfedges and create each vertex when encountering its halfedge
|
||||||
std::vector<tm_edge_descriptor> new_edges;
|
std::vector<tm_edge_descriptor> new_edges;
|
||||||
new_edges.reserve(edges(sm).size());
|
std::vector<tm_halfedge_descriptor> new_vertices;
|
||||||
|
new_edges.reserve(internal::exact_num_edges(sm));
|
||||||
|
new_vertices.reserve(internal::exact_num_vertices(sm));
|
||||||
for(sm_edge_descriptor sm_e : edges(sm))
|
for(sm_edge_descriptor sm_e : edges(sm))
|
||||||
{
|
{
|
||||||
tm_edge_descriptor tm_e = add_edge(tm);
|
tm_edge_descriptor tm_e = add_edge(tm);
|
||||||
|
|
@ -106,6 +108,7 @@ void copy_face_graph_impl(const SourceMesh& sm, TargetMesh& tm,
|
||||||
tm_vertex_descriptor tm_h_tgt = add_vertex(tm);
|
tm_vertex_descriptor tm_h_tgt = add_vertex(tm);
|
||||||
*v2v++=std::make_pair(sm_h_tgt, tm_h_tgt);
|
*v2v++=std::make_pair(sm_h_tgt, tm_h_tgt);
|
||||||
set_halfedge(tm_h_tgt, tm_h, tm);
|
set_halfedge(tm_h_tgt, tm_h, tm);
|
||||||
|
new_vertices.push_back(tm_h);
|
||||||
set_target(tm_h, tm_h_tgt, tm);
|
set_target(tm_h, tm_h_tgt, tm);
|
||||||
put(tm_vpm, tm_h_tgt, conv(get(sm_vpm, sm_h_tgt)));
|
put(tm_vpm, tm_h_tgt, conv(get(sm_vpm, sm_h_tgt)));
|
||||||
}
|
}
|
||||||
|
|
@ -116,6 +119,7 @@ void copy_face_graph_impl(const SourceMesh& sm, TargetMesh& tm,
|
||||||
tm_vertex_descriptor tm_h_src = add_vertex(tm);
|
tm_vertex_descriptor tm_h_src = add_vertex(tm);
|
||||||
*v2v++=std::make_pair(sm_h_src, tm_h_src);
|
*v2v++=std::make_pair(sm_h_src, tm_h_src);
|
||||||
set_halfedge(tm_h_src, tm_h_opp, tm);
|
set_halfedge(tm_h_src, tm_h_opp, tm);
|
||||||
|
new_vertices.push_back(tm_h_opp);
|
||||||
set_target(tm_h_opp, tm_h_src, tm);
|
set_target(tm_h_opp, tm_h_src, tm);
|
||||||
put(tm_vpm, tm_h_src, conv(get(sm_vpm, sm_h_src)));
|
put(tm_vpm, tm_h_src, conv(get(sm_vpm, sm_h_src)));
|
||||||
}
|
}
|
||||||
|
|
@ -163,11 +167,9 @@ void copy_face_graph_impl(const SourceMesh& sm, TargetMesh& tm,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// update halfedge vertex of all but the vertex halfedge
|
// update halfedge vertex of all but the vertex halfedge
|
||||||
for(tm_vertex_descriptor v : vertices(tm))
|
for(tm_halfedge_descriptor h : new_vertices)
|
||||||
{
|
{
|
||||||
tm_halfedge_descriptor h = halfedge(v, tm);
|
tm_vertex_descriptor v = target(h, tm);
|
||||||
if (h==boost::graph_traits<TargetMesh>::null_halfedge())
|
|
||||||
continue;
|
|
||||||
tm_halfedge_descriptor next_around_vertex=h;
|
tm_halfedge_descriptor next_around_vertex=h;
|
||||||
do{
|
do{
|
||||||
next_around_vertex=opposite(next(next_around_vertex, tm), tm);
|
next_around_vertex=opposite(next(next_around_vertex, tm), tm);
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue