diff --git a/.clang-format b/.clang-format
new file mode 100644
index 00000000000..369aadbb15f
--- /dev/null
+++ b/.clang-format
@@ -0,0 +1,35 @@
+---
+Language: Cpp
+BasedOnStyle: LLVM
+AccessModifierOffset: -2
+AllowShortFunctionsOnASingleLine: true
+BinPackParameters: false
+BreakConstructorInitializers: BeforeComma
+BreakBeforeBraces: Custom
+BraceWrapping:
+ AfterCaseLabel: false
+ AfterClass: true
+ AfterControlStatement: MultiLine
+ AfterEnum: false
+ AfterFunction: false
+ AfterNamespace: false
+ AfterObjCDeclaration: false
+ AfterStruct: true
+ AfterUnion: false
+ AfterExternBlock: false
+ BeforeCatch: false
+ BeforeElse: false
+ BeforeLambdaBody: false
+ BeforeWhile: false
+ IndentBraces: false
+ SplitEmptyFunction: false
+ SplitEmptyRecord: false
+ SplitEmptyNamespace: false
+ColumnLimit: 120
+# Force pointers to the type for C++.
+DerivePointerAlignment: false
+PointerAlignment: Left
+# Control the spaces around conditionals
+SpacesInConditionalStatement: false
+SpaceBeforeParens: false
+...
diff --git a/.devcontainer/doxygen-cgal/Dockerfile b/.devcontainer/doxygen-cgal/Dockerfile
new file mode 100644
index 00000000000..81cb1f954ce
--- /dev/null
+++ b/.devcontainer/doxygen-cgal/Dockerfile
@@ -0,0 +1,55 @@
+# Use an official Fedora as a parent image for the build stage
+FROM fedora:latest AS sources_deps
+
+# Set environment variables to non-interactive
+ENV DEBIAN_FRONTEND=noninteractive
+
+# Install dependencies
+RUN dnf update -y && dnf install -y \
+ wget \
+ make \
+ gcc \
+ gcc-c++ \
+ patch \
+ cmake \
+ bison \
+ flex \
+ unzip \
+ python3 \
+ && dnf clean all
+
+# Copy the patch file to the build context
+COPY cgal-NO_ADDITIONAL_DETAILS.patch .
+
+FROM sources_deps AS build
+
+# Build and install Doxygen from sources
+ARG DOXYGEN_VERSION=1.9.6
+ARG MAKEFLAGS=-j$(nproc)
+RUN if [ -n "$DEBUG"];then set -x && make --version && ls -lZ /tmp && id; fi \
+ && DOXYGEN_VERSION_UNDERSCORE=$(echo ${DOXYGEN_VERSION} | sed 's/\./_/g') \
+ && wget https://github.com/doxygen/doxygen/archive/refs/tags/Release_${DOXYGEN_VERSION_UNDERSCORE}.zip \
+ && unzip Release_${DOXYGEN_VERSION_UNDERSCORE}.zip \
+ && cd doxygen-Release_${DOXYGEN_VERSION_UNDERSCORE} \
+ && patch -p1 < ../cgal-NO_ADDITIONAL_DETAILS.patch \
+ && mkdir build \
+ && cd build \
+ && cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release .. \
+ && cmake --build . \
+ && cmake --install . \
+ && mkdir -p /usr/local/share/doc/doxygen && cp ../LICENSE /usr/local/share/doc/doxygen/LICENSE.TXT \
+ && cd ../.. \
+ && rm -rf doxygen-Release_${DOXYGEN_VERSION_UNDERSCORE} Release_${DOXYGEN_VERSION_UNDERSCORE}.zip
+
+# Use a smaller base image for the final stage
+FROM fedora:latest
+
+# Install necessary runtime dependencies
+RUN set -x \
+ && dnf update -y && dnf install -y graphviz 'perl(Getopt::Std)' tex-bibtex cmake python3-lxml python3-pyquery \
+ && dnf clean all
+
+# Copy Doxygen from the build stage
+COPY --from=build /usr/local/bin/doxygen /usr/local/bin
+COPY --from=build /usr/local/share/doc/doxygen/LICENSE.TXT /usr/local/share/doc/doxygen/LICENSE.TXT
+RUN doxygen --version
diff --git a/.devcontainer/doxygen-cgal/Makefile b/.devcontainer/doxygen-cgal/Makefile
new file mode 100644
index 00000000000..9413173b5a7
--- /dev/null
+++ b/.devcontainer/doxygen-cgal/Makefile
@@ -0,0 +1,23 @@
+SHELL := /bin/bash
+DOXYGEN_VERSIONS := 1.12.0 1.11.0 1.10.0 1.9.8 1.9.7 1.9.6
+
+.PHONY: all build-% push-% build push
+
+all: build
+ @echo "Use `$(MAKE) push` to push the images to the registry."
+
+build-%:
+ @echo "MAKEFLAGS: $(MAKEFLAGS)"
+ @echo "Building Doxygen version $*..."
+ if [ "$$(getenforce || true)" == "Enforcing" ]; then Z=:z; else Z=; fi; \
+ F="$(MAKEFLAGS)"; F=$${F##*fifo:}; F=$${F%% *}; \
+ if [ -p "$$F" ]; then echo "The GNU make FIFO file exists:"; ls -l $$F; VOLUME_ARGS="-v $$F:$$F$$Z"; echo -- $$VOLUME_ARGS; fi; \
+ podman build --build-arg DOXYGEN_VERSION=$* --build-arg "MAKEFLAGS=$(MAKEFLAGS)" $$VOLUME_ARGS -t cgal/doxygen:$* .
+
+push-%: build-%
+ @echo "Pushing cgal/doxygen:$*..."
+ podman push cgal/doxygen:$*
+
+build: $(foreach version,$(DOXYGEN_VERSIONS),build-$(version))
+
+push: $(foreach version,$(DOXYGEN_VERSIONS),push-$(version))
diff --git a/.devcontainer/doxygen-cgal/cgal-NO_ADDITIONAL_DETAILS.patch b/.devcontainer/doxygen-cgal/cgal-NO_ADDITIONAL_DETAILS.patch
new file mode 100644
index 00000000000..bb6e63b274d
--- /dev/null
+++ b/.devcontainer/doxygen-cgal/cgal-NO_ADDITIONAL_DETAILS.patch
@@ -0,0 +1,44 @@
+diff --git a/src/config.xml b/src/config.xml
+index 13910958a6..31f1354e44 100644
+--- a/src/config.xml
++++ b/src/config.xml
+@@ -893,6 +893,18 @@ Go to the next section or return to the
+ \note This will also disable the warnings about undocumented members
+ that are normally produced when \ref cfg_warnings "WARNINGS" is
+ set to \c YES.
++]]>
++
++
++
++
++
+diff --git a/src/memberdef.cpp b/src/memberdef.cpp
+index 08d9bf24c5..ab04e994c5 100644
+--- a/src/memberdef.cpp
++++ b/src/memberdef.cpp
+@@ -2501,6 +2501,7 @@ bool MemberDefImpl::hasDetailedDescription() const
+ if (!m_hasDetailedDescriptionCached)
+ {
+ bool extractAll = Config_getBool(EXTRACT_ALL);
++ bool xAllNoDetailedSec = Config_getBool(NO_ADDITIONAL_DETAILS);
+ bool alwaysDetailedSec = Config_getBool(ALWAYS_DETAILED_SEC);
+ bool repeatBrief = Config_getBool(REPEAT_BRIEF);
+ bool briefMemberDesc = Config_getBool(BRIEF_MEMBER_DESC);
+@@ -2512,7 +2513,7 @@ bool MemberDefImpl::hasDetailedDescription() const
+ // the member has detailed documentation because the user added some comments
+ bool docFilter =
+ // extract all is enabled
+- extractAll ||
++ (extractAll && !xAllNoDetailedSec) ||
+ // has detailed docs
+ !documentation().isEmpty() ||
+ // has inbody docs
diff --git a/.devcontainer/doxygen-cgal/devcontainer.json b/.devcontainer/doxygen-cgal/devcontainer.json
new file mode 100644
index 00000000000..f1c9f05badb
--- /dev/null
+++ b/.devcontainer/doxygen-cgal/devcontainer.json
@@ -0,0 +1,16 @@
+{
+ "name": "CGAL Doxygen Dev Container, version 1.12.0, with CGAL patch",
+ "image": "docker.io/cgal/doxygen:1.12.0",
+ "features": {
+ "ghcr.io/devcontainers/features/git:1.3.2": {}
+ },
+ "customizations": {
+ "vscode": {
+ "extensions": [
+ "ms-vscode.cmake-tools",
+ "bbenoist.Doxygen",
+ "ms-vscode.cpptools"
+ ]
+ }
+ },
+}
\ No newline at end of file
diff --git a/.devcontainer/doxygen-cgal/distrobox.ini b/.devcontainer/doxygen-cgal/distrobox.ini
new file mode 100644
index 00000000000..55c7c546481
--- /dev/null
+++ b/.devcontainer/doxygen-cgal/distrobox.ini
@@ -0,0 +1,29 @@
+[distrobox-doxygen-1.12.0]
+image=cgal/doxygen:1.12.0
+exported_bins="/usr/local/bin/doxygen /usr/bin/perl /usr/bin/cmake /usr/bin/python3"
+exported_bins_path=$HOME/.local/bin-doxygen-1.12.0
+
+[distrobox-doxygen-1.11.0]
+image=cgal/doxygen:1.11.0
+exported_bins="/usr/local/bin/doxygen /usr/bin/perl /usr/bin/cmake /usr/bin/python3"
+exported_bins_path=$HOME/.local/bin-doxygen-1.11.0
+
+[distrobox-doxygen-1.10.0]
+image=cgal/doxygen:1.10.0
+exported_bins="/usr/local/bin/doxygen /usr/bin/perl /usr/bin/cmake /usr/bin/python3"
+exported_bins_path=$HOME/.local/bin-doxygen-1.10.0
+
+[distrobox-doxygen-1.9.8]
+image=cgal/doxygen:1.9.8
+exported_bins="/usr/local/bin/doxygen /usr/bin/perl /usr/bin/cmake /usr/bin/python3"
+exported_bins_path=$HOME/.local/bin-doxygen-1.9.8
+
+[distrobox-doxygen-1.9.7]
+image=cgal/doxygen:1.9.7
+exported_bins="/usr/local/bin/doxygen /usr/bin/perl /usr/bin/cmake /usr/bin/python3"
+exported_bins_path=$HOME/.local/bin-doxygen-1.9.7
+
+[distrobox-doxygen-1.9.6]
+image=cgal/doxygen:1.9.6
+exported_bins="/usr/local/bin/doxygen /usr/bin/perl /usr/bin/cmake /usr/bin/python3"
+exported_bins_path=$HOME/.local/bin-doxygen-1.9.6
diff --git a/.gitattributes b/.gitattributes
index 4211b302eb1..0c2e3c3b778 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -44,11 +44,9 @@ Documentation/Doxyfile text eol=lf
Documentation/pkglist_filter text eol=lf
Installation/update_CHANGES text eol=lf
Scripts/developer_scripts/autotest_cgal text eol=lf
-Scripts/developer_scripts/autotest_cgal_with_cmake text eol=lf
Scripts/developer_scripts/cgal_build text eol=lf
Scripts/developer_scripts/cgal_depend text eol=lf
Scripts/developer_scripts/cgal_git_update_hooks_for_client text eol=lf
-Scripts/developer_scripts/cgal_test_with_cmake text eol=lf
Scripts/developer_scripts/cgal2gml text eol=lf
Scripts/developer_scripts/check_library_uses_no_gpl_files text eol=lf
Scripts/developer_scripts/check_licenses text eol=lf
@@ -56,7 +54,6 @@ Scripts/developer_scripts/check_macro_names text eol=lf
Scripts/developer_scripts/check_no_CGAL_USE_without_includes_before text eol=lf
Scripts/developer_scripts/check_svn_keywords text eol=lf
Scripts/developer_scripts/create_cgal_test text eol=lf
-Scripts/developer_scripts/create_cgal_test_with_cmake text eol=lf
Scripts/developer_scripts/create_internal_release text eol=lf
Scripts/developer_scripts/create_new_release text eol=lf
Scripts/developer_scripts/detect_files_with_mixed_eol_styles text eol=lf
diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml
index 78d96aa94db..d93b3226731 100644
--- a/.github/workflows/checks.yml
+++ b/.github/workflows/checks.yml
@@ -7,9 +7,8 @@ permissions:
jobs:
build:
-
+ if: github.repository == 'CGAL/cgal' || github.event_name != 'push'
runs-on: ubuntu-latest
-
steps:
- uses: actions/checkout@v4
- name: install dependencies
@@ -17,7 +16,7 @@ jobs:
.github/install.sh
set -x
sudo apt-get update && sudo apt-get install -y graphviz ssh bibtex2html
- sudo pip install lxml
+ sudo pip install lxml
sudo pip install 'pyquery==1.4.1' # it seems to be the last py2 compatible version
wget --no-verbose -O doxygen_exe https://cgal.geometryfactory.com/~cgaltest/doxygen_1_8_13_patched/doxygen
sudo mv doxygen_exe /usr/bin/doxygen
diff --git a/.github/workflows/cmake-all.yml b/.github/workflows/cmake-all.yml
index 94c7dd8851e..f20755248c4 100644
--- a/.github/workflows/cmake-all.yml
+++ b/.github/workflows/cmake-all.yml
@@ -7,9 +7,8 @@ permissions:
jobs:
cmake-testsuite:
-
+ if: github.repository == 'CGAL/cgal' || github.event_name != 'push'
runs-on: ubuntu-latest
-
steps:
- uses: actions/checkout@v4
- name: install dependencies
@@ -21,9 +20,8 @@ jobs:
ctest -L Installation -j $(getconf _NPROCESSORS_ONLN)
cmake-testsuite-with-qt:
-
+ if: github.repository == 'CGAL/cgal' || github.event_name != 'push'
runs-on: ubuntu-latest
-
steps:
- uses: actions/checkout@v4
- name: install dependencies
diff --git a/.github/workflows/filter_testsuite.yml b/.github/workflows/filter_testsuite.yml
deleted file mode 100644
index 4aaf03a3140..00000000000
--- a/.github/workflows/filter_testsuite.yml
+++ /dev/null
@@ -1,75 +0,0 @@
-name: Filter Testsuite
-
-on:
- issue_comment:
- types: [created]
- workflow_dispatch:
-
-permissions: {}
-jobs:
- build:
- permissions:
- pull-requests: write # to create comment
-
- if: (github.event.comment.user.login == 'sloriot' || github.event.comment.user.login == 'lrineau') && contains(github.event.comment.body, '/testme')
- runs-on: ubuntu-latest
- steps:
- - uses: actions/github-script@v7
- id: get_label
- with:
- result-encoding: string
- script: |
- //get branch name and username
- const pr_url = context.payload.issue.pull_request.url
- const pr_content = await github.request(pr_url)
- const label = pr_content.data.head.label
- const base = pr_content.data.base.ref
- console.log(label)
- return label+":"+base
- - name: Run Testsuite
- run: |
- mkdir -p ~/.ssh
- #ssh key
- (
- cat <> ~/.ssh/id_rsa
- chmod 600 /home/runner/.ssh/id_rsa
- #ssh public key
- (
- cat <> ~/.ssh/id_rsa.pub
- chmod 644 /home/runner/.ssh/id_rsa.pub
- #known hosts
- wget --no-check-certificate https://cgal.geometryfactory.com/CGAL/ssh_known_hosts -O ~/.ssh/known_hosts
- #config file
- wget --no-check-certificate https://cgal.geometryfactory.com/CGAL/ssh_config -O ~/.ssh/config
- #list of hosts
- wget --no-check-certificate https://cgal.geometryfactory.com/CGAL/ssh_host_list -O ~/ssh_host_list
- #ssh command
- LABEL="${{ steps.get_label.outputs.result }}"
- USER_NAME=$(echo $LABEL | cut -d':' -f 1)
- BRANCH_NAME=$(echo $LABEL | cut -d':' -f 2)
- BASE=$(echo $LABEL | cut -d':' -f 3)
- PR_NUMBER=${{ github.event.issue.number }}
- mapfile -t HOSTS < ~/ssh_host_list;
- for i in ${!HOSTS[@]}; do
- HOST=$(echo ${HOSTS[$i]}|cut -d' ' -f 1 )
- PATH_TO_SCRIPT=$(echo ${HOSTS[$i]}|cut -d' ' -f 2 )
- echo "ssh ${HOST} ${PATH_TO_SCRIPT}/run_testsuite_from_branch_name.sh $USER_NAME $BRANCH_NAME $BASE $PR_NUMBER"
- ssh ${HOST} "${PATH_TO_SCRIPT}/run_testsuite_from_branch_name.sh $USER_NAME $BRANCH_NAME $BASE $PR_NUMBER"
- done
- - name: Post address
- uses: actions/github-script@v7
- with:
- script: |
- const address = "Testsuite launched. Results will appear on the following page: https://cgal.geometryfactory.com/~cgaltest/test_suite/TESTRESULTS/index.shtml "
- github.issues.createComment({
- owner: "CGAL",
- repo: "cgal",
- issue_number: ${{ github.event.issue.number }},
- body: address
- });
diff --git a/.gitignore b/.gitignore
index 381f7a9105f..93b7a9bfc90 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,7 +8,6 @@ AABB_tree/demo/AABB_tree/Makefile
AABB_tree/examples/AABB_tree/*.kdev*
AABB_tree/examples/AABB_tree/*_example
AABB_tree/examples/AABB_tree/Makefile
-AABB_tree/examples/AABB_tree/cgal_test_with_cmake
AABB_tree/test/AABB_tree/*.kdev*
AABB_tree/test/AABB_tree/Makefile
AABB_tree/test/AABB_tree/aabb_correctness_triangle_test
@@ -18,17 +17,14 @@ AABB_tree/test/AABB_tree/aabb_distance_triangle_test
AABB_tree/test/AABB_tree/aabb_intersection_triangle_test
AABB_tree/test/AABB_tree/aabb_naive_vs_tree_distance_segment_test
AABB_tree/test/AABB_tree/aabb_projection_triangle_test
-AABB_tree/test/AABB_tree/cgal_test_with_cmake
Algebraic_foundations/test/Algebraic_foundations/Algebraic_extension_traits
Algebraic_foundations/test/Algebraic_foundations/Algebraic_structure_traits
Algebraic_foundations/test/Algebraic_foundations/Chinese_remainder_traits
Algebraic_foundations/test/Algebraic_foundations/Coercion_traits
Algebraic_foundations/test/Algebraic_foundations/Real_embeddable_traits
Algebraic_foundations/test/Algebraic_foundations/Scalar_factor_traits
-Algebraic_foundations/test/Algebraic_foundations/cgal_test_with_cmake
Algebraic_foundations/test/Algebraic_foundations/extended_euclidean_algorithm
Algebraic_foundations/test/Algebraic_foundations/ipower
-Algebraic_kernel_d/test/Algebraic_kernel_d/cgal_test_with_cmake
Algebraic_kernel_d/test/Algebraic_kernel_d/rs_isolator
Alpha_shapes_2/demo/Alpha_shapes_2/Makefile
Alpha_shapes_2/demo/Alpha_shapes_2/alpha_shapes_2
@@ -37,7 +33,6 @@ Alpha_shapes_2/examples/Alpha_shapes_2/alpha_shapes_2
Alpha_shapes_3/demo/Alpha_shapes_3/Makefile
Alpha_shapes_3/demo/Alpha_shapes_3/alpha_shapes_3
Alpha_shapes_3/demo/Alpha_shapes_3/weighted_alpha_shapes_3
-Alpha_shapes_3/test/Alpha_shapes_3/cgal_test_with_cmake
Alpha_shapes_3/test/Alpha_shapes_3/test_alpha_shape_3
Alpha_shapes_3/test/Alpha_shapes_3/test_fixed_alpha_shape_3
Alpha_shapes_3/test/Alpha_shapes_3/test_weighted_alpha_shape_3
@@ -60,7 +55,6 @@ Arrangement_on_surface_2/examples/Arrangement_on_surface_2/batched_point_locatio
Arrangement_on_surface_2/examples/Arrangement_on_surface_2/bgl_dual_adapter
Arrangement_on_surface_2/examples/Arrangement_on_surface_2/bgl_primal_adapter
Arrangement_on_surface_2/examples/Arrangement_on_surface_2/bounded_planar_vertical_decomposition
-Arrangement_on_surface_2/examples/Arrangement_on_surface_2/cgal_test_with_cmake
Arrangement_on_surface_2/examples/Arrangement_on_surface_2/circles
Arrangement_on_surface_2/examples/Arrangement_on_surface_2/circular_arcs
Arrangement_on_surface_2/examples/Arrangement_on_surface_2/circular_line_arcs
@@ -103,30 +97,24 @@ Arrangement_on_surface_2/examples/Arrangement_on_surface_2/unbounded_rational_fu
Arrangement_on_surface_2/examples/Arrangement_on_surface_2/vertical_ray_shooting
Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_point_location.cpp
BGL/examples/BGL_arrangement_2/Makefile
-BGL/examples/BGL_arrangement_2/cgal_test_with_cmake
BGL/examples/BGL_arrangement_2/dual
BGL/examples/BGL_arrangement_2/primal
-BGL/test/BGL/cgal_test_with_cmake
Boolean_set_operations_2/demo/Boolean_set_operations_2/Makefile
Boolean_set_operations_2/demo/Boolean_set_operations_2/boolean_operations_2
Box_intersection_d/test/Box_intersection_d/automated_test
Box_intersection_d/test/Box_intersection_d/benchmark.data
Box_intersection_d/test/Box_intersection_d/benchmark_box_intersection
Box_intersection_d/test/Box_intersection_d/box_grid
-Box_intersection_d/test/Box_intersection_d/cgal_test_with_cmake
Box_intersection_d/test/Box_intersection_d/random_set_test
CGAL_ImageIO/demo/CGALimageIO/Makefile
-CGAL_ImageIO/demo/CGALimageIO/cgal_test_with_cmake
CGAL_ImageIO/demo/CGALimageIO/image_to_vtk_viewer
CGAL_ImageIO/examples/CGALimageIO/Makefile
-CGAL_ImageIO/examples/CGALimageIO/cgal_test_with_cmake
CGAL_ImageIO/examples/CGALimageIO/convert_raw_image_to_inr
CGAL_ImageIO/examples/CGALimageIO/makefile
CGAL_ImageIO/examples/CGALimageIO/test_imageio
CGAL_ImageIO/src/CGAL_ImageIO/Makefile
Circular_kernel_3/demo/Circular_kernel_3/Circular_kernel_3_demo
Circular_kernel_3/demo/Circular_kernel_3/Makefile
-Circular_kernel_3/test/Circular_kernel_3/cgal_test_with_cmake
Circular_kernel_3/test/Circular_kernel_3/test_Exact_spherical_kernel
Circular_kernel_3/test/Circular_kernel_3/test_Lazy_Spherical_kernel
Circular_kernel_3/test/Circular_kernel_3/test_Lazy_spherical_kernel_basics
@@ -137,7 +125,6 @@ Documentation/log/*.*
Documentation/output
Documentation/tags/*.*
Generator/examples/Generator/ball_d
-Generator/examples/Generator/cgal_test_with_cmake
Generator/examples/Generator/cube_d
Generator/examples/Generator/grid_d
Generator/examples/Generator/random_convex_set
@@ -149,7 +136,6 @@ Generator/examples/Generator/random_segments1
Generator/examples/Generator/random_segments2
Generator/examples/Generator/sphere_d
Generator/test/Generator/bug
-Generator/test/Generator/cgal_test_with_cmake
Generator/test/Generator/random_poly_test
Generator/test/Generator/rcs_test
Generator/test/Generator/test_combination_enumerator
@@ -178,7 +164,6 @@ GraphicsView/demo/Triangulation_2/Makefile
GraphicsView/demo/Triangulation_2/Regular_triangulation_2
GraphicsView/demo/Triangulation_2/qrc_*.cxx
GraphicsView/demo/Triangulation_2/ui_*.h
-HalfedgeDS/test/HalfedgeDS/cgal_test_with_cmake
HalfedgeDS/test/HalfedgeDS/test_hds
HalfedgeDS/test/HalfedgeDS/test_hds_decorator
Inscribed_areas/test/Inscribed_areas/Makefile
@@ -188,11 +173,8 @@ Installation/auxiliary/gdb/python/CGAL/printers.pyc
Installation/auxiliary/gdb/test
Installation/cmake/modules/*.tmp
Installation/test/Installation/cgal_test
-/Installation/test/Installation/cgal_test_with_cmake
Installation/test/Installation/deprecation_warning
-Interpolation/demo/Interpolation/cgal_test_with_cmake
Intersections_3/test/Intersections_3/bbox_other_do_intersect_test
-Intersections_3/test/Intersections_3/cgal_test_with_cmake
Intersections_3/test/Intersections_3/circle_other
Intersections_3/test/Intersections_3/line_line
Intersections_3/test/Intersections_3/segment_segment
@@ -206,7 +188,6 @@ Jet_fitting_3/examples/Jet_fitting_3/Single_estimation
Jet_fitting_3/examples/Jet_fitting_3/VC
Jet_fitting_3/test/Jet_fitting_3/Makefile
Jet_fitting_3/test/Jet_fitting_3/blind_1pt
-/Jet_fitting_3/examples/Jet_fitting_3/cgal_test_with_cmake
/Jet_fitting_3/examples/Jet_fitting_3/data_ellipe0.003.off.4ogl.txt
Kernel_23/test/Kernel_23/Cartesian
Kernel_23/test/Kernel_23/Dimension
@@ -220,7 +201,6 @@ Kernel_23/test/Kernel_23/Simple_cartesian
Kernel_23/test/Kernel_23/Simple_homogeneous
Kernel_23/test/Kernel_23/Test_IO.out
/Kernel_23/test/Kernel_23/Test-*IO.out
-Kernel_23/test/Kernel_23/cgal_test_with_cmake
Kernel_23/test/Kernel_23/test_kernel__
Kinetic_data_structures/demo/Kinetic_data_structures/Delaunay_triangulation_2
Kinetic_data_structures/demo/Kinetic_data_structures/Delaunay_triangulation_stable_subset_2
@@ -229,13 +209,11 @@ Kinetic_data_structures/demo/Kinetic_data_structures/KDS_Delaunay_triangulation_
Kinetic_data_structures/demo/Kinetic_data_structures/KDS_generate_data
Kinetic_data_structures/demo/Kinetic_data_structures/KDS_gui_2
Kinetic_data_structures/demo/Kinetic_data_structures/Makefile
-Kinetic_data_structures/demo/Kinetic_data_structures/cgal_test_with_cmake
Kinetic_data_structures/demo/Kinetic_data_structures/generate_data
Kinetic_data_structures/demo/Kinetic_data_structures/gui_2
Kinetic_data_structures/test/Kinetic_data_structures/Delaunay_triangulation_2
Kinetic_data_structures/test/Kinetic_data_structures/Delaunay_triangulation_3
Kinetic_data_structures/test/Kinetic_data_structures/active_objects_tables
-Kinetic_data_structures/test/Kinetic_data_structures/cgal_test_with_cmake
Kinetic_data_structures/test/Kinetic_data_structures/exact_kds
Kinetic_data_structures/test/Kinetic_data_structures/instantaneous_kernel
Kinetic_data_structures/test/Kinetic_data_structures/numbers
@@ -248,8 +226,6 @@ Kinetic_data_structures/test/Kinetic_data_structures/test_KDS_Delaunay_triangula
Kinetic_data_structures/test/Kinetic_data_structures/timings
Linear_cell_complex/demo/Linear_cell_complex/Linear_cell_complex_3.qrc.depends
Linear_cell_complex/demo/Linear_cell_complex/Linear_cell_complex_3_demo
-Linear_cell_complex/demo/Linear_cell_complex/cgal_test_with_cmake
-Linear_cell_complex/examples/Linear_cell_complex/cgal_test_with_cmake
Linear_cell_complex/examples/Linear_cell_complex/linear_cell_complex_3
Linear_cell_complex/examples/Linear_cell_complex/linear_cell_complex_3_triangulation
Linear_cell_complex/examples/Linear_cell_complex/linear_cell_complex_3_with_colored_vertices
@@ -297,7 +273,6 @@ Mesh_2/demo/Mesh_2/*.core
Mesh_2/demo/Mesh_2/*.moc
Mesh_2/demo/Mesh_2/.*.deps
Mesh_2/demo/Mesh_2/Makefile
-Mesh_2/demo/Mesh_2/cgal_test_with_cmake
Mesh_2/demo/Mesh_2/conform
Mesh_2/demo/Mesh_2/depends
Mesh_2/demo/Mesh_2/filename.edg
@@ -309,7 +284,6 @@ Mesh_2/demo/Mesh_2/semantic.cache
Mesh_2/doxygen
Mesh_2/examples/Mesh_2/*.core
Mesh_2/examples/Mesh_2/.*.deps
-Mesh_2/examples/Mesh_2/cgal_test_with_cmake
Mesh_2/examples/Mesh_2/conform
Mesh_2/examples/Mesh_2/conforming
Mesh_2/examples/Mesh_2/depends
@@ -324,7 +298,6 @@ Mesh_2/test/Mesh_2/*.core
Mesh_2/test/Mesh_2/.*.deps
Mesh_2/test/Mesh_2/Makefile
Mesh_2/test/Mesh_2/bench_double_map
-Mesh_2/test/Mesh_2/cgal_test_with_cmake
Mesh_2/test/Mesh_2/conform_plus
Mesh_2/test/Mesh_2/depends
Mesh_2/test/Mesh_2/my_makefile
@@ -373,7 +346,6 @@ Mesh_3/examples/Mesh_3/.*.deps
Mesh_3/examples/Mesh_3/random-image.inr
Mesh_3/examples/Mesh_3/Makefile
Mesh_3/examples/Mesh_3/applications
-Mesh_3/examples/Mesh_3/cgal_test_with_cmake
Mesh_3/examples/Mesh_3/cgal_to_medit
Mesh_3/examples/Mesh_3/chair-after.mesh
Mesh_3/examples/Mesh_3/chair-after.png
@@ -411,7 +383,6 @@ Mesh_3/examples/Mesh_3/test_off
/Mesh_3/test/Mesh_3/a.lua
/Mesh_3/test/Mesh_3/applications
/Mesh_3/test/Mesh_3/*.cgal
-/Mesh_3/test/Mesh_3/cgal_test_with_cmake
/Mesh_3/test/Mesh_3/cgal_to_medit
/Mesh_3/test/Mesh_3/combined_spheres
/Mesh_3/test/Mesh_3/combined_spheres-with-sphere-oracle
@@ -513,11 +484,9 @@ Min_ellipse_2/.tmp
Min_ellipse_2/Makefile
Min_ellipse_2/bin
Min_ellipse_2/doc_ps
-Minkowski_sum_3/test/Minkowski_sum_3/cgal_test_with_cmake
Nef_2/test/Nef_2/EPoint-test
Nef_2/test/Nef_2/Nef_polyhedron_2-test
Nef_2/test/Nef_2/Polynomial-test
-Nef_2/test/Nef_2/cgal_test_with_cmake
Nef_2/test/Nef_2/nef_2_point_location
Nef_3/demo/Nef_3/Makefile
Nef_3/examples/Nef_3/Makefile
@@ -575,7 +544,6 @@ Number_types/test/Number_types/_test_valid_finite_double
Number_types/test/Number_types/_test_valid_finite_float
Number_types/test/Number_types/bench_interval
Number_types/test/Number_types/cgal_test
-Number_types/test/Number_types/cgal_test_with_cmake
Number_types/test/Number_types/constant
Number_types/test/Number_types/double
Number_types/test/Number_types/doubletst
@@ -626,7 +594,6 @@ Periodic_3_triangulation_3/demo/Periodic_3_triangulation_3/moc_*.cpp
Periodic_3_triangulation_3/demo/Periodic_3_triangulation_3/ui_*.h
Periodic_3_triangulation_3/demo/Periodic_Lloyd_3/Periodic_Lloyd_3.qch
Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/Test_tds_IO_3
-Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/cgal_test_with_cmake
Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/test_periodic_3_alpha_shape_3
Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/test_periodic_3_delaunay_3
Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/test_periodic_3_delaunay_hierarchy_3
@@ -637,7 +604,6 @@ Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/test_periodic_3_trian
Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/test_periodic_3_triangulation_traits_H_3
Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/test_periodic_3_triangulation_traits_SC_3
Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/test_periodic_3_triangulation_traits_SH_3
-Point_set_2/test/Point_set_2/cgal_test_with_cmake
Point_set_2/test/Point_set_2/nearest_nb1
Point_set_2/test/Point_set_2/nearest_nb_fcn
Point_set_2/test/Point_set_2/range_search_fcn
@@ -683,7 +649,6 @@ Point_set_processing_3/test/Point_set_processing_3/smoothing_test
/Polygon_mesh_processing/test/Polygon_mesh_processing/elephant-oriented.off
/Polygon_mesh_processing/test/Polygon_mesh_processing/elephant-shuffled.off
/Polygon_mesh_processing/test/Polygon_mesh_processing/blobby_2cc_no_id.off
-/Polygon_mesh_processing/test/Polygon_mesh_processing/cgal_test_with_cmake
/Polygon_mesh_processing/test/Polygon_mesh_processing/data/U.polylines.txt.off
/Polygon_mesh_processing/test/Polygon_mesh_processing/data/hole1.txt.off
/Polygon_mesh_processing/test/Polygon_mesh_processing/data/hole2.txt.off
@@ -707,7 +672,6 @@ Polyhedron/demo/Polyhedron/snapshot.*
Polyhedron/demo/Polyhedron/ui_*.h
Polyhedron/test/Polyhedron/*.kdev*
Polyhedron/test/Polyhedron/Makefile
-Polyhedron/test/Polyhedron/cgal_test_with_cmake
Polyhedron/test/Polyhedron/test_polyhedron
Polynomial/test/Polynomial/Exponent_vector
Polynomial/test/Polynomial/Interpolator
@@ -715,7 +679,6 @@ Polynomial/test/Polynomial/Polynomial_traits_d
Polynomial/test/Polynomial/Polynomial_type_generator
Polynomial/test/Polynomial/Polynomial_using_core
Polynomial/test/Polynomial/Polynomial_using_leda
-Polynomial/test/Polynomial/cgal_test_with_cmake
Polynomial/test/Polynomial/modular_gcd_utcf_algorithm_M
Polynomial/test/Polynomial/modular_gcd_utcf_dfai
Polynomial/test/Polynomial/modular_gcd_utcf_pure_wang
@@ -745,10 +708,8 @@ Polytope_distance_d/.obj
Polytope_distance_d/.tmp
Polytope_distance_d/Makefile
Polytope_distance_d/bin
-Polytope_distance_d/test/Polytope_distance_d/cgal_test_with_cmake
Polytope_distance_d/test/Polytope_distance_d/test_Polytope_distance_d_d
Principal_component_analysis/test/Principal_component_analysis/bounding_box
-Principal_component_analysis/test/Principal_component_analysis/cgal_test_with_cmake
Principal_component_analysis/test/Principal_component_analysis/linear_least_squares_fitting_circles_2
Principal_component_analysis/test/Principal_component_analysis/linear_least_squares_fitting_cuboids_3
Principal_component_analysis/test/Principal_component_analysis/linear_least_squares_fitting_points_2
@@ -773,7 +734,6 @@ Principal_component_analysis/test/Principal_component_analysis/test_linear_least
Principal_component_analysis/test/Principal_component_analysis/test_linear_least_squares_fitting_tetrahedra_3
Principal_component_analysis/test/Principal_component_analysis/test_linear_least_squares_fitting_triangles_2
Principal_component_analysis/test/Principal_component_analysis/test_linear_least_squares_fitting_triangles_3
-/Profiling_tools/test/Profiling_tools/cgal_test_with_cmake
/Profiling_tools/test/Profiling_tools/test_memory_sizer
/Profiling_tools/test/Profiling_tools/test_timer
QP_solver/documentation/Degeneracies.aux
@@ -805,7 +765,6 @@ Ridges_3/examples/Ridges_3/Compute_Ridges_Umbilics
Ridges_3/examples/Ridges_3/Makefile
Ridges_3/test/Ridges_3/Makefile
Ridges_3/test/Ridges_3/ridge_test
-STL_Extension/test/STL_Extension/cgal_test_with_cmake
STL_Extension/test/STL_Extension/test_Cache
STL_Extension/test/STL_Extension/test_Compact_container
STL_Extension/test/STL_Extension/test_Concatenate_iterator
@@ -827,7 +786,6 @@ STL_Extension/test/STL_Extension/test_nth_element
STL_Extension/test/STL_Extension/test_stl_extension
STL_Extension/test/STL_Extension/test_type_traits
STL_Extension/test/STL_Extension/test_vector
-SearchStructures/test/RangeSegmentTrees/cgal_test_with_cmake
SearchStructures/test/RangeSegmentTrees/test_segment_tree_set_2
Skin_surface_3/.cdtproject
Skin_surface_3/.project
@@ -838,7 +796,6 @@ Skin_surface_3/test/Skin_surface_3/err.txt
Skin_surface_3/test/Skin_surface_3/makefile
Skin_surface_3/test/Skin_surface_3/msgs.txt
Skin_surface_3/test/Skin_surface_3/subdivision_test
-Spatial_sorting/test/Spatial_sorting/cgal_test_with_cmake
Stream_lines_2/demo/Stream_lines_2/Makefile
Stream_lines_2/demo/Stream_lines_2/streamlines
Surface_mesh_parameterization/examples/Surface_mesh_parameterization/*.eps
@@ -966,20 +923,15 @@ Triangulation/test/Triangulation/output-pcds*
Triangulation/test/Triangulation/pc
Triangulation/test/Triangulation/pcds
Triangulation/test/Triangulation/torture
-/Triangulation/examples/Triangulation/cgal_test_with_cmake
-/Triangulation/test/Triangulation/cgal_test_with_cmake
/Triangulation/test/Triangulation/output-tds-*
-Triangulation_2/cgal_test_with_cmake
Triangulation_2/demo/Triangulation_2/Makefile
Triangulation_2/demo/Triangulation_2/constrained
Triangulation_2/demo/Triangulation_2/constrained_delaunay_triangulation_2
Triangulation_2/demo/Triangulation_2/delaunay_triangulation_2
Triangulation_2/demo/Triangulation_2/regular_triangulation_2
-Triangulation_2/examples/Triangulation_2/cgal_test_with_cmake
Triangulation_2/examples/Triangulation_2/regular
Triangulation_2/test/Triangulation_2/Makefile
Triangulation_2/test/Triangulation_2/T??.triangulation
-Triangulation_2/test/Triangulation_2/cgal_test_with_cmake
Triangulation_2/test/Triangulation_2/file_tds*
Triangulation_2/test/Triangulation_2/makefile
Triangulation_2/test/Triangulation_2/test_cdt_degenerate_case
@@ -997,10 +949,8 @@ Triangulation_2/test/Triangulation_2/test_triangulation_2_bis
Triangulation_2/test/Triangulation_2/test_triangulation_geom_traits
Triangulation_2/test/Triangulation_2/test_triangulation_tds
Triangulation_2/test/Triangulation_2/vrml_tds*
-Triangulation_3/benchmark/Triangulation_3/cgal_test_with_cmake
Triangulation_3/benchmark/Triangulation_3/simple
Triangulation_3/examples/Triangulation_3/adding_handles_3
-Triangulation_3/examples/Triangulation_3/cgal_test_with_cmake
Triangulation_3/examples/Triangulation_3/color
Triangulation_3/examples/Triangulation_3/fast_location_3
Triangulation_3/examples/Triangulation_3/find_conflicts_3
@@ -1026,7 +976,6 @@ Triangulation_3/test/Triangulation_3/Test8_triangulation_IO_3_binary
Triangulation_3/test/Triangulation_3/Test??_triangulation_IO_3
Triangulation_3/test/Triangulation_3/Test?_triangulation_IO_3
Triangulation_3/test/Triangulation_3/Test_tds_IO_3
-Triangulation_3/test/Triangulation_3/cgal_test_with_cmake
Triangulation_3/test/Triangulation_3/makefile
Triangulation_3/test/Triangulation_3/test_delaunay_3
Triangulation_3/test/Triangulation_3/test_delaunay_hierarchy_3
@@ -1083,7 +1032,6 @@ ProgramOutput*
ErrorOutput*
CompilerOutput*
error.txt
-cgal_test_with_cmake.log
# File created by the Semantic Bovinator (an Emacs package)
semantic.cache
@@ -1140,9 +1088,7 @@ Doxyfile
gmon.*
# Unsorted file names:
-/Point_set_processing_3/test/Point_set_processing_3/cgal_test_with_cmake
/Point_set_processing_3/test/Point_set_processing_3/read_test
-/Nef_S2/test/Nef_S2/cgal_test_with_cmake
/Arrangement_on_surface_2/test/Arrangement_on_surface_2/construction_test_suite_generator
/Arrangement_on_surface_2/test/Arrangement_on_surface_2/ex_kernel_point
/Arrangement_on_surface_2/test/Arrangement_on_surface_2/ex_kernel_segment
@@ -1190,15 +1136,11 @@ gmon.*
/Principal_component_analysis/examples/Principal_component_analysis/barycenter
/Principal_component_analysis/examples/Principal_component_analysis/bounding_box
/Principal_component_analysis/examples/Principal_component_analysis/centroid
-/Principal_component_analysis/examples/Principal_component_analysis/cgal_test_with_cmake
/Principal_component_analysis/examples/Principal_component_analysis/linear_least_squares_fitting_points_2
/Principal_component_analysis/examples/Principal_component_analysis/linear_least_squares_fitting_triangles_3
-/Polygon/examples/Polygon/cgal_test_with_cmake
-/Polygon/test/Polygon/cgal_test_with_cmake
/Polygon/test/Polygon/polytest.ascii
/Polygon/test/Polygon/polytest.binary
/Polygon/test/Polygon/polytest.pretty
-/Stream_support/test/Stream_support/cgal_test_with_cmake
/*.html
/Snap_rounding_2/test/Snap_rounding_2/data/out
Polygonal_surface_reconstruction/examples/build*
diff --git a/.markdownlint.json b/.markdownlint.json
new file mode 100644
index 00000000000..70106c515ce
--- /dev/null
+++ b/.markdownlint.json
@@ -0,0 +1,7 @@
+{
+ "default": true,
+ "line-length": false,
+ "no-duplicate-heading": {
+ "siblings_only": true
+ }
+}
diff --git a/AABB_tree/benchmark/AABB_tree/CMakeLists.txt b/AABB_tree/benchmark/AABB_tree/CMakeLists.txt
index 63ac01c5851..bfcbb5454fa 100644
--- a/AABB_tree/benchmark/AABB_tree/CMakeLists.txt
+++ b/AABB_tree/benchmark/AABB_tree/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(AABB_traits_benchmark)
find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Core)
@@ -13,7 +13,7 @@ create_single_source_cgal_program("tree_construction.cpp")
find_package(benchmark QUIET)
if(benchmark_FOUND)
create_single_source_cgal_program("tree_creation.cpp")
- target_link_libraries(tree_creation benchmark::benchmark)
+ target_link_libraries(tree_creation PRIVATE benchmark::benchmark)
else()
message(STATUS "NOTICE: The benchmark 'tree_creation.cpp' requires the Google benchmark library, and will not be compiled.")
endif()
diff --git a/AABB_tree/demo/AABB_tree/CMakeLists.txt b/AABB_tree/demo/AABB_tree/CMakeLists.txt
index eabac21335c..3af9388139f 100644
--- a/AABB_tree/demo/AABB_tree/CMakeLists.txt
+++ b/AABB_tree/demo/AABB_tree/CMakeLists.txt
@@ -1,6 +1,6 @@
# This is the CMake script for compiling the AABB tree demo.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(AABB_tree_Demo)
# Find includes in corresponding build directories
diff --git a/AABB_tree/examples/AABB_tree/CMakeLists.txt b/AABB_tree/examples/AABB_tree/CMakeLists.txt
index 620a79dccdb..ba856721722 100644
--- a/AABB_tree/examples/AABB_tree/CMakeLists.txt
+++ b/AABB_tree/examples/AABB_tree/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(AABB_tree_Examples)
find_package(CGAL REQUIRED)
diff --git a/AABB_tree/test/AABB_tree/CMakeLists.txt b/AABB_tree/test/AABB_tree/CMakeLists.txt
index 72cd7d066a2..1e13ff0ba26 100644
--- a/AABB_tree/test/AABB_tree/CMakeLists.txt
+++ b/AABB_tree/test/AABB_tree/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(AABB_tree_Tests)
find_package(CGAL REQUIRED)
diff --git a/Advancing_front_surface_reconstruction/examples/Advancing_front_surface_reconstruction/CMakeLists.txt b/Advancing_front_surface_reconstruction/examples/Advancing_front_surface_reconstruction/CMakeLists.txt
index 3378a510767..255045d782d 100644
--- a/Advancing_front_surface_reconstruction/examples/Advancing_front_surface_reconstruction/CMakeLists.txt
+++ b/Advancing_front_surface_reconstruction/examples/Advancing_front_surface_reconstruction/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Advancing_front_surface_reconstruction_Examples)
find_package(CGAL REQUIRED)
diff --git a/Advancing_front_surface_reconstruction/test/Advancing_front_surface_reconstruction/CMakeLists.txt b/Advancing_front_surface_reconstruction/test/Advancing_front_surface_reconstruction/CMakeLists.txt
index 27973a058d8..23e1dd2529b 100644
--- a/Advancing_front_surface_reconstruction/test/Advancing_front_surface_reconstruction/CMakeLists.txt
+++ b/Advancing_front_surface_reconstruction/test/Advancing_front_surface_reconstruction/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Advancing_front_surface_reconstruction_Tests)
find_package(CGAL REQUIRED)
diff --git a/Algebraic_foundations/examples/Algebraic_foundations/CMakeLists.txt b/Algebraic_foundations/examples/Algebraic_foundations/CMakeLists.txt
index 186e8a01b2e..7150fdadd62 100644
--- a/Algebraic_foundations/examples/Algebraic_foundations/CMakeLists.txt
+++ b/Algebraic_foundations/examples/Algebraic_foundations/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Algebraic_foundations_Examples)
find_package(CGAL REQUIRED)
diff --git a/Algebraic_foundations/test/Algebraic_foundations/CMakeLists.txt b/Algebraic_foundations/test/Algebraic_foundations/CMakeLists.txt
index 467fdca406f..170d443ae71 100644
--- a/Algebraic_foundations/test/Algebraic_foundations/CMakeLists.txt
+++ b/Algebraic_foundations/test/Algebraic_foundations/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Algebraic_foundations_Tests)
find_package(CGAL REQUIRED COMPONENTS Core)
diff --git a/Algebraic_kernel_d/examples/Algebraic_kernel_d/CMakeLists.txt b/Algebraic_kernel_d/examples/Algebraic_kernel_d/CMakeLists.txt
index f93c12d0950..a06ae073399 100644
--- a/Algebraic_kernel_d/examples/Algebraic_kernel_d/CMakeLists.txt
+++ b/Algebraic_kernel_d/examples/Algebraic_kernel_d/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Algebraic_kernel_d_Examples)
find_package(CGAL REQUIRED COMPONENTS Core)
diff --git a/Algebraic_kernel_d/test/Algebraic_kernel_d/CMakeLists.txt b/Algebraic_kernel_d/test/Algebraic_kernel_d/CMakeLists.txt
index 1e6570dd393..0f0d16a3c9c 100644
--- a/Algebraic_kernel_d/test/Algebraic_kernel_d/CMakeLists.txt
+++ b/Algebraic_kernel_d/test/Algebraic_kernel_d/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Algebraic_kernel_d_Tests)
# CGAL and its components
diff --git a/Algebraic_kernel_for_circles/test/Algebraic_kernel_for_circles/CMakeLists.txt b/Algebraic_kernel_for_circles/test/Algebraic_kernel_for_circles/CMakeLists.txt
index 424bd86fd28..f957c0e835c 100644
--- a/Algebraic_kernel_for_circles/test/Algebraic_kernel_for_circles/CMakeLists.txt
+++ b/Algebraic_kernel_for_circles/test/Algebraic_kernel_for_circles/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Algebraic_kernel_for_circles_Tests)
find_package(CGAL REQUIRED)
diff --git a/Algebraic_kernel_for_spheres/test/Algebraic_kernel_for_spheres/CMakeLists.txt b/Algebraic_kernel_for_spheres/test/Algebraic_kernel_for_spheres/CMakeLists.txt
index 637387543f2..0167d0c1d98 100644
--- a/Algebraic_kernel_for_spheres/test/Algebraic_kernel_for_spheres/CMakeLists.txt
+++ b/Algebraic_kernel_for_spheres/test/Algebraic_kernel_for_spheres/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Algebraic_kernel_for_spheres_Tests)
find_package(CGAL REQUIRED)
diff --git a/Alpha_shapes_2/examples/Alpha_shapes_2/CMakeLists.txt b/Alpha_shapes_2/examples/Alpha_shapes_2/CMakeLists.txt
index 493cacad635..35daf075ee4 100644
--- a/Alpha_shapes_2/examples/Alpha_shapes_2/CMakeLists.txt
+++ b/Alpha_shapes_2/examples/Alpha_shapes_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Alpha_shapes_2_Examples)
find_package(CGAL REQUIRED)
diff --git a/Alpha_shapes_2/test/Alpha_shapes_2/CMakeLists.txt b/Alpha_shapes_2/test/Alpha_shapes_2/CMakeLists.txt
index a4b13149993..94a0b7a934b 100644
--- a/Alpha_shapes_2/test/Alpha_shapes_2/CMakeLists.txt
+++ b/Alpha_shapes_2/test/Alpha_shapes_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Alpha_shapes_2_Tests)
find_package(CGAL REQUIRED)
diff --git a/Alpha_shapes_3/demo/Alpha_shapes_3/CMakeLists.txt b/Alpha_shapes_3/demo/Alpha_shapes_3/CMakeLists.txt
index 1028c6f4ea4..097684b274e 100644
--- a/Alpha_shapes_3/demo/Alpha_shapes_3/CMakeLists.txt
+++ b/Alpha_shapes_3/demo/Alpha_shapes_3/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Alpha_shapes_3_Demo)
# Find includes in corresponding build directories
diff --git a/Alpha_shapes_3/examples/Alpha_shapes_3/CMakeLists.txt b/Alpha_shapes_3/examples/Alpha_shapes_3/CMakeLists.txt
index 04f6565859d..892c164faa2 100644
--- a/Alpha_shapes_3/examples/Alpha_shapes_3/CMakeLists.txt
+++ b/Alpha_shapes_3/examples/Alpha_shapes_3/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Alpha_shapes_3_Examples)
find_package(CGAL REQUIRED)
diff --git a/Alpha_shapes_3/test/Alpha_shapes_3/CMakeLists.txt b/Alpha_shapes_3/test/Alpha_shapes_3/CMakeLists.txt
index e4aca061940..fe6da11668c 100644
--- a/Alpha_shapes_3/test/Alpha_shapes_3/CMakeLists.txt
+++ b/Alpha_shapes_3/test/Alpha_shapes_3/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Alpha_shapes_3_Tests)
find_package(CGAL REQUIRED)
diff --git a/Alpha_wrap_3/benchmark/Alpha_wrap_3/CMakeLists.txt b/Alpha_wrap_3/benchmark/Alpha_wrap_3/CMakeLists.txt
index 23150027c4f..c118956dcbf 100644
--- a/Alpha_wrap_3/benchmark/Alpha_wrap_3/CMakeLists.txt
+++ b/Alpha_wrap_3/benchmark/Alpha_wrap_3/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Alpha_wrap_3_Benchmark)
find_package(CGAL REQUIRED)
diff --git a/Alpha_wrap_3/benchmark/Alpha_wrap_3/Quality/quality_benchmark.cpp b/Alpha_wrap_3/benchmark/Alpha_wrap_3/Quality/quality_benchmark.cpp
index f8e54c488a4..12fa0690c9d 100644
--- a/Alpha_wrap_3/benchmark/Alpha_wrap_3/Quality/quality_benchmark.cpp
+++ b/Alpha_wrap_3/benchmark/Alpha_wrap_3/Quality/quality_benchmark.cpp
@@ -75,7 +75,7 @@ double mean_min_angle(const Mesh& mesh)
const Triangle_3 tr = surface_mesh_face_to_triangle(f, mesh);
std::array angles = triangle_angles(tr);
- FT min_angle = std::min({angles[0], angles[1], angles[2]});
+ FT min_angle = (std::min)({angles[0], angles[1], angles[2]});
min_angle = min_angle * (180.0 / CGAL_PI);
mean_min_angle += min_angle;
@@ -93,7 +93,7 @@ double mean_max_angle(const Mesh& mesh)
const Triangle_3 tr = surface_mesh_face_to_triangle(f, mesh);
std::array angles = triangle_angles(tr);
- FT max_angle = std::max({angles[0], angles[1], angles[2]});
+ FT max_angle = (std::max)({angles[0], angles[1], angles[2]});
max_angle = max_angle * (180.0 / CGAL_PI);
mean_max_angle += max_angle;
@@ -151,8 +151,8 @@ double mean_edge_ratio(const Mesh& mesh,
FT a = std::sqrt(CGAL::squared_distance(tr[0], tr[1]));
FT b = std::sqrt(CGAL::squared_distance(tr[1], tr[2]));
FT c = std::sqrt(CGAL::squared_distance(tr[2], tr[0]));
- FT min_edge = std::min({a, b, c});
- FT max_edge = std::max({a, b, c});
+ FT min_edge = (std::min)({a, b, c});
+ FT max_edge = (std::max)({a, b, c});
FT edge_ratio = max_edge / min_edge;
mean_edge_ratio += edge_ratio;
@@ -181,7 +181,7 @@ double mean_aspect_ratio(const Mesh& mesh,
FT c = std::sqrt(CGAL::squared_distance(tr[2], tr[0]));
FT s = 0.5 * (a + b + c);
FT inscribed_radius = std::sqrt((s * (s - a) * (s - b) * (s - c)) / s);
- FT max_edge = std::max({a, b, c});
+ FT max_edge = (std::max)({a, b, c});
FT aspect_ratio = max_edge / inscribed_radius;
aspect_ratio /= (2. * std::sqrt(3.)); // normalized
mean_aspect_ratio += aspect_ratio;
diff --git a/Alpha_wrap_3/examples/Alpha_wrap_3/CMakeLists.txt b/Alpha_wrap_3/examples/Alpha_wrap_3/CMakeLists.txt
index 8a1c8d1b9fe..ed779a17df5 100644
--- a/Alpha_wrap_3/examples/Alpha_wrap_3/CMakeLists.txt
+++ b/Alpha_wrap_3/examples/Alpha_wrap_3/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Alpha_wrap_3_Examples)
find_package(CGAL REQUIRED)
diff --git a/Alpha_wrap_3/test/Alpha_wrap_3/CMakeLists.txt b/Alpha_wrap_3/test/Alpha_wrap_3/CMakeLists.txt
index d719fae8a63..4281c1efcda 100644
--- a/Alpha_wrap_3/test/Alpha_wrap_3/CMakeLists.txt
+++ b/Alpha_wrap_3/test/Alpha_wrap_3/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Alpha_wrap_3_Tests)
find_package(CGAL REQUIRED)
diff --git a/Apollonius_graph_2/examples/Apollonius_graph_2/CMakeLists.txt b/Apollonius_graph_2/examples/Apollonius_graph_2/CMakeLists.txt
index 8b4217331c6..758309e7dc0 100644
--- a/Apollonius_graph_2/examples/Apollonius_graph_2/CMakeLists.txt
+++ b/Apollonius_graph_2/examples/Apollonius_graph_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Apollonius_graph_2_Examples)
find_package(CGAL REQUIRED COMPONENTS Core)
diff --git a/Apollonius_graph_2/test/Apollonius_graph_2/CMakeLists.txt b/Apollonius_graph_2/test/Apollonius_graph_2/CMakeLists.txt
index c9d061984c7..51ea8576fa6 100644
--- a/Apollonius_graph_2/test/Apollonius_graph_2/CMakeLists.txt
+++ b/Apollonius_graph_2/test/Apollonius_graph_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Apollonius_graph_2_Tests)
find_package(CGAL REQUIRED)
diff --git a/Arithmetic_kernel/test/Arithmetic_kernel/CMakeLists.txt b/Arithmetic_kernel/test/Arithmetic_kernel/CMakeLists.txt
index 2b62b5b12c9..a2df1177140 100644
--- a/Arithmetic_kernel/test/Arithmetic_kernel/CMakeLists.txt
+++ b/Arithmetic_kernel/test/Arithmetic_kernel/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Arithmetic_kernel_Tests)
find_package(CGAL REQUIRED COMPONENTS Core)
diff --git a/Arrangement_on_surface_2/benchmark/Arrangement_on_surface_2/Option_parser.cpp b/Arrangement_on_surface_2/benchmark/Arrangement_on_surface_2/Option_parser.cpp
index a1032551da2..02a1b3e92df 100644
--- a/Arrangement_on_surface_2/benchmark/Arrangement_on_surface_2/Option_parser.cpp
+++ b/Arrangement_on_surface_2/benchmark/Arrangement_on_surface_2/Option_parser.cpp
@@ -54,7 +54,7 @@ void validate(std::any & v, const std::vector & values,
Option_parser::my_validate(v, values);
}
-/*! Constructor */
+/*! constructs */
Option_parser::Option_parser() :
m_generic_opts("Generic options"),
m_config_opts("Configuration options"),
@@ -136,7 +136,7 @@ Option_parser::Option_parser() :
m_positional_opts.add("input-file", -1);
}
-/*! Parse the options */
+/*! parses the options */
void Option_parser::operator()(int argc, char * argv[])
{
po::store(po::command_line_parser(argc, argv).
@@ -225,20 +225,20 @@ void Option_parser::operator()(int argc, char * argv[])
}
}
-/*! Obtain the base file-name */
+/*! obtains the base file-name */
const std::string & Option_parser::get_file_name(unsigned int i) const
{
return m_variable_map["input-file"].as()[i];
}
-/*! Obtain the full file-name */
+/*! obtains the full file-name */
const std::string & Option_parser::get_full_name(unsigned int i) const
{ return m_full_names[i]; }
-/*! Obtain number of type options */
+/*! obtains number of type options */
unsigned int Option_parser::get_number_opts(Type_id &)
{ return sizeof(s_type_opts) / sizeof(char *); }
-/*! Obtain number of strategy options */
+/*! obtains number of strategy options */
unsigned int Option_parser::get_number_opts(Strategy_id &)
{ return sizeof(s_strategy_opts) / sizeof(char *); }
diff --git a/Arrangement_on_surface_2/benchmark/Arrangement_on_surface_2/Option_parser.hpp b/Arrangement_on_surface_2/benchmark/Arrangement_on_surface_2/Option_parser.hpp
index a20f3b804c2..edca2243def 100644
--- a/Arrangement_on_surface_2/benchmark/Arrangement_on_surface_2/Option_parser.hpp
+++ b/Arrangement_on_surface_2/benchmark/Arrangement_on_surface_2/Option_parser.hpp
@@ -62,17 +62,17 @@ public:
typedef Vector_strategy_id::iterator Vector_strategy_id_iter;
public:
- /*! \brief obtains number of type options */
+ /*! obtains number of type options */
static unsigned int get_number_opts(Type_id &);
- /*! \brief obtains number of strategy options */
+ /*! obtains number of strategy options */
static unsigned int get_number_opts(Strategy_id &);
- /*! Compare the i-th type option to a given option */
+ /*! compares the i-th type option to a given option */
static bool compare_opt(unsigned int i, const char * opt, Type_id &)
{ return strcmp(s_type_opts[i], opt) == 0; }
- /*! Compare the i-th strategy option to a given option */
+ /*! compares the i-th strategy option to a given option */
static bool compare_opt(unsigned int i, const char * opt, Strategy_id &)
{ return strcmp(s_strategy_opts[i], opt) == 0; }
@@ -94,19 +94,19 @@ public:
Input_file_missing_error(std::string & str) : error(str) {}
};
- /*! Parse the options */
+ /*! parses the options */
void operator()(int argc, char * argv[]);
- /*! Obtain the verbosity level */
+ /*! obtains the verbosity level */
unsigned int get_verbose_level() const { return m_verbose_level; }
- /*! Obtain the number of input files */
+ /*! obtains the number of input files */
unsigned int get_number_files() const { return m_number_files; }
- /*! \brief obtains the base file-name */
+ /*! obtains the base file-name */
const std::string & get_file_name(unsigned int i) const;
- /*! \brief obtains the full file-name */
+ /*! obtains the full file-name */
const std::string & get_full_name(unsigned int i) const;
bool get_postscript() const { return m_postscript; }
@@ -117,10 +117,10 @@ public:
const char * get_strategy_name(Strategy_code id) const
{ return s_strategy_opts[id]; }
- /*! Obtain the window width */
+ /*! obtains the window width */
unsigned int get_width() const { return m_win_width; }
- /*! Obtain the window height */
+ /*! obtains the window height */
unsigned int get_height() const { return m_win_height; }
template
diff --git a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2/CMakeLists.txt b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2/CMakeLists.txt
index 990e8d5092e..5e94ede8117 100644
--- a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2/CMakeLists.txt
+++ b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2/CMakeLists.txt
@@ -1,6 +1,6 @@
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Arrangement_on_surface_2_Demo)
if(NOT POLICY CMP0070 AND POLICY CMP0053)
diff --git a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/CMakeLists.txt b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/CMakeLists.txt
index fa18ff35df6..332c3deada6 100644
--- a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/CMakeLists.txt
+++ b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/CMakeLists.txt
@@ -1,6 +1,6 @@
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Arrangement_on_surface_2_earth_Demo)
if(NOT POLICY CMP0070 AND POLICY CMP0053)
diff --git a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/GUI_country_pick_handler.cpp b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/GUI_country_pick_handler.cpp
index 58bc34f3ca2..53f7aba4972 100644
--- a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/GUI_country_pick_handler.cpp
+++ b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/GUI_country_pick_handler.cpp
@@ -62,7 +62,7 @@ void GUI_country_pick_handler::mouse_press_event(QMouseEvent* e) {
auto sd = sqrt(d);
auto t1 = (-b - sd) / (2 * a);
auto t2 = (-b + sd) / (2 * a);
- if (t1 > 0 && t2 > 0) ti = std::min(t1, t2);
+ if (t1 > 0 && t2 > 0) ti = (std::min)(t1, t2);
else if (t1 > 0) ti = t1;
else ti = t2;
}
diff --git a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/Main_widget.cpp b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/Main_widget.cpp
index f99c6c7e55b..decff54e3d5 100644
--- a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/Main_widget.cpp
+++ b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/Main_widget.cpp
@@ -140,7 +140,7 @@ void Main_widget::initializeGL() {
for (auto& [country_name, triangle_points] : country_triangles_map) {
auto country_triangles = std::make_unique(triangle_points);
auto color = QVector4D(rndm(), rndm(), rndm(), 1);
- auto m = std::max(color.x(), std::max(color.y(), color.z()));
+ auto m = (std::max)(color.x(), (std::max)(color.y(), color.z()));
color /= m;
color *= m_dimming_factor;
color.setW(1);
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Arrangement_on_surface_2.txt b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Arrangement_on_surface_2.txt
index 5b4b9ed9051..64d3604362f 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Arrangement_on_surface_2.txt
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Arrangement_on_surface_2.txt
@@ -9,9 +9,9 @@ namespace CGAL {
\authors Ron Wein, Eric Berberich, Efi Fogel, Dan Halperin,
Michael Hemmer, Oren Salzman, and Baruch Zukerman
-
+
\section aos_sec-intro Introduction
-
+
Geometric arrangements, or arrangements for short, are subdivisions of
some space induced by geometric objects.
@@ -42,9 +42,9 @@ computational-geometry literature and have many applications; see,
e.g., \cgalCite{as-aa-00}, \cgalCite{cgal:bfhks-apsca-10},
\cgalCite{cgal:bfhmw-apsgf-10}, and \cgalCite{cgal:h-a-04}.
-
+
\subsection aos_ssec-intro-sep Separation of Topology and Geometry
-
+
The use of the generic programming paradigm enables a convenient
separation of the topology and the geometry of data
@@ -123,9 +123,9 @@ themselves. The precise minimal sets of requirements the actual traits
classes must conform to are organized as a hierarchy of concepts; see
Section \ref aos_sec-geom_traits.
-
+
\subsection aos_ssec-intro-well_behaved Well-Behaved Curves
-
+
What constitutes valid curves that can be handled by the \ref
PkgArrangementOnSurface2 package is discussed in detail in Section
@@ -168,13 +168,14 @@ Remarks
of segments in all the polylines together. The same holds for the
more general type polycurve, which are piecewise curves
that are not necessarily linear; see Section \ref
- arr_sssectr_polycurves.
+ arr_sssectr_polycurves.
+
-
+
\subsection aos_ssec-intro-outline Outline
-
+
In Section \ref aos_sec-basic we provide the minimum material you need
to know in order to use \cgal 2D arrangements in the plane. In Section
@@ -207,9 +208,9 @@ to apply the graph algorithms implemented in the Boost Graph Library
to arrangement types. Finally, in Section \ref aos_sec-tips we provide
some tips that can be applied to expedite computation.
-
+
\section aos_sec-basic Basic Arrangements
-
+
We start with a formal definition of two-dimensional arrangements, and
proceed with an introduction to the data structure used to represent
@@ -220,9 +221,9 @@ describe a central component in the \ref PkgArrangementOnSurface2
package, namely, the `Arrangement_2` class-template, which can be used
to represent arrangements in the plane.
-
+
\subsection aos_ssec-basic-dcel Representation of Arrangements: The Dcel
-
+
Given a set \f$\mathcal{C}\f$ of curves embedded in a two-dimensional
surface, the arrangement \f$\mathcal{A}(\mathcal{C})\f$ is
@@ -346,7 +347,7 @@ theoretically, the former are degenerate holes. See
\dcel features. For more details on the \dcel data structure see
\cgalCite{bkos-cgaa-00} Chapter 2.
-
+
\cgalFigureBegin{aos_fig-arr_segs,arr_segs.png}
An arrangement of interior-disjoint line segments with some of the
\dcel records that represent it. The unbounded face \f$ f_0\f$ has
@@ -364,11 +365,11 @@ adjacent faces \f$ f_3\f$ and \f$ f_4\f$, while the other hole
comprises of two edges. \f$ f_1\f$ also contains two isolated vertices
\f$ u_1\f$ and \f$ u_2\f$ in its interior.
\cgalFigureEnd
-
+
-
+
\subsection aos_ssec-basic-arr_class The Arrangement Class Template
-
+
One of the main components of the \ref PkgArrangementOnSurface2
package is the `Arrangement_2` class template. An
@@ -502,9 +503,9 @@ int main() {
}
\endcode
-
+
\subsection arr_ssectraverse Traversing the Arrangement
-
+
The simplest and most fundamental arrangement operations are the
various traversal methods, which allow users to systematically go over
@@ -573,9 +574,9 @@ The call \link Arrangement_on_surface_2::non_const_handle()
`non_const_handle()`\endlink can be issued only if the arrangement
object `arr` is mutable; see, e.g., Section \ref arr_ssecpl.
-
+
\subsubsection arr_sssectr_vertex Traversal Methods for an Arrangement Vertex
-
+
A vertex \f$v\f$ of an arrangement induced by bounded curves is always
associated with a geometric entity, namely with an \link
@@ -625,9 +626,9 @@ If \f$v\f$ is an isolated vertex, the call \link
Arrangement_on_surface_2::Vertex::face() `v->face()`\endlink can be used to
obtain the face that contains \f$v\f$.
-
+
\subsubsection arr_sssectr_halfedge Traversal Methods for an Arrangement Halfedge
-
+
A halfedge \f$e\f$ of an arrangement induced by bounded curves is
associated with an \link Arrangement_on_surface_2::X_monotone_curve_2
@@ -698,9 +699,9 @@ void print_ccb(typename Arrangement::Ccb_halfedge_const_circulator circ) {
}
\endcode
-
+
\subsubsection arr_sssectr_face Traversal Methods for an Arrangement Face
-
+
An `Arrangement_2` object `arr` that identifies an arrangement of
bounded curves always has a single unbounded face. The call \link
@@ -811,9 +812,9 @@ void print_arrangement (const Arrangement_2& arr) {
}
\endcode
-
+
\subsection arr_ssecmodify Modifying the Arrangement
-
+
In this section we review the various member functions of the
`Arrangement_2` class that allow users to modify the topological
@@ -834,9 +835,9 @@ terms of the specialized insertion functions, we start by describing
the fundamental functionality of the arrangement class, and describe
the operation of the free functions in Section \ref arr_secgl_funcs.
-
+
\subsection arr_sssecmf_insert_cv Inserting Pairwise Disjoint x-Monotone Curves
-
+
The most trivial functions that allow users to modify the arrangement
are the specialized functions for the insertion of an \f$x\f$-monotone
@@ -858,7 +859,7 @@ free functions that operate on the arrangement and the inserted
curve(s); see Section \ref arr_secgl_funcs for more details and
examples.
-
+
\cgalFigureBegin{aos_fig-insert,insert.png}
Illustrations of the various specialized insertion procedures. The
inserted \f$x\f$-monotone curve is drawn as a dashed line, surrounded
@@ -874,7 +875,7 @@ endpoints of which correspond to existing vertices \f$u_1\f$ and
\f$f'\f$. The hole \f$h_1\f$, which belonged to \f$f\f$ before
the insertion, becomes a hole in this new face.
\cgalFigureEnd
-
+
When an \f$x\f$-monotone curve is inserted into an existing
arrangement, such that the interior of this curve is disjoint from the
@@ -965,14 +966,14 @@ halfedge directed from \f$v_1\f$ to \f$v_2\f$.
-
+
\cgalFigureBegin{aos_fig-edge_insertion,edge_insertion.png}
The arrangement of the line segments \f$s_1, \ldots, s_5\f$
constructed in \ref Arrangement_on_surface_2/edge_insertion.cpp.
The arrows mark the direction of the halfedges returned from the
various insertion functions.
\cgalFigureEnd
-
+
The program below demonstrates the usage of the four specialized
insertion functions. It creates an arrangement of five line segments
@@ -1030,9 +1031,9 @@ typedef Arrangement::Halfedge_handle Halfedge_handle;
typedef Arrangement::Face_handle Face_handle;
\endcode
-
+
\subsection arr_sssecmf_iso_verts Manipulating Isolated Vertices
-
+
Isolated points are simpler geometric entities than curves, and indeed
the member functions that manipulate them are easier to understand.
@@ -1052,14 +1053,14 @@ function
accepts a handle to an isolated vertex and removes it from the
arrangement.
-
+
\cgalFigureBegin{aos_fig-isolated_vertices,isolated_vertices.png}
An arrangement of line segments containing three isolated vertices,
as constructed in \ref Arrangement_on_surface_2/isolated_vertices.cpp.
The vertices \f$u_2\f$ and \f$u_3\f$ are eventually removed from the
arrangement.
\cgalFigureEnd
-
+
The following program demonstrates the usage of the arrangement
member-functions for manipulating isolated vertices. It first inserts
@@ -1073,9 +1074,9 @@ isolated vertices that are still contained in the unbounded face
\cgalExample{Arrangement_on_surface_2/isolated_vertices.cpp}
-
+
\subsection arr_sssecmf_halfedges Manipulating Halfedges
-
+
While reading the previous subsection you learned how to insert new
points that induce isolated vertices into the arrangement. You may
@@ -1136,7 +1137,7 @@ Arrangement_on_surface_2::remove_edge `remove_edge()`\endlink
indicating whether the source or the target vertices are to be removed
should they become isolated.
-
+
\cgalFigureBegin{aos_fig-edge_manipulation,edge_manipulation.png}
The three steps of the example program \ref
Arrangement_on_surface_2/edge_manipulation.cpp. In Step (a) it
@@ -1148,7 +1149,7 @@ arrangement, rendering its end vertices \f$u_1\f$ and \f$u_2\f$
redundant. We therefore remove these vertices by merging their
incident edges and go back to the arrangement depicted in (a).
\cgalFigureEnd
-
+
The following example program shows how the edge-manipulation
functions can be used. The program works in three steps, as
@@ -1188,7 +1189,7 @@ functions are of little use. However, you should keep in mind that
there may be extraneous data (probably non-geometric) associated with
the point objects or with the curve objects, as defined by the traits
class. With these two functions you can modify this data; see more
-details in Section \ref arr_ssecmeta_tr. In addition, you can use
+details in Section \ref arr_sssec_tr_data_decorators. In addition, you can use
these functions to replace a geometric object (a point or a curve)
with an equivalent object that has a more compact representation. For
example, if we use some simple rational-number type to represent the
@@ -1197,9 +1198,9 @@ point coordinates, we can replace the point \f$(\frac{20}{40},
equivalent point with normalized coordinates, namely \f$(\frac{1}{2},
3)\f$.
-
+
\subsection arr_sssecadv_insert Advanced Insertion Functions
-
+
\cgalAdvancedBegin
@@ -1255,14 +1256,14 @@ respectively, that correspond to the curve endpoints. The other one
accepts a handle to one vertex and a handle to the predecessor
halfedge around the other vertex.
-
+
\cgalFigureBegin{aos_fig-special_edge_insertion,special_edge_insertion.png}
An arrangement of line segments, as constructed in
\ref Arrangement_on_surface_2/special_edge_insertion.cpp. Note that
\f$p_0\f$ is initially inserted as an isolated point and later on
connected to the other four vertices.
\cgalFigureEnd
-
+
The following program shows how to construct the arrangement
depicted in \cgalFigureRef{aos_fig-special_edge_insertion} using the specialized
@@ -1279,9 +1280,9 @@ in the public interface of the arrangement class. Instead, the
arrangement operations; see more details in the Reference Manual.
\cgalAdvancedEnd
-
+
\section arr_secqueries Issuing Queries on an Arrangement
-
+
One of the most useful query types defined on arrangements is the
point-location query: Given a point, find the arrangement
@@ -1295,9 +1296,9 @@ play an important role in the incremental construction of arrangements
Section \ref arr_secgl_funcs). Therefore, it is crucial to have the
ability to answer such queries effectively.
-
+
\subsection arr_ssecpl Point-Location Queries
-
+
Recall that the arrangement representation is decoupled from the
geometric algorithms that operate on it. Thus, the `Arrangement_2`
@@ -1397,9 +1398,9 @@ void print_point_location
}
\endcode
-
+
\subsection aos_sssec-pl_strategy Choosing a Point-Location Strategy
-
+
Each of the various point-location class templates employs a different
algorithm or strategy\cgalFootnote{The term strategy
@@ -1437,14 +1438,15 @@ vary according to the user choice.} for answering queries:
points or choosing points on a grid, are also available; see the
Reference Manual for more details.
- The landmark strategy requires that the type of the attached
- arrangement be an instance of the `Arrangement_2` class
- template, where the `Traits` parameter is substituted by a
- geometry-traits class that models the `ArrangementLandmarkTraits_2`
- concept, which refines the basic `ArrangementBasicTraits_2` concept;
- see Section \ref aos_sssec-tr_landmarks_concept for details. Most
- traits classes included in the \ref PkgArrangementOnSurface2 package
- are models of this refined concept.
+ The arrangement attached to the landmark strategy must be either (i)
+ an instance of the `Arrangement_2` class template, where
+ the `Traits` parameter is substituted by a geometry-traits class
+ that models the `ArrangementLandmarkTraits_2` concept, or (ii) an
+ instance of the `Arrangement_on_surface_2`
+ class template, where the `GeomTraits` is similarly substituted;
+ see Section \ref aos_sssec-tr_landmarks_concept for details about
+ this concept. Most traits classes included in the \ref
+ PkgArrangementOnSurface2 package are models of this refined concept.
`Arr_trapezoid_ric_point_location` implements an
improved variant of Mulmuley's point-location algorithm
@@ -1491,7 +1493,7 @@ educational purposes, and thus we do not elaborate on this strategy.
The data structure needed by the landmark and the trapezoidal map RIC
strategies can be constructed in \cgalBigO{N \log N} time, where \f$N\f$
is the overall number of edges in the arrangement, but the constant
-hidden in the \cgalBigO{ } notation for the trapezoidal map RIC strategy
+hidden in the \cgalBigO{~} notation for the trapezoidal map RIC strategy
is much larger. Thus, construction needed by the landmark algorithm is
in practice significantly faster than the construction needed by the
trapezoidal map RIC strategy. In addition, although both resulting
@@ -1519,7 +1521,7 @@ dynamic and is frequently going through changes, the
`Arr_trapezoid_ric_point_location` class template should be the
selected point-location strategy.
-
+
\cgalFigureBegin{aos_fig-point_location,point_location.png}
The arrangement of line segments, as constructed in \ref
Arrangement_on_surface_2/point_location.cpp, \ref
@@ -1528,7 +1530,7 @@ Arrangement_on_surface_2/batched_point_location.cpp. The arrangement
vertices are drawn as small rings, while the query points \f$q_1,
\ldots, q_6\f$ are drawn as crosses.
\cgalFigureEnd
-
+
The program listed below constructs a simple arrangement of five line
segments that form a pentagonal face, with a single isolated
@@ -1546,9 +1548,9 @@ Note that the program uses the `locate_point()` function template
to locate a point and nicely print the result of each query; see
\ref lst_pl "code example" in Section \ref arr_ssecpl.
-
+
\subsection arr_ssecray_shoot Vertical Ray Shooting
-
+
Another query frequently issued on arrangements is the vertical
ray-shooting query: Given a query point, which arrangement cell
@@ -1624,9 +1626,9 @@ arrangement and the query points are exactly the same as in
\cgalFigureRef{aos_fig-point_location}.
\cgalExample{Arrangement_on_surface_2/vertical_ray_shooting.cpp}
-
+
\subsection arr_ssecbatched_pl Batched Point-Location
-
+
Suppose that at a given moment our application has to issue a
relatively large number \f$m\f$ of point-location queries on a
@@ -1666,9 +1668,9 @@ is essentially equivalent to the six separate queries performed in
\ref arr_ssecpl.
\cgalExample{Arrangement_on_surface_2/batched_point_location.cpp}
-
+
\section arr_secgl_funcs Free Functions
-
+
The `Arrangement_on_surface_2` class template is used to represent
subdivisions of two-dimensional surfaces induced by curves that lie on
@@ -1689,9 +1691,9 @@ defines the minimal set of geometric primitives, among other things,
required to perform the algorithms of the surface-sweep and
zone-construction frameworks.
-
+
\subsection arr_ssec_zone The Zone Construction Algorithm
-
+
Given an arrangement of curves \f$\mathcal{A} =
\mathcal{A}(\mathcal{C})\f$ embedded in a two-dimensional surface, the
@@ -1710,9 +1712,9 @@ operations that incrementally construct arrangements induced by sets
of curves that lie in two-dimensional surfaces. For simplicity,
however, we continue to consider arrangements embedded in the plane.
-
+
-
+
Section \ref aos_ssec-basic-arr_class explains how to construct
arrangements of \f$x\f$-monotone curves that are pairwise disjoint in
@@ -1721,9 +1723,9 @@ arrangement is known. Here we relax this constraint, and allow the
location of the inserted \f$x\f$-monotone curve endpoints to be
unknown at the time of insertion.
-
+
\subsubsection arr_sssecinsert_non_x Inserting Pairwise Disjoint Curves
-
+
We retain, for the moment, the requirement that the interior of the
inserted curve is disjoint from all existing arrangement edges and
@@ -1764,9 +1766,9 @@ the walk point-location type, namely, an instance of the
`Arr_walk_along_line_point_location` class template, and uses it to
insert the curve.
-
+
\subsubsection arr_sssecinsert_x_mon Inserting X-monotone Curves
-
+
The time it takes to insert a curve \f$c\f$ using the
`insert_non_intersecting_curve()` function template is the sum of the
@@ -1800,7 +1802,7 @@ the variant `CGAL::insert<>(arr, c)` is also available). The
running-time of this insertion function is proportional to the
complexity of the zone of the curve \f$c\f$.
-
+
\cgalAdvancedBegin In some cases users may have a prior knowledge of
the location of the left endpoint of the \f$x\f$-monotone curve
\f$c\f$ they wish to insert, so they can perform the insertion without
@@ -1817,11 +1819,11 @@ Arrangement_on_surface_2::Halfedge_const_handle
Arrangement_on_surface_2::Face_const_handle
`Face_const_handle`\endlink; see also Section \ref arr_ssecpl.
\cgalAdvancedEnd
-
+
-
+
\subsubsection aos_ssec-insert_gen Inserting General Curves
-
+
So far, all the examples have constructed arrangements of line
segments, where the `Arrangement_2` template was instantiated with an
@@ -1863,9 +1865,9 @@ performs the insertion of the curve \f$c\f$ that does not need to be
`pl`, or use the default walk point-location strategy by calling
`CGAL::insert<>(arr, c)`.
-
+
\subsubsection arr_sssecinsert_point Inserting Points
-
+
The `Arrangement_2` class template has a member function that inserts
a point as an isolated vertex in a given face. The free function
@@ -1895,11 +1897,11 @@ template instantiated with a traits class that models the
`ArrangementXMonotoneTraits_2` concept, as the insertion operation may
involve the splitting of curves.
-
+
\subsubsection arr_sssecinsert_ex Inserting Intersecting Line Segments (code example)
-
+
-
+
\cgalFigureBegin{aos_fig-incremental_insertion,incremental_insertion.png}
An arrangement of five intersecting line segments, as constructed in
\ref Arrangement_on_surface_2/incremental_insertion.cpp and
@@ -1909,7 +1911,7 @@ vertices that correspond to intersection points are marked by
circles. The query point \f$q\f$ is marked with a cross and the face
that contains it is shaded.
\cgalFigureEnd
-
+
The program below constructs an arrangement of five intersecting
line-segments \f$s_1, \ldots, s_5\f$. It is known that \f$s_1\f$ and
@@ -1943,9 +1945,9 @@ quantitative measures of the arrangement; see \ref lst_paz
\cgalExample{Arrangement_on_surface_2/incremental_insertion.cpp}
-
+
\subsection arr_ssseczone Other Zone Related Functions
-
+
In this section we have described so far free functions that insert
curves and points into a given arrangement. Now we describe functions
@@ -1988,9 +1990,9 @@ instance of the `Arr_walk_along_line_point_location` class template,
and uses it to locate the endpoint. The traits type must model the
`ArrangementXMonotoneTraits_2` concept.
-
+
\subsection arr_ssec_sweep The Surface-Sweep Algorithm
-
+
The famous plane-sweep algorithm introduced by Bentley and Ottmann was
originally formulated for sets of line segments in the plane. The \ref
@@ -2007,9 +2009,9 @@ this section, such as aggregately constructing an arrangement induced
by a set of curves that lie in a two-dimensional surface and outputting
the overlay of two arrangements.
-
+
-
+
Given a set of \f$n\f$ input curves, you can insert the curves in the
set into an arrangement incrementally one by one. However, the \ref
@@ -2038,8 +2040,8 @@ so it must be construct from scratch.
In the first case, we sweep over the input curves, compute their
intersection points, and construct the \dcel that represents their
-arrangement. This process is performed in \cgalBigO{left((n + k)\log
-n\right} time, where \f$k\f$ is the total number of intersection
+arrangement. This process is performed in \cgalBigO{(n + k)\log
+n} time, where \f$k\f$ is the total number of intersection
points. The running time is asymptotically better than the time needed
for incremental insertion if the arrangement is relatively sparse
(when \f$k\f$ is \cgalBigO{\frac{n^2}{\log n}}), but it is recommended
@@ -2074,7 +2076,7 @@ edges in the arrangement. If \f$n\f$ is very small compared to
insert the curves one by one. For larger input sets, we use the
aggregate insertion procedures.
-
+
\cgalFigureBegin{aos_fig-global_insertion,global_insertion.png} An
arrangement of intersecting line segments, as constructed in \ref
Arrangement_on_surface_2/global_insertion.cpp. The segments of
@@ -2082,7 +2084,7 @@ Arrangement_on_surface_2/global_insertion.cpp. The segments of
\f$\mathcal{S}_2\f$ are drawn in dark dashed lines. Note that the
segment \f$ s\f$ (light dashed line) overlaps one of the segments in
\f$\mathcal{S}_1\f$. \cgalFigureEnd
-
+
The program below aggregately construct an arrangement of a set
\f$\mathcal{S}_1\f$ containing five line segments (drawn as solid
@@ -2127,9 +2129,9 @@ The `CGAL::insert_non_intersecting_curves<>()` function template
aggregately inserts a set of \f$x\f$-monotone pairwise interior-disjoint
curves into an arrangement.
-
+
\subsection arr_ssecgl_remove Removing Vertices and Edges
-
+
The free functions `remove_vertex()` and `remove_edge()` handle the
removal of vertices and edges from an arrangement, respectively. The
@@ -2173,9 +2175,9 @@ and \f$s_4\f$.
\cgalExample{Arrangement_on_surface_2/global_removal.cpp}
-
+
\subsection arr_ssec_decompose Vertical Decomposition
-
+
As you have already seen, an arrangement face may have a fairly
complicated structure; its outer boundary may be very large, and it
@@ -2210,7 +2212,7 @@ vertex and the remaining one is vertical.
-
+
\cgalFigureBegin{aos_fig-bounded_vd,bounded_vertical_decomposition.png}
An arrangement of four line segments and its vertical decomposition
into pseudo trapezoids, as constructed in \ref
@@ -2218,7 +2220,7 @@ Arrangement_on_surface_2/bounded_vertical_decomposition.cpp. The
segments of the arrangement are drawn in solid blue lines and the
segments of the vertical decomposition are drawn in dark dotted lines.
\cgalFigureEnd
-
+
In the case of an arrangement of line segments, two-dimensional cells
of the former type are trapezoids (as they have a pair of parallel
@@ -2290,9 +2292,9 @@ above (respectively below) \f$v\f$ returned by the function template
\cgalAdvancedEnd
-
+
\section aos_sec-unbounded Arrangements of Unbounded Curves
-
+
All the arrangements constructed and manipulated in previous chapters
were induced only by line segments, which are, in particular, bounded
@@ -2304,9 +2306,9 @@ this section to lines and rays. However, the discussion in this
section, as well as the software described, apply more generally to
arbitrary curves in two-dimensional surfaces.
-
+
\subsection aos_ssec-unbounded-rep Representing Arrangements of Unbounded Curves
-
+
Given a set \f$\mathcal{C}\f$ of unbounded curves, a simple approach
for representing the arrangement induced by \f$\mathcal{C}\f$ would be
@@ -2321,7 +2323,7 @@ we are not given all the curves inducing the arrangement in advance,
then the choice of a good bounding rectangle may change as more curves
are introduced.
-
+
\cgalFigureBegin{aos_fig-unb_dcel,unb_dcel.png}
A \dcel representing an arrangement of four lines. Halfedges are
drawn as thin arrows. The vertices \f$v_1, \ldots, v_8\f$ lie at
@@ -2333,7 +2335,7 @@ that bounds the actual arrangement. The four fictitious vertices
\f$v_{\rm bl}, v_{\rm tl}, v_{\rm br}\f$ and \f$v_{\rm tr}\f$
represent the four corners of the imaginary bounding rectangle.
\cgalFigureEnd
-
+
Instead of an explicit approach, we use an implicit bounding rectangle
embedded in the \dcel structure. \cgalFigureRef{aos_fig-unb_dcel}
@@ -2405,13 +2407,13 @@ bounding rectangle as follows:
-
+
\cgalFigureBegin{aos_fig-unb_asymptote,unb_asymptote.png}
The portions of a horizontal line, a vertical line, and two rectangular
hyperbolas with horizontal and vertical asymptotes confined to the
imaginary bounding rectangle.
\cgalFigureEnd
-
+
A vertex (at infinity) of Type 2 or Type 3 above always has three
incident edges---one concrete edge that is associated with an
@@ -2437,9 +2439,9 @@ that all input curves that induce a particular arrangement are
bounded, define your arrangement accordingly. That is, use a traits
class that does not support unbounded curves.
-
+
\subsubsection arr_sssecunb_basic Basic Manipulation and Traversal Methods
-
+
The types \link Arrangement_on_surface_2::Vertex `Vertex`\endlink,
\link Arrangement_on_surface_2::Halfedge `Halfedge`\endlink, and \link
@@ -2642,12 +2644,12 @@ defined by the traits class-template `Arr_linear_traits_2` to
be the corresponding types of the kernel used to instantiate the
traits class-template; see Paragraph \ref arr_sssectr_linear.
-
+
\cgalFigureBegin{aos_fig-unbounded_non_intersecting,unbounded_non_intersecting.png}
An arrangement of unbounded linear objects, as constructed in
\ref Arrangement_on_surface_2/unbounded_non_intersecting.cpp.
\cgalFigureEnd
-
+
The first three curves, \f$c_1\f$, \f$c_2\f$, and \f$c_3\f$, are
inserted using the specialized insertion functions for
@@ -2696,9 +2698,9 @@ typedef Arrangement::Halfedge_handle Halfedge_handle;
typedef Arrangement::Face_handle Face_handle;
\endcode
-
+
\subsubsection arr_sssec-unb_global Free Functions
-
+
All the free functions that operate on arrangements of bounded curves
(see Section \ref arr_secgl_funcs) can also be applied to arrangements
@@ -2724,9 +2726,9 @@ point has finite coordinates. Note that all the point-location
strategies mentioned above, except the trapezoidal map strategy, are
capable of handling arrangements of unbounded curves.
-
+
\subsection arr_ssec-unb_duality Point-Line Duality
-
+
In the following example we show how an arrangement of unbounded lines
is utilized to solve the following problem: Given a set of points,
@@ -2752,9 +2754,9 @@ introduced, and inserted into the arrangement. This operation is
followed by a test that verifies that a vertex of degree greater than
\f$4\f$ exists.
-
+
\section aos_sec-curved_surfaces Arrangements on Curved Surfaces
-
+
We are given a surface \f$S\f$ in \f$\mathbb{R}^3\f$ and a set
\f$\mathcal{C}\f$ of curves embedded in this surface. The curves
@@ -2798,9 +2800,9 @@ Various two-dimensional parametric surfaces, arrangements on which
are supported by the framework.
\cgalFigureCaptionEnd
-
+
\subsection aos_ssec-curved_surfaces-parameteric Parametric Surfaces
-
+
We use \f$\overline{\mathbb{R}}\f$ to denote the compactified real line
\f$\mathbb{R} \cup \{-\infty,+\infty\}\f$. The mapping
@@ -2939,9 +2941,9 @@ t_2\f$. For instance, every Meridian curve of a sphere parameterized
as above is vertical. An \f$x\f$-monotone curve is either
vertical or strongly \f$x\f$-monotone.
-
+
\subsection aos_ssec-curved_surfaces-aos_class The Arrangement on Surface Class Template
-
+
The class template `Arrangement_on_surface_2`
can be used to represent a 2D arrangement embedded in a 3D
@@ -3005,9 +3007,9 @@ Sites are drawn in red and Voronoi edges are drawn in blue.
(d) A degenerate power diagram of 14 sites on the sphere.
\cgalFigureCaptionEnd
-
+
\subsection aos_ssec-curved_surfaces-basic Basic Manipulation and Traversal Methods
-
+
The types \link Arrangement_on_surface_2::Vertex `Vertex`\endlink,
\link Arrangement_on_surface_2::Halfedge `Halfedge`\endlink, and \link
@@ -3184,9 +3186,9 @@ bool is_in_x_range(const typename GeometryTraits::X_monotone_curve_2& c,
\cgalAdvancedEnd
-
+
\section aos_sec-geom_traits The Geometry Traits
-
+
A geometry traits class encapsulates the definitions of the geometric
entities and the implementation of the geometric predicates and
@@ -3227,9 +3229,9 @@ geometric traits classes. A decorator of a traits class attaches
auxiliary data to the geometric objects handled by the original traits
class, thereby extending it.
-
+
\subsection aos_ssec-geom_traits-concepts The Hierarchy of the Geometry Traits Concepts
-
+
A hierarchy of related concepts can be viewed as a directed acyclic
graph, where a node of the graph represents a concept and an arc
@@ -3243,15 +3245,15 @@ clusters of the graph and describe the relations between them.
\cgalFigureRef{aos_fig-central_concept_cluster} depicts the central
cluster.
-
+
\cgalFigureBegin{aos_fig-central_concept_cluster,central_concept_cluster.png}
The hierarchy of the main geometry traits concepts.
\cgalFigureEnd
-
+
-
+
\subsubsection aos_sssec-geom_traits-concepts_basic The Basic Concept
-
+
A model of the basic concept `ArrangementBasicTraits_2` needs to
define the types \link ArrangementBasicTraits_2::Point_2
@@ -3358,9 +3360,9 @@ Each of those types must be convertible
to the type `Arr_oblivious_side_tag` for the class to be a model of
the concept `ArrangementBasicTraits_2`.
-
+
\subsubsection aos_sssec-geom_traits-concepts_intersecting Intersections
-
+
Constructing an arrangement induced by \f$x\f$-monotone curves that
may intersect in their interior requires operations that are not part
@@ -3436,9 +3438,9 @@ Otherwise, it is not possible to merge \f$x\f$-monotone curve and
redundant vertices may be left in the arrangement due to the removal of
edges.
-
+
\subsubsection aos_sssec-geom_traits-concepts_arbitrary Supporting Arbitrary Curves
-
+
The concept `ArrangementTraits_2` refines the
`ArrangementXMonotoneTraits_2` concept. A model of the refined concept
@@ -3472,16 +3474,16 @@ ArrangementTraits_2::Curve_2 `Curve_2`\endlink or a range of objects
of that type. In all other cases it is sufficient to use a model of
the `ArrangementXMonotoneTraits_2` concept.
-
+
\subsubsection aos_sssec-tr_landmarks_concept The Landmark Concept
-
+
-
+
\cgalFigureBegin{aos_fig-landmark_concept_cluster,landmark_concept_cluster.png}
The traits-concept hierarchy for arrangements associated with the landmark
point-location strategy.
\cgalFigureEnd
-
+
The type of an arrangement associated with the landmark point-location
strategy (see Section \ref arr_ssecpl) must be an instance of the
@@ -3528,9 +3530,9 @@ an \f$x\f$-monotone curve connecting \f$p_1\f$ and \f$p_2\f$.
Most traits classes model the `ArrangementTraits_2` concept, and some
also model the `ArrangementLandmarkTraits_2` concept.
-
+
\subsubsection aos_sssec-tr_additional_concepts The Construct Curve Concept
-
+
The concept `ArrangementConstructCurveTraits_2` refines the concept
`ArrangementTraits_2`. A model of the
@@ -3551,9 +3553,9 @@ when `Arr_polyline_traits_2` is instantiated must be
a geometry-traits class that models the concept `ArrangementConstructCurveTraits_2`
to enable the construction of polylines from a sequence of two or more points.
-
+
\subsubsection aos_ssec-traits-curved Supporting Unbounded Curves or Curved Surfaces
-
+
We descend to the bottom level of the hierarchy. The refinements
described in this section provide the requirements imposed on traits
@@ -3625,13 +3627,13 @@ Section \ref arr_ssectr_segs) only handle bounded curves. Thus, the
four category types nested in these models are defined to be
`Arr_oblivious_side_tag`.
-
+
\cgalFigureBegin{aos_fig-open_concept_hierarchy,open_concept_hierarchy.png}
Bottom portion of the refinement hierarchy of the geometry-traits
concepts for curves embedded in an open surface, for instance, the
entire plane.
\cgalFigureEnd
-
+
Several predicates are required to handle \f$x\f$-monotone curves that
approach the boundary of the parameter space. These predicates are
@@ -3653,12 +3655,12 @@ instantiated with a model of the `ArrangementOpenBoundaryTraits_2`
concept.\cgalFootnote{A curve that reaches the boundary of the
parameter space in this case is open and unbounded.}
-
+
\cgalFigureBegin{aos_fig-spherical_concept_hierarchy,spherical_concept_hierarchy.png}
Bottom portion of the refinement hierarchy of the geometry-traits
concepts for curves embedded in a sphere-like parameterized surface
\cgalFigureEnd
-
+
A suitable geometry-traits component for arrangements embedded in
surfaces homeomorphic to a sphere is a model of the combined concept
@@ -3667,14 +3669,14 @@ surfaces homeomorphic to a sphere is a model of the combined concept
vertical sides of the parameter space are identified and the two
horizontal sides are contracted.
-
+
\cgalFigureBegin{aos_fig-left_side_cluster,left_side_cluster.png}
Top portion of the refinement hierarchy of the geometry-traits
concepts for curves that either reach the left side of the boundary
of the parameter space or approach it. A similar hierarchy also
exists for the right, bottom, and top sides.
\cgalFigureEnd
-
+
The shared requirements for the four options of a side are collected
in abstract layers called `ArrangementLeftSideTraits_2`,
@@ -3682,14 +3684,14 @@ in abstract layers called `ArrangementLeftSideTraits_2`,
`ArrangementTopSideTraits_2`; see, e.g.,
\cgalFigureRef{aos_fig-left_side_cluster}.
-
+
\cgalFigureBegin{aos_fig-side_clusters,side_clusters.png}
Top portion of the refinement hierarchy of the geometry-traits
concepts for curves that either reach the vertical sides of the
boundary of the parameter space or approach it, and similarly for
curves that either reach or approach horizontal sides.
\cgalFigureEnd
-
+
The shared requirements for the options of opposite sides are
collected in two additional abstract layers called
@@ -3697,14 +3699,14 @@ collected in two additional abstract layers called
`ArrangementHorizontalSideTraits_2`; see
\cgalFigureRef{aos_fig-side_clusters}.
-
+
\cgalFigureBegin{aos_fig-identified_clusters,identified_clusters.png}
Top portion of the refinement hierarchy of the geometry-traits
concepts for curves that reach the identified vertical sides of the
parameter space and for curves that reach the identified horizontal
sides of the parameter space.
\cgalFigureEnd
-
+
Individual concepts for curves that reach the identified left side of
the parameter space and for curves that reach the identified right
@@ -4019,9 +4021,9 @@ boundary.
-
+
\subsection aos_ssec-geom_traits-models Models of the Geometry Traits Concepts
-
+
In this section we review the traits classes that are models of
concepts introduced in the previous sections. They handle line
@@ -4031,9 +4033,9 @@ subsection describes decorators for geometric traits classes
distributed with \cgal, which extend geometric traits-classes by
attaching auxiliary data with the geometric objects.
-
+
\subsubsection arr_ssectr_segs Traits Classes for Line Segments and Linear Objects
-
+
There are two distinct traits classes that handle line segments. One
caches information in the curve records (see Section \ref
@@ -4046,9 +4048,9 @@ intersections). Another model handles not only (bounded) line
segments, but also rays and lines; see Section \ref
arr_sssectr_linear.
-
+
\paragraph arr_sssectr_caching_segs The Caching Segment-Traits Class
-
+
An instance of the `Arr_segment_traits_2` class template used
in most example programs so far is instantiated by substituting the
@@ -4112,13 +4114,13 @@ predefined filtered kernel
`Exact_predicates_exact_constructions_kernel` is used to instantiate
the line-segment traits class.
-
+
\cgalFigureBegin{aos_figpredef_kernels,fan_grids.png,Europe.png}
(a) An arrangement of \f$104\f$ line segments from the input file
`fan_grids.dat`. (b) An arrangement of more than \f$3000\f$ interior
disjoint line segments, defined in the input file `Europe.dat`.
\cgalFigureEnd
-
+
In the following example we use the predefined
`Exact_predicates_exact_constructions_kernel` for instantiating our
@@ -4132,9 +4134,9 @@ in \cgalFigureRef{aos_figpredef_kernels} (a):
\cgalExample{Arrangement_on_surface_2/predefined_kernel.cpp}
-
+
\paragraph arr_sssectr_non_caching_segs The Non-Caching Segment-Traits Class
-
+
The arrangement package offers an alternative segment-traits class
template that handles line segments, namely the
@@ -4187,9 +4189,9 @@ the map of Europe, as depicted in
\cgalExample{Arrangement_on_surface_2/predefined_kernel_non_intersecting.cpp}
-
+
\paragraph arr_sssectr_linear The Linear-Traits Class
-
+
The `Arr_linear_traits_2` class used in Section \ref
aos_sec-unbounded for demonstrating the construction of arrangements
@@ -4214,9 +4216,9 @@ cast a curve into a `Kernel::Line_2`, a `Kernel::Ray_2`, or a
class, the linear-curve traits class uses caching techniques to speed
up its predicate evaluations and object constructions.
-
+
\subsubsection arr_ssectr_polylines The Polyline and Polycurve Traits Classes
-
+
Polylines are continuous piecewise linear curves. Polylines are of
particular interest, as they can be used to approximate more complex
@@ -4233,9 +4235,9 @@ handles continuous piecewise curves that are not necessarily linear
and are not subject to the aforementioned constraint; see Section \ref
arr_sssectr_polycurves.
-
+
\paragraph arr_sssectr_polylines The Polyline Traits Class
-
+
The `Arr_polyline_traits_2` class template handles
polylines. It models the following four concepts:
@@ -4351,14 +4353,15 @@ size \f$m\f$ typically take \cgalBigO{\log m} time.
You are free to choose the underlying segment traits class. Your
decision could be based, for example, on the number of expected
-intersection points; see Section \ref arr_ssectr_segs. Moreover, it
-is possible to substitute the `SubcurveTraits_2` template parameter
-with a traits class that handles segments with some additional data
-attached to each individual segment; see Section
-\ref arr_ssecmeta_tr. This makes it possible to associate different
-data objects with the different segments that compose a polyline.
+intersection points; see Section \ref arr_ssectr_segs. Moreover, it is
+possible to substitute the `SubcurveTraits_2` template parameter with
+a traits class that handles segments with some additional data
+attached to each individual segment; see Section \ref
+arr_sssec_tr_data_decorators. This makes it possible to associate
+different data objects with the different segments that compose a
+polyline.
-
+
\cgalFigureBegin{aos_fig-polylines,polylines.png}
An arrangement of three polylines, as constructed in \ref
@@ -4370,7 +4373,7 @@ the polyline \f$\pi_2\f$ is split into three \f$x\f$-monotone
polylines, and that the two curves \f$\pi_1\f$ and \f$\pi_3\f$ have
two overlapping sections---an impossible scenario in arrangements of
line segments. \cgalFigureEnd
-
+
The following example program constructs an arrangement of three
polylines, \f$\pi_1\f$, \f$\pi_2\f$, and \f$\pi_3\f$, as depicted in
@@ -4410,9 +4413,9 @@ typedef Traits::Curve_2 Polyline;
typedef CGAL::Arrangement_2 Arrangement;
\endcode
-
+
\paragraph arr_sssectr_polycurves The Polycurve Traits Class
-
+
The traits class `Arr_polycurve_traits_2` handles
piecewise curves that are not necessarily linear, such as conic arcs,
@@ -4432,9 +4435,9 @@ it does not support the operations that (i) construct a polycurve from
a sequence of points, and (ii) push a point at the back or at the
front of a non-empty polycurve.
-
+
\subsubsection arr_ssectr_algebraic Traits Classes for Algebraic Curves
-
+
A curve in our context is typically (but not necessarily) defined as
the zero set of a bivariate nonzero polynomial with rational (or,
@@ -4466,9 +4469,9 @@ developed. As a general rule, you should always use the minimal traits
model that still satisfies your needs, as the most dedicated model is
most likely to be the most efficient.
-
+
\paragraph arr_sssectr_circ_seg Circular Arcs and Line Segments
-
+
Arrangement of circular arcs and of line segments are very useful and
frequently arise in applications, where curves of interleaved line
@@ -4552,7 +4555,7 @@ typically algebraic numbers of degree 2, is \a not the same as the
`Kernel::Point_2` type. The coordinates of a point are represented
using the number type `CoordNT`, nested in the traits class-template.
-
+
\cgalFigureBegin{aos_fig-circles,circles.png}
An arrangement of three circles constructed in \ref
Arrangement_on_surface_2/circles.cpp. Each circle is split into two
@@ -4561,7 +4564,7 @@ disks. Rings mark vertices that correspond to intersection points. The
vertex \f$v_{\rm max}\f$ is a common intersection point of all three
circles.
\cgalFigureEnd
-
+
In the following example an arrangement of three full circles is
constructed, as shown in \cgalFigureRef{aos_fig-circles}. Each Index is
@@ -4628,14 +4631,14 @@ interior point that lies on the arc in between its endpoints. In this
case, all three points are required to have rational coordinates;
namely, they are all given as `Kernel::Point_2` objects.
-
+
\cgalFigureBegin{aos_fig-circular_arcs,circular_arcs.png}
An arrangement of two full circles, two line segments, and three
circular arcs as constructed in \ref
Arrangement_on_surface_2/circular_arcs.cpp. Endpoints are drawn as
red disks and intersection points are drawn as rings.
\cgalFigureEnd
-
+
The following example demonstrates the usage of the various
construction methods for circular arcs and line segments. The
@@ -4665,9 +4668,9 @@ their performance, and use the most suitable for your case.
which I should choose one over the other
-->
-
+
\paragraph arr_sssectr_conic A Traits Class for Conic Arcs
-
+
A conic curve is an algebraic curve of degree 2. Namely, it
is the locus of all points \f$(x,y)\f$ satisfying the equation \f$c:\
@@ -4783,11 +4786,11 @@ Arr_conic_traits_2::X_monotone_curve_2 `X_monotone_curve_2`\endlink
classes also support basic access functions such as `source()`,
`target()`, and `%orientation()`.
-
+
\cgalFigureBegin{aos_fig-conics,conics.png}
An arrangement of mixed conic arcs, as constructed in conics.cpp
\cgalFigureEnd
-
+
The following example demonstrates the usage of the various
constructors for conic arcs. The resulting arrangement is depicted in
@@ -4835,12 +4838,12 @@ using X_monotone_conic_arc = Traits::X_monotone_curve_2;
using Arrangement = CGAL::Arrangement_2;
\endcode
-
+
\cgalFigureBegin{aos_fig-conic_multiplicities,conic_multiplicities.png}
An arrangement of a circular arc and an hyperbolic arc, as constructed
in \ref Arrangement_on_surface_2/conic_multiplicities.cpp.
\cgalFigureEnd
-
+
The last example in this section demonstrates how the conic-traits
class can handle intersection points with multiplicity. The resulting
@@ -4858,9 +4861,9 @@ they have another intersection point at
\cgalExample{Arrangement_on_surface_2/conic_multiplicities.cpp}
-
+
\paragraph arr_sssectr_ratfunc A Traits Class for Arcs of Rational Functions
-
+
A rational function is given by the equation \f$y =
\frac{P(x)}{Q(x)}\f$, where \f$P\f$ and \f$Q\f$ are polynomials of
@@ -4889,12 +4892,12 @@ Note that it is not a model of `ArrangementLandmarkTraits_2` concept,
so it is impossible to use the landmark point-location strategy with
this traits class.
-
+
\cgalFigureBegin{aos_fig-rat_func_singular,rational_function_singular.png}
An arrangement of an arc of a rational functions that has
singularities at \f$x = 1\f$ and at \f$x = 2\f$.
\cgalFigureEnd
-
+
A rational arc is always \f$x\f$-monotone in the mathematical sense.
However, it is not necessarily continuous, as it may have
@@ -4985,12 +4988,12 @@ cache is automatically cleaned up from time to time. The amortized
clean up costs are constant. In addition, there is also a separate
member function that cleans up the cache upon request.
-
+
\cgalFigureBegin{aos_fig-rational_functions,rational_functions.png}
An arrangement of four arcs of rational functions, as constructed in
\ref Arrangement_on_surface_2/rational_functions.cpp.
\cgalFigureEnd
-
+
The following example demonstrates the construction of an arrangement
induced by rational arcs depicted in
@@ -4999,12 +5002,12 @@ for polynomial arcs and for rational arcs.
\cgalExample{Arrangement_on_surface_2/rational_functions.cpp}
-
+
\cgalFigureBegin{aos_fig-unbounded_rational_functions,unbounded_rational_functions.png}
An arrangement of six arcs of rational functions, as constructed in
\ref Arrangement_on_surface_2/unbounded_rational_functions.cpp.
\cgalFigureEnd
-
+
The following example demonstrates the construction of an arrangement
of six rational arcs, four unbounded arcs and two bounded ones, as
@@ -5036,9 +5039,9 @@ polynomial coefficients as well as polynomials. The coefficients in a
given range must be in the order of the degrees of the corresponding
variables starting from the constant term.
-
+
\paragraph arr_sssectr_bez A Traits Class for Planar Bézier Curves
-
+
A planar Bézier curve \f$B\f$ is a parametric curve
defined by a sequence of control points \f$p_0, \ldots,
@@ -5116,12 +5119,12 @@ models the concept `ArrangementTraits_2` (but it does not model the
concept `ArrangementDirectionalXMonotoneTraits_2`, which enables
Boolean set operations; see Package \ref PkgBooleanSetOperations2Ref.
-
+
\cgalFigureBegin{aos_fig-bezier_curves,bezier_curves.png}
An arrangement of ten Bézier curves of degree \f$5\f$, as
constructed in \ref Arrangement_on_surface_2/Bezier_curves.cpp.
\cgalFigureEnd
-
+
The following example reads a set of Bézier curves from an
input file, where each file is specified by an integer stating its
@@ -5133,9 +5136,9 @@ each; their resulting arrangement is depicted in
\cgalExample{Arrangement_on_surface_2/Bezier_curves.cpp}
-
+
\paragraph arr_sssectr_alg A Traits Class for Planar Algebraic Curves of Arbitrary Degree
-
+
The traits class, namely `Arr_algebraic_segment_traits_2`, is based on
the `Algebraic_kernel_d_1` class template, which models the
@@ -5201,13 +5204,13 @@ constructed in a few convenient ways, some are exemplified by the
programs listed below. Consult the reference guide for the complete
set of options.
-
+
\cgalFigureBegin{aos_fig-algebraic_curves,algebraic_curves.png}
An arrangement of algebraic curves of degrees \f$1\f$, \f$2\f$,
\f$3\f$, and \f$6\f$, as constructed in
\ref Arrangement_on_surface_2/algebraic_curves.cpp.
\cgalFigureEnd
-
+
The following examples computes the arrangement depicted in in
\cgalFigureRef{aos_fig-algebraic_curves}. The arrangement is induced
@@ -5298,7 +5301,7 @@ segments. Notice that six vertices split the curve into
the corresponding \f$x\f$-monotone segments into terminal segments.
\cgalAdvancedEnd
-
+
\cgalFigureBegin{aos_fig-algebraic_curves_decomposition,algebraic_curves_decomposition.png}
The critical \f$x\f$-coordinates of an algebraic curve (dashed
@@ -5306,7 +5309,7 @@ lines), and its decomposition into terminal segments (in different
colors). The segment from \f$p\f$ to \f$q\f$ consists of the union
of three terminal segments.
\cgalFigureEnd
-
+
The type `Algebraic_real_1` must be defined by any model of the
`AlgebraicKernel_d_1` concept. The traits class-template
@@ -5347,13 +5350,13 @@ type `Algebraic_real_1` can be obtained, we advise caution with that
option, since computing an explicit representation of the
\f$y\f$-coordinate can be rather expensive.
-
+
\cgalFigureBegin{aos_fig-algebraic_segments,algebraic_segments.png}
An arrangement of algebraic segments (solid lines), as constructed in
\ref Arrangement_on_surface_2/algebraic_segments.cpp. The supporting
curves are drawn as dashed lines.
\cgalFigureEnd
-
+
The following code exemplifies the method to construct points and the
various methods to construct algebraic segments. The computed
@@ -5361,9 +5364,9 @@ arrangement is depicted in \cgalFigureRef{aos_fig-algebraic_segments}.
\cgalExample{Arrangement_on_surface_2/algebraic_segments.cpp}
-
+
\subsubsection arr_ssectr_spherical Arcs of Great Circles Embedded in the Sphere
-
+
A great circle of a sphere is the intersection of the sphere and a
plane that passes through the center point of the sphere. For all
@@ -5422,7 +5425,7 @@ The following example constructs an arrangement induced by 12 arcs of
great circles embedded in the sphere. The arrangement is depicted in
\cgalFigureRef{spherical_insert}.
-
+
\cgalFigureBegin{spherical_insert,spherical_insert.png}
An arrangement induced by 12 arcs of great circles, as constructed in
\ref Arrangement_on_surface_2/spherical_insert.cpp. The number of
@@ -5433,7 +5436,7 @@ with the identification curve induces a vertex at
in green. The north and south poles are drawn as little spheres. The
identification curve is drawn as a gray tube.
\cgalFigureEnd
-
+
\cgalExample{Arrangement_on_surface_2/spherical_insert.cpp}
@@ -5457,17 +5460,27 @@ point of the arc. See \cgalFigureRef{aos_fig-right_hand_rule} for an
illustration of the right-hand rule, which depicts the relation
between the arc and the normal.
-
+
\cgalFigureBegin{aos_fig-right_hand_rule,right_hand_rule.png}
To use the right hand rule, point your right thumb in the direction of
the normal and curl your fingers in the direction of the arc starting
with source endpoint and ending at the target endpoint.
\cgalFigureEnd
-
+
-
-\subsection arr_ssecmeta_tr Traits-Class Decorators
-
+
+\subsection arr_ssec_tr_decorators Traits-Class Decorators
+
+
+Decorator is a structural pattern that allows adding new behaviors to
+objects by placing them inside special wrapper objects, called
+decorators. One type of decorators attaches auxiliary data to the
+geometric objects handled by the original traits. Another type enables
+the retrieval of debugging and informative metadata.
+
+
+\subsubsection arr_sssec_tr_data_decorators Data Decorators
+
Geometric traits-class decorators allow you to attach auxiliary data
to the geometric objects (curves and to points). The data is
@@ -5579,14 +5592,14 @@ and \f$c_2\f$ with associated data sets \f$S_1\f$ and \f$S_2\f$,
respectively, the overlapping subcurve is associated with the
consolidated set \f$S_1 \cup S_2\f$.
-
+
\cgalFigureBegin{aos_fig-consolidated_curve_data,consolidated_curve_data.png}
An arrangement of six red and blue segments, as constructed in \ref
Arrangement_on_surface_2/consolidated_curve_data.cpp. Disks correspond
to red-blue intersection points, while circles mark the endpoints of
red-blue overlaps.
\cgalFigureEnd
-
+
The following example uses `Arr_segment_traits_2` as the base-traits
class, attaching an additional color field to the segments
@@ -5602,12 +5615,12 @@ endpoints are also drawn as black discs)
\cgalExample{Arrangement_on_surface_2/consolidated_curve_data.cpp}
-
+
\cgalFigureBegin{aos_fig-generic_curve_data,generic_curve_data.png}
An arrangement of four polylines, named A-D, as constructed in
\ref Arrangement_on_surface_2/generic_curve_data.cpp.
\cgalFigureEnd
-
+
The following example uses `Arr_polyline_traits_2` as the base-traits
class, attaching an additional name field to each polyline
@@ -5640,9 +5653,36 @@ the curve-data traits:
\cgalExample{Arrangement_on_surface_2/dual_with_data.cpp}
-
+
+\subsubsection arr_sssec_tr_metadata_decorators Metadata Decorators
+
+
+The package provides two traits-class decorators, namely
+`Arr_counting_traits_2` and
+`Arr_tracing_traits_2`, that can be used to insert
+debugging and informative metadata to an output stream. The former is
+used to count the number of invocations of traits-class functors, and
+the latter is used to trace these invocations. Note that the
+constructors of each of these class templates apply perfect
+forwarding. The counting traits also exports the count of traits-class
+objects of specific types constructed during the execution of the
+program. The tracing traits supports filtering of traced functors. The
+calls `traits.enable_trace(id)` and `traits.disable_trace(id)` enables
+and disables the tracing of a functor identified by `id`,
+respectively. A functor is identified by an enumeration. For example,
+the functor \link ArrangementTraits_2::Make_x_monotone_2
+`Make_x_monotone_2`\endlink is identified by the enumeration
+`Arr_tracing_traits_2::MAKE_X_MONOTONE_OP`. The calls
+`traits.enable_all_traces()` and `traits.disable_all_traces()` enables
+and disables the traces of all functors, respectively. The example
+program listed below demonstrates the use of both of these metadata
+decorators.
+
+\cgalExample{Arrangement_on_surface_2/count_and_trace.cpp}
+
+
\section aos_sec-topol_traits The Topology Traits
-
+
A topology traits class encapsulates the definitions of the
topological entities and the implementation of the functions that
handle these topological entities, used by the
@@ -5674,9 +5714,9 @@ arrangement embedded on a sphere defined over a parameter space, the
left and right boundary sides of which are identified, and the top and
bottom boundary sides are contracted.
-
+
\section arr_sec_extending Extending the Arrangement
-
+
Developing applications that use arrangements to solve problems that
are a bit more complicated than the problems presented in previous
@@ -5686,9 +5726,9 @@ arrangement with auxiliary, usually non-geometric, data. In this
chapter we describe several ways to extend an arrangement data
structure.
-
+
\subsection arr_ssecnotif The Notification Mechanism
-
+
In some cases it is essential to know exactly what happens inside a
specific arrangement object. For example, when a new curve is inserted
@@ -5826,14 +5866,14 @@ up-to-date. In addition, you can define your own observer classes,
inheriting from the base observer class and overriding the relevant
notification functions, as required by their applications.
-
+
\cgalFigureBegin{aos_fig-observer,observer.png}
An arrangement of six line segments, as constructed in \ref
Arrangement_on_surface_2/observer.cpp. The halfedge \f$e_v\f$
(dashed) is eventually removed, so that the final arrangement consists
of four faces (one unbounded and three bounded ones).
\cgalFigureEnd
-
+
The following example shows how to define and use an observer
class. The observer in the example responds to changes in the
@@ -5860,9 +5900,9 @@ Observers are especially useful when the \dcel records are
extended and store additional data-fields, since they help update
this data stored in these fields, as the following sections reveal.
-
+
\subsection arr_ssecex_dcel Extending the DCEL
-
+
For many applications of the \ref PkgArrangementOnSurface2 package it
is necessary to store additional information (perhaps of non-geometric
@@ -5872,7 +5912,7 @@ edges (halfedge pairs) are associated with \link
Arrangement_on_surface_2::X_monotone_curve_2
`X_monotone_curve_2`\endlink objects, both defined by the traits
class. Extending the geometric traits-class types by using a
-traits-class decorator, as explained in Section \ref arr_ssecmeta_tr,
+traits-class decorator, as explained in Section \ref arr_ssec_tr_decorators,
might be a sufficient solution for some applications. However, the
\dcel faces are not associated with any geometric object, so
traits-class decorators cannot help here. Extending the \dcel face
@@ -5890,9 +5930,9 @@ class associates points with vertices and \f$x\f$-monotone curves with
halfedges, but nothing more. In this section we show how to use
alternative \dcel types to extend the desired \dcel records.
-
+
\subsubsection arr_sssecex_dcel_face Extending the DCEL Faces
-
+
The `Arr_face_extended_dcel` class-template is used
to associate auxiliary data field of type `FaceData` to each face
@@ -5912,7 +5952,7 @@ face or merged with another face). In such cases one can use an
arrangement observer tailored for this task, which receives updates
whenever a face is modified and sets its data field accordingly.
-
+
\cgalFigureBegin{aos_fig-dcel_extension,dcel_extension.png}
An arrangement of six line segments, as constructed in \ref
Arrangement_on_surface_2/face_extension.cpp and \ref
@@ -5922,7 +5962,7 @@ directed, so they are drawn as arrows directed from the source to the
target). The indices associated with the halfedges in
\ref Arrangement_on_surface_2/face_extension.cpp are shown in brackets.
\cgalFigureEnd
-
+
The next example constructs an arrangement that contains seven bounded
faces induced by six line segments, \f$s_1, \ldots, s_6\f$, as shown
@@ -5939,9 +5979,9 @@ similar observer to a non-empty arrangement.}
\cgalExample{Arrangement_on_surface_2/face_extension.cpp}
-
+
\subsubsection arr_sssecex_dcel_all Extending All DCEL Records
-
+
As you continue to use arrangements to solve various problems you will
find out that the ability to extend the face records is
@@ -6062,9 +6102,9 @@ class Arr_map_dcel : public
\cgalAdvancedEnd
-
+
\subsection arr_ssecoverlay Overlaying Arrangements
-
+
Assume that we are given two geographic maps represented as
arrangements, with some data objects attached to their faces,
@@ -6089,7 +6129,7 @@ The overlay of two given arrangements, conveniently referred to as the
algorithm employing a dedicated visitor; see Section
\ref arr_ssec_sweep. The \f$x\f$-monotone curve type is extended with
a color attribute (whose value is either blue or red); see Section \ref
-arr_ssecmeta_tr. With the help of the extended type unnecessary
+arr_ssec_tr_decorators. With the help of the extended type unnecessary
computations are filtered out while the plane is swept, yielding an
efficient process. For example, monochromatic intersections are not
computed.
@@ -6129,7 +6169,7 @@ is possible to obtain the same result using the standard
insertion-operations instead, but, as mentioned above, this is less
efficient.
-
+
\cgalFigureBegin{aos_figex_overlay,overlay.png}
Overlaying two simple arrangements of line segments, as done in \ref
Arrangement_on_surface_2/overlay.cpp and \ref
@@ -6138,7 +6178,7 @@ Arrangement_on_surface_2/face_extension_overlay.cpp the two bounded
faces are considered as marked, and the octagonal face which
is the intersection of the two marked faces is denoted by \f$f_0\f$.
\cgalFigureEnd
-
+
The next program constructs two simple arrangements; each comprises
four line segments that form a square, as depicted in
@@ -6222,12 +6262,12 @@ arrangement depicted in \cgalFigureRef{aos_figex_overlay}.
\cgalExample{Arrangement_on_surface_2/face_extension_overlay.cpp}
-
+
\cgalFigureBegin{aos_figex_overlay_unbounded,overlay_unbounded.png}
Overlaying two arrangements of lines that have unbounded faces, as
done in \ref Arrangement_on_surface_2/overlay_unbounded.cpp.
\cgalFigureEnd
-
+
The next example, depicted in
\cgalFigureRef{aos_figex_overlay_unbounded}, demonstrates the face
@@ -6357,7 +6397,7 @@ template struct Overlay_color_traits {
};
\endcode
-
+
\cgalFigureBegin{aos_figex_overlay_color,overlay_color.png}
The overlay of two extended arrangements]{The overlay (c) of two
@@ -6366,7 +6406,7 @@ with a color. The color of each feature of the overlay arrangement is
the blend of the colors of the two inducing features.
\cgalFigureEnd
-
+
The example program listed below computes the overlay, depicted in
\cgalFigureRef{aos_figex_overlay_color}, of the two arrangements
@@ -6382,9 +6422,9 @@ of the colors attached to the inducing features.
\cgalExample{Arrangement_on_surface_2/overlay_color.cpp}
-
+
\subsection arr_ssecarr_with_hist Storing the Curve History
-
+
When you constructs an arrangement induced by a set \f$\mathcal{C}\f$
of arbitrary two-dimensional curves, you end up with a collection
@@ -6422,9 +6462,9 @@ arrangements with history. However, the explanation applies also to
`Arrangement_on_surface_with_history_2<>`, as the type of the
embedding surface is irrelevant to the discussion.
-
+
\subsubsection arr_sssecarrwh_traverse Traversing an Arrangement with History
-
+
The `Arrangement_with_history_2` class template extends the
`Arrangement_2` class template. Thus, all the iterator and circulator
@@ -6497,9 +6537,9 @@ edges and the consolidated curve-set. You may also employ an
overlay-traits class to maintain any type of auxiliary data stored
with the \dcel cells; see Section \ref arr_ssecoverlay.
-
+
\subsubsection arr_sssecmodif_traverse Modifying an Arrangement with History
-
+
The `Arrangement_with_history_2` class template extends the
`Arrangement_2` class template; thus, it inherits the fundamental
@@ -6572,14 +6612,14 @@ arrangement-with-history object in order to get detailed notifications
of the changes the arrangements undergoes; see Section \ref
arr_ssecnotif for the details).
-
+
\cgalFigureBegin{aos_fig-curve_history,curve_history.png}
An arrangement with history as constructed in \ref
Arrangement_on_surface_2/curve_history.cpp. Note that \f$s_1\f$ and
\f$s_3\f$ overlap over two edges. The point-location query points
\f$q_1\f$, \f$q_2\f$, and \f$q_3\f$ are drawn as lightly shaded dots.
\cgalFigureEnd
-
+
In the following example we construct a simple arrangement of six line
segments, as depicted in \cgalFigureRef{aos_fig-curve_history}, while
@@ -6593,7 +6633,7 @@ auxiliary function `locate_point()` defined in the header file
\cgalExample{Arrangement_on_surface_2/curve_history.cpp}
-
+
\cgalFigureBegin{aos_fig-edge_manipulation_curve_hostory,edge_manipulation_curve_history.png}
An arrangement with history of nine circles as constructed in \ref
Arrangement_on_surface_2/edge_manipulation_curve_history.cpp. Note the
@@ -6602,7 +6642,7 @@ subdivide this circle into an upper half and a lower half, each
consists of 9 edges. The large circle \f$c_0\f$ is eventually removed
from the arrangement, with all 18 edges it induces.
\cgalFigureEnd
-
+
The following example demonstrates the usage of the free
`remove_curve()` function. We construct an arrangement of nine
@@ -6616,9 +6656,9 @@ member functions when operating on an arrangement-with-history object.
\cgalExample{Arrangement_on_surface_2/edge_manipulation_curve_history.cpp}
-
+
\section aos_sec-io Input/Output Streams and Visualization
-
+
In some cases, one would like to save an arrangement object
constructed by some application, so that later on it can be
@@ -6626,9 +6666,9 @@ restored. In other cases one would like to create nice drawings that
represent arrangements constructed by some application. These
drawings can be hard printed or displayed on a computer screen.
-
+
\subsection aos_ssec-io-stream Input/Output Stream
-
+
Consider an arrangement that represents a very complicated geographical
map, and assume that there are various applications that need to answer
@@ -6665,9 +6705,9 @@ a file.
\cgalExample{Arrangement_on_surface_2/io.cpp}
-
+
\subsection arr_ssecarr_io_aux_data Arrangements with Auxiliary Data
-
+
\cgalAdvancedBegin The inserter and extractor both ignore any
auxiliary data stored with the arrangement features. Thus, they are
@@ -6721,9 +6761,9 @@ Doing so, you can define other I/O formats, such as an XML-based
format or a binary format.
\cgalAdvancedEnd
-
+
\subsection arr_ssecarr_io_hist Arrangements with Curve History
-
+
Section \ref arr_ssecarr_with_hist introduces the
`Arrangement_with_history_2` class, which saves the
@@ -6762,9 +6802,9 @@ arrangement formatter class (see Section \ref arr_ssecarr_io_aux_data)
and defines a simple textual input/output format.
\cgalAdvancedEnd
-
+
\subsection arr_ssecarr_io_vis Drawing an Arrangement
-
+
An arrangement data structure can be visualized by calling the \link PkgArrangementOnSurface2Draw CGAL::draw() \endlink function as shown in the following example. This function opens a new window showing the given arrangement. A call to this function is blocking; that is, the program continues execution only after the user closes the window.
@@ -6780,9 +6820,9 @@ of 14 vertices, 15 edges, and 3 faces. Notice that the colors are generated at r
\cgalFigureEnd
-
+
\section aos_sec-bgl Adapting to Boost Graphs
-
+
\boost\cgalFootnote{See also \boost's homepage at:
\cgalFootnoteCode{www.boost.org}.} is a collection of portable \cpp libraries
@@ -6806,9 +6846,9 @@ graph vertex with each \dcel face, such that two vertices are
connected, iff there is a \dcel halfedge that connects the two
corresponding faces.
-
+
\subsection arr_ssecbgl_primal The Primal Arrangement Representation
-
+
Arrangement instances are adapted to \boost graphs by specializing the
\link BGLArgtGT `boost::graph_traits` \endlink template for
@@ -6913,13 +6953,13 @@ template struct Edge_length {
};
\endcode
-
+
\cgalFigureBegin{aos_fig-bgl_primal_adapter,bgl_primal_adapter.png}
An arrangement of seven line segments, as constructed by
\ref Arrangement_on_surface_2/bgl_primal_adapter.cpp and
\ref Arrangement_on_surface_2/bgl_dual_adapter.cpp.
\cgalFigureEnd
-
+
In the following example we construct an arrangement of seven line
segments, as shown in \cgalFigureRef{aos_fig-bgl_primal_adapter}.
@@ -6935,9 +6975,9 @@ squared distances of the vertex from \f$v_0\f$.
\cgalExample{Arrangement_on_surface_2/bgl_primal_adapter.cpp}
-
+
\subsection arr_ssecbgl_dual The Dual Arrangement Representation
-
+
An arrangement instance can be represented as a graph other than the
one described in the previous section. A dual-graph representation
@@ -7002,7 +7042,7 @@ public:
};
\endcode
-
+
\cgalFigureBegin{aos_fig-bgl_dual_adapter,bgl_dual_adapter.png}
An arrangement of seven line segments, as constructed by \ref
Arrangement_on_surface_2/bgl_dual_adapter.cpp and its dual face graph,
@@ -7010,7 +7050,7 @@ where every arrangement face is a vertex of the graph. The index of a
dual vertex is the discovery time of a breadth-first search applied to
the face graph, starting from the unbounded face \f$f_0\f$.
\cgalFigureEnd
-
+
The following example constructs the same arrangement constructed by
the program coded in \ref
@@ -7029,9 +7069,9 @@ is discovered at time \f$0\f$, the neighboring faces \f$f_1\f$,
\cgalExample{Arrangement_on_surface_2/bgl_dual_adapter.cpp}
-
+
\section aos_sec-tips How To Speed Up Your Computation
-
+
Before the specific tips, we remind you that compiling programs with
debug flags disabled and with optimization flags enabled significantly
@@ -7132,9 +7172,9 @@ be avoided by storing the results obtained by the first call, and
reusing them when needed.
-
+
\section aos_sec-design Design and Implementation History
-
+
The code of this package is the result of a long development process.
Initially (and until version 3.1), the code was spread among several
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_algebraic_segment_traits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_algebraic_segment_traits_2.h
index 5007dce85f5..27fcce4bb1e 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_algebraic_segment_traits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_algebraic_segment_traits_2.h
@@ -1,355 +1,343 @@
-
namespace CGAL {
-/*!
-\ingroup PkgArrangementOnSurface2TraitsClasses
+/*! \ingroup PkgArrangementOnSurface2TraitsClasses
+ *
+ * The traits class `Arr_algebraic_segment_traits_2` is a model of the
+ * `ArrangementTraits_2` concept that handles planar algebraic curves of
+ * arbitrary degree, and \f$ x\f$-monotone of such curves. A planar (real)
+ * algebraic curve is the vanishing set of a polynomial in two variables,
+ * that is, the curve is defined by the defining equation \f[
+ * f(x):=\sum_{i+j\leq n} a_{ij} x^i y^j =0, \f] where \f$ n\f$ is the degree of
+ * the curve.
+ *
+ * The traits class allows the construction of algebraic curves, by specifying
+ * their implicit equation. \f$ x\f$-monotone and vertical segments of a curve
+ * can also be defined; unbounded curves and segments are supported. The
+ * template parameter `Coefficient` defines the innermost coefficient type of
+ * the polynomials. Currently, the types `leda::integer` and `CORE::BigInt` are
+ * supported as well as any instance of `CGAL::Sqrt_extension` that is
+ * instantiated with one of the integral types above.
+ *
+ * \cgalModels{ArrangementTraits_2}
+ */
-The traits class `Arr_algebraic_segment_traits_2` is a model of the `ArrangementTraits_2`
-concept that handles planar algebraic curves of arbitrary degree,
-and \f$ x\f$-monotone of such curves.
-A planar (real) algebraic curve
-is the vanishing set of a polynomial in two variables, that is, the
-curve is defined by the defining equation
-\f[ f(x):=\sum_{i+j\leq n} a_{ij} x^i y^j =0, \f]
-where \f$ n\f$ is the degree of the curve.
-
-The traits class allows the construction of algebraic curves,
-by specifying their implicit equation. \f$ x\f$-monotone and vertical segments
-of a curve can also be defined; unbounded curves and segments are supported.
-The template parameter `Coefficient` defines
-the innermost coefficient type of the polynomials. Currently,
-the types `leda::integer` and `CORE::BigInt` are supported as well
-as any instance of `CGAL::Sqrt_extension` that is instantiated with
-one of the integral types above.
-
-\cgalModels{ArrangementTraits_2}
-
-
-*/
template
class Arr_algebraic_segment_traits_2 {
public:
-/// \name Types
-/// @{
-
-/*! Value to specify whether a point should be in the interior of a segment, or
- * its minimal point, or its maximal point in lexicographic order.
- */
-enum Site_of_point { POINT_IN_INTERIOR = 0, MIN_ENDPOINT = -1, MAX_ENDPOINT = 1 };
-
-/*! the type for bivariate polynomials, with innermost coefficient type
- * `Coefficient`. Constitutes a model of the concept `Polynomial_d` with two
- * variables.
- *
- * \sa `CGAL::Polynomial_d`
- */
-typedef unspecified_type Polynomial_2;
-
-/*! model for the concept `AlgebraicKernel_1`
- */
-typedef unspecified_type Algebraic_kernel_1;
-
-/*! represents coordinates of points.
- * Typedef from `Algebraic_kernel_1::Algebraic_real_1`
- */
-typedef unspecified_type Algebraic_real_1;
-
-/*! Typedef from `Algebraic_kernel_1::Bound`
- */
-typedef unspecified_type Bound;
-
-/// @}
-
-/// \name Accessing functor objects
-/// @{
-
-/*!
-
- */
-Construct_curve_2 construct_curve_2_object() const;
-
-/*!
-
- */
-Construct_point_2 construct_point_2_object() const;
-
-/*!
-
- */
-Construct_x_monotone_segment_2 construct_x_monotone_segment_2_object() const;
-
-/// @}
-
-/*!
-
- */
-class Construct_curve_2 {
-public:
-
-/// \name Object Creation Functors
-/// @{
-
-/*! Returns a `Curve_2` object that represents the curve defined by the
- * polynomial `p`
- */
-Curve_2 operator() (Polynomial_2 p);
-
-/*! Returns a `Curve_2` object specified by `s`. The passed string represents
- * the defining polynomial of the curve and must be given in a MAPLE-readable
- * format using "x" as first and "y" as second variable, e.g.,
- * \f$(x^3*y-2*x)*(-6*x-y^3*x^6)\f$ for integer coefficients, and
- * \f$3/2*x*y^4-5/7*x^2+3/1\f$ for rational coefficients.
- */
-Curve_2 operator() (std::string s);
-
-/// @}
-
-}; /* end Arr_algebraic_segment_traits_2::Construct_curve_2 */
-
-/*!
-
- */
-class Construct_point_2 {
-public:
-
-/// \name Object Creation Functors
-/// @{
-
-/*! Returns a `Point_2` object that represents the `arcno`-th
- * point in the fiber of `cv` at \f$ x\f$-coordinate `x`,
- * counted from the bottom, starting with zero.
- * \pre (`cv` must not have a vertical line at `x`,
- * and \f$ 0\leq arcno < c\f$, where \f$ c\f$ is the number of points
- * in the fiber of `cv` at `x`.)
- */
-Point_2 operator() (Algebraic_real_1 x, Curve_2 cv, int arcno);
-
-/*! Returns a `Point_2` object that represents the
- * point on `xcv` at \f$ x\f$-coordinate `x`
- * \pre (`x` is in the \f$ x\f$-range of `xcv`.)
- */
-Point_2 operator() (Algebraic_real_1 x, X_monotone_curve_2 xcv);
-
-/*! Returns a `Point_2` object that represents (x,y)
- */
-Point_2 operator() (Algebraic_real_1 x, Algebraic_real_1 y);
-
-/*! Returns a `Point_2` object that represents (x,y)
- */
-Point_2 operator() (Coefficient x, Coefficient y);
-
-/*! Returns a `Point_2` object that represents (x,y)
- */
-Point_2 operator() (Bound x, Bound y);
-
-/*! Returns a `Point_2` object that represents (x,y)
- */
-Point_2 operator() (int x, int y);
-
-/// @}
-
-}; /* end Arr_algebraic_segment_traits_2::Construct_point_2 */
-
-/*!
-
- */
-class Construct_x_monotone_segment_2 {
-public:
-
-/// \name Object Creation Functors
-/// @{
-
-/*! inserts a sequence of `X_monotone_curve_2` objects (terminal segments) into
- * an output container given through an output iterator. These terminal segments
- * compose an \f$x\f$-monotone (or vertical) segment of a given curve that
- * starts in `end_min`, and ends in `end_max`.
- *
- * \param cv The input curve.
- * \param end_min The starting point.
- * \param end_max The ending point.
- * \param oi The output iterator that points at the output container.
- * \return The past-the-end iterator of the output container.
- *
- * \pre `end_min` must have a unique \f$x\f$-monotone segment to its right, or
- * `end_max` must have a unique \f$x\f$-monotone segment to its left.
- * Furthermore, `end_min` and `end_max` must be connected by an
- * \f$x\f$-monotone segment of `cv`)
- */
-template
-OutputIterator operator() (Curve_2 cv, Point_2 end_min, Point_2 end_max,
- OutputIterator oi);
-
-/*! inserts a sequence of `X_monotone_curve_2` objects into an output container
- * given through an output iterator. These segments form an \f$x\f$-monotone
- * (or vertical) segment of the curve `cv`.
- *
- * If `site_of_p==POINT_IN_INTERIOR`, the maximal segment is
- * returned that contains `p` in its interior.
- *
- * returned that contains `p` as its left endpoint.
- *
- * returned that contains `p` as its left endpoint.
- *
- * \pre (If `site_of_p==POINT_IN_INTERIOR`, `p`
- * must be an interior point of an \f$x\f$-monotone or a vertical
- * segment.
- * must either have a unique \f$x\f$-monotone segment to the right,
- * or a vertical segment from `p` upwards.
- * must either have a unique \f$x\f$-monotone segment to the left,
- * or a vertical segment from `p` downwards.)
- */
-template
-OutputIterator operator() (Curve_2 cv, Point_2 p, Site_of_point site_of_p,
- OutputIterator out);
-
-/*! inserts a sequence of `X_monotone_curve_2` objects into an output container
- * given through an output iterator. These segments form a straight-line
- * segment connecting the points `p` and `q`. If `p` and `q` share the same
- * \f$x\f$-coordinate, the constructed vertical segment consists of only one
- * `X_monotone_curve_2` object and can be computed efficiently. In the
- * non-vertical case, the construction is only possible if `p` and `q` have both
- * rational x- and y-coordinates.
- *
- * \pre (`p` must not be equal to `q`.)
- */
-template
-OutputIterator operator() (Point_2 p, Point_2 q, OutputIterator out);
-
-/// @}
-
-}; /* end Arr_algebraic_segment_traits_2::Construct_x_monotone_segment_2 */
-
-/*! Models the `ArrangementTraits_2::Curve_2` concept.
- * Represents algebraic curves. Internally, the type stores
- * topological-geometric information about the particular curve.
- * In order to use internal caching, instances should only be created
- * using the `Construct_curve_2` functor of the traits class.
- */
-class Curve_2 {
-public:
-
-/// \name Modifiers
-/// @{
-
-/*! returns the defining polynomial of the curve.
-*/
-Polynomial_2 polynomial () const;
-
-/// @}
-
-}; /* end Arr_algebraic_segment_traits_2::Curve_2 */
-
-/*! Models the `ArrangementBasicTraits_2::Point_2` concept.
- * Represents points in \f$ \mathbb{R}^2\f$. Intersection points of algebraic
- * curves are in general non-rational, so we need a data structure that is
- * capable of representing arbitrary points with algebraic coordinates.
- *
- * The traits class represents algebraic coordinates by the type
- * `Algebraic_real_1`, which is a model of the `AlgebraicReal_1` concept.
- * A point \f$ p\f$ is stored by a triple \f$ (x,cv,arcno)\f$,
- * where \f$ x\f$ is the \f$ x\f$-coordinate of a point, \f$ cv\f$ is an instance
- * of `Curve_2` that contains the point, (and has no vertical line at \f$ x\f$),
- * and \f$ arcno\f$ is an `int`, denoting that \f$ p\f$ is met as the
- * \f$arcno\f$-th point when shooting a vertical ray at \f$ x\f$, starting from
- * \f$-\infty\f$ (where counting starts with \f$ 0\f$).
- *
- * In addition to the methods listed below, the copy constructor and assignment
- * operator for `Point_2` objects are also supported.
- *
- * The functor `Construct_point_2` constructs `Point_2` instances.
- */
-
-class Point_2 {
-public:
-
-/// \name Modifiers
-/// @{
-
-/*! returns the \f$ x\f$-coordinate of `p`.
- */
-Algebraic_real_1 x () const;
-
-/*! returns the \f$ y\f$-coordinates of `p`.
- *
- * Attention: As described above, points are not stored
- * by their \f$ y\f$-coordinate in `Algebraic_real_1` representation. In fact,
- * this representation must be computed on demand, and might become quite
- * costly for points defined by high-degree polynomials. Therefore, it is
- * recommended to avoid to call this function as much as possible.
- */
-Algebraic_real_1 y () const;
-
-/*! returns a `Curve_2` instance that `p`is part of.
- */
-Curve_2 curve () const;
-
-/*! returns the arc number of `p`.
- */
-int arcno () const;
-
-/*! returns double-approximations of the \f$ x\f$- and \f$ y\f$-coordinates.
- */
-std::pair to_double () const;
-
-/// @}
-
-}; /* end Arr_algebraic_segment_traits_2::Point_2 */
-
-/*! Models the `ArrangementBasicTraits_2::X_monotone_curve_2` concept.
- * Represents terminal segments of an algebraic curves, that means vertical
- * segments or \f$ x\f$-monotone segments with no critical \f$ x\f$-coordinate
- * in the interior of their \f$ x\f$-range. Terminal segments might either be
- * bounded or unbounded. By definition, each interior point of a non-vertical
- * segment has the same arc number (see the documentation of type `Point_2`
- * above, which is called the arc number of the segment (note the arc
- * number at the endpoints might differ). Such segments are represented
- * internally by a 4-tuple \f$ (p,q,cv,arcno)\f$, where \f$ p\f$ and \f$ q\f$
- * are the endpoints, \f$ cv\f$ is the supporting curve that the segment
- * belongs to, and arcno is the arc number of the segment.
- *
- * Arbitrary (weakly) \f$ x\f$-monotone segments are presented by a range
- * of `X_monotone_curve_2` instances, whose union equals the segment.
- * The functor `Construct_x_monotone_segment_2` allows their construction.
- * To construct all (maximal) terminal segments of a curve,
- * use the `Make_x_monotone_2` functor supplied by the traits class.
- */
-class X_monotone_curve_2 {
-public:
-
-/// \name Modifiers
-/// @{
-
-/*! returns the supporting algebraic curve of `s`.
- */
-Curve_2 curve () const;
-
-/*! returns whether `s` is a vertical segment.
- */
-bool is_vertical () const;
-
-/*! returns whether `s` has a finite endpoint on the left
- */
-bool is_finite (CGAL::Arr_curve_end ce) const;
-
-/*! \pre (The corresponding curve end is finite)
- */
-Point_2 curve_end (CGAL::Arr_curve_end ce) const;
-
-/*! returns the arc number of the segment.
- * \pre (The segment is non-vertical)
- */
-int arcno () const;
-
-/*!
-returns the \f$ x\f$-coordinate of a vertical segment.
-\pre (The segment is vertical)
-*/
-Algebraic_real_1 x () const;
-
-/// @}
-
-}; /* end Arr_algebraic_segment_traits_2::X_monotone_curve_2 */
+ /// \name Types
+ /// @{
+
+ /*! Value to specify whether a point should be in the interior of a segment, or
+ * its minimal point, or its maximal point in lexicographic order.
+ */
+ enum Site_of_point { POINT_IN_INTERIOR = 0, MIN_ENDPOINT = -1, MAX_ENDPOINT = 1 };
+
+ /*! the type for bivariate polynomials, with innermost coefficient type
+ * `Coefficient`. Constitutes a model of the concept `Polynomial_d` with two
+ * variables.
+ *
+ * \sa `CGAL::Polynomial_d`
+ */
+ typedef unspecified_type Polynomial_2;
+
+ /*! model for the concept `AlgebraicKernel_1`
+ */
+ typedef unspecified_type Algebraic_kernel_1;
+
+ /*! represents coordinates of points.
+ * Typedef from `Algebraic_kernel_1::Algebraic_real_1`
+ */
+ typedef unspecified_type Algebraic_real_1;
+
+ /*! Typedef from `Algebraic_kernel_1::Bound`
+ */
+ typedef unspecified_type Bound;
+
+ /// @}
+
+ /// \name Accessing functor objects
+ /// @{
+
+ /*!
+ */
+ Construct_curve_2 construct_curve_2_object() const;
+
+ /*!
+ */
+ Construct_point_2 construct_point_2_object() const;
+
+ /*!
+ */
+ Construct_x_monotone_segment_2 construct_x_monotone_segment_2_object() const;
+
+ /// @}
+
+ /*!
+ */
+ class Construct_curve_2 {
+ public:
+
+ /// \name Object Creation Functors
+ /// @{
+
+ /*! returns a `Curve_2` object that represents the curve defined by the
+ * polynomial `p`
+ */
+ Curve_2 operator() (Polynomial_2 p);
+
+ /*! returns a `Curve_2` object specified by `s`. The passed string represents
+ * the defining polynomial of the curve and must be given in a MAPLE-readable
+ * format using "x" as first and "y" as second variable, e.g.,
+ * \f$(x^3*y-2*x)*(-6*x-y^3*x^6)\f$ for integer coefficients, and
+ * \f$3/2*x*y^4-5/7*x^2+3/1\f$ for rational coefficients.
+ */
+ Curve_2 operator() (std::string s);
+
+ /// @}
+
+ }; /* end Arr_algebraic_segment_traits_2::Construct_curve_2 */
+
+ /*!
+ */
+ class Construct_point_2 {
+ public:
+
+ /// \name Object Creation Functors
+ /// @{
+
+ /*! returns a `Point_2` object that represents the `arcno`-th
+ * point in the fiber of `cv` at \f$ x\f$-coordinate `x`,
+ * counted from the bottom, starting with zero.
+ * \pre (`cv` must not have a vertical line at `x`,
+ * and \f$ 0\leq arcno < c\f$, where \f$ c\f$ is the number of points
+ * in the fiber of `cv` at `x`.)
+ */
+ Point_2 operator() (Algebraic_real_1 x, Curve_2 cv, int arcno);
+
+ /*! returns a `Point_2` object that represents the
+ * point on `xcv` at \f$ x\f$-coordinate `x`
+ * \pre (`x` is in the \f$ x\f$-range of `xcv`.)
+ */
+ Point_2 operator() (Algebraic_real_1 x, X_monotone_curve_2 xcv);
+
+ /*! returns a `Point_2` object that represents (x,y)
+ */
+ Point_2 operator() (Algebraic_real_1 x, Algebraic_real_1 y);
+
+ /*! returns a `Point_2` object that represents (x,y)
+ */
+ Point_2 operator() (Coefficient x, Coefficient y);
+
+ /*! returns a `Point_2` object that represents (x,y)
+ */
+ Point_2 operator() (Bound x, Bound y);
+
+ /*! returns a `Point_2` object that represents (x,y)
+ */
+ Point_2 operator() (int x, int y);
+
+ /// @}
+
+ }; /* end Arr_algebraic_segment_traits_2::Construct_point_2 */
+
+ /*!
+ */
+ class Construct_x_monotone_segment_2 {
+ public:
+
+ /// \name Object Creation Functors
+ /// @{
+
+ /*! inserts a sequence of `X_monotone_curve_2` objects (terminal segments) into
+ * an output container given through an output iterator. These terminal segments
+ * compose an \f$x\f$-monotone (or vertical) segment of a given curve that
+ * starts in `end_min`, and ends in `end_max`.
+ *
+ * \param cv The input curve.
+ * \param end_min The starting point.
+ * \param end_max The ending point.
+ * \param oi The output iterator that points at the output container.
+ * \return The past-the-end iterator of the output container.
+ *
+ * \pre `end_min` must have a unique \f$x\f$-monotone segment to its right, or
+ * `end_max` must have a unique \f$x\f$-monotone segment to its left.
+ * Furthermore, `end_min` and `end_max` must be connected by an
+ * \f$x\f$-monotone segment of `cv`)
+ */
+ template
+ OutputIterator operator() (Curve_2 cv, Point_2 end_min, Point_2 end_max,
+ OutputIterator oi);
+
+ /*! inserts a sequence of `X_monotone_curve_2` objects into an output container
+ * given through an output iterator. These segments form an \f$x\f$-monotone
+ * (or vertical) segment of the curve `cv`.
+ *
+ * If `site_of_p==POINT_IN_INTERIOR`, the maximal segment is
+ * returned that contains `p` in its interior.
+ *
+ * returned that contains `p` as its left endpoint.
+ *
+ * returned that contains `p` as its left endpoint.
+ *
+ * \pre (If `site_of_p==POINT_IN_INTERIOR`, `p`
+ * must be an interior point of an \f$x\f$-monotone or a vertical
+ * segment.
+ * must either have a unique \f$x\f$-monotone segment to the right,
+ * or a vertical segment from `p` upwards.
+ * must either have a unique \f$x\f$-monotone segment to the left,
+ * or a vertical segment from `p` downwards.)
+ */
+ template
+ OutputIterator operator() (Curve_2 cv, Point_2 p, Site_of_point site_of_p,
+ OutputIterator out);
+
+ /*! inserts a sequence of `X_monotone_curve_2` objects into an output container
+ * given through an output iterator. These segments form a straight-line
+ * segment connecting the points `p` and `q`. If `p` and `q` share the same
+ * \f$x\f$-coordinate, the constructed vertical segment consists of only one
+ * `X_monotone_curve_2` object and can be computed efficiently. In the
+ * non-vertical case, the construction is only possible if `p` and `q` have both
+ * rational x- and y-coordinates.
+ *
+ * \pre (`p` must not be equal to `q`.)
+ */
+ template
+ OutputIterator operator() (Point_2 p, Point_2 q, OutputIterator out);
+
+ /// @}
+
+ }; /* end Arr_algebraic_segment_traits_2::Construct_x_monotone_segment_2 */
+
+ /*! A model of the the `ArrangementTraits_2::Curve_2` concept.
+ * Represents algebraic curves. Internally, the type stores
+ * topological-geometric information about the particular curve.
+ * In order to use internal caching, instances should only be created
+ * using the `Construct_curve_2` functor of the traits class.
+ */
+ class Curve_2 {
+ public:
+
+ /// \name Modifiers
+ /// @{
+
+ /*! returns the defining polynomial of the curve.
+ */
+ Polynomial_2 polynomial () const;
+
+ /// @}
+
+ }; /* end Arr_algebraic_segment_traits_2::Curve_2 */
+
+ /*! A model of the `ArrangementBasicTraits_2::Point_2` concept.
+ * Represents points in \f$ \mathbb{R}^2\f$. Intersection points of algebraic
+ * curves are in general non-rational, so we need a data structure that is
+ * capable of representing arbitrary points with algebraic coordinates.
+ *
+ * The traits class represents algebraic coordinates by the type
+ * `Algebraic_real_1`, which is a model of the `AlgebraicReal_1` concept.
+ * A point \f$ p\f$ is stored by a triple \f$ (x,cv,arcno)\f$,
+ * where \f$ x\f$ is the \f$ x\f$-coordinate of a point, \f$ cv\f$ is an instance
+ * of `Curve_2` that contains the point, (and has no vertical line at \f$ x\f$),
+ * and \f$ arcno\f$ is an `int`, denoting that \f$ p\f$ is met as the
+ * \f$arcno\f$-th point when shooting a vertical ray at \f$ x\f$, starting from
+ * \f$-\infty\f$ (where counting starts with \f$ 0\f$).
+ *
+ * In addition to the methods listed below, the copy constructor and assignment
+ * operator for `Point_2` objects are also supported.
+ *
+ * The functor `Construct_point_2` constructs `Point_2` instances.
+ */
+
+ class Point_2 {
+ public:
+
+ /// \name Modifiers
+ /// @{
+
+ /*! returns the \f$ x\f$-coordinate of `p`.
+ */
+ Algebraic_real_1 x () const;
+
+ /*! returns the \f$ y\f$-coordinates of `p`.
+ *
+ * Attention: As described above, points are not stored
+ * by their \f$ y\f$-coordinate in `Algebraic_real_1` representation. In fact,
+ * this representation must be computed on demand, and might become quite
+ * costly for points defined by high-degree polynomials. Therefore, it is
+ * recommended to avoid to call this function as much as possible.
+ */
+ Algebraic_real_1 y () const;
+
+ /*! returns a `Curve_2` instance that `p`is part of.
+ */
+ Curve_2 curve () const;
+
+ /*! returns the arc number of `p`.
+ */
+ int arcno () const;
+
+ /*! returns double-approximations of the \f$ x\f$- and \f$ y\f$-coordinates.
+ */
+ std::pair to_double () const;
+
+ /// @}
+
+ }; /* end Arr_algebraic_segment_traits_2::Point_2 */
+
+ /*! A model of the `ArrangementBasicTraits_2::X_monotone_curve_2` concept.
+ * Represents terminal segments of an algebraic curves, that means vertical
+ * segments or \f$ x\f$-monotone segments with no critical \f$ x\f$-coordinate
+ * in the interior of their \f$ x\f$-range. Terminal segments might either be
+ * bounded or unbounded. By definition, each interior point of a non-vertical
+ * segment has the same arc number (see the documentation of type `Point_2`
+ * above, which is called the arc number of the segment (note the arc
+ * number at the endpoints might differ). Such segments are represented
+ * internally by a 4-tuple \f$ (p,q,cv,arcno)\f$, where \f$ p\f$ and \f$ q\f$
+ * are the endpoints, \f$ cv\f$ is the supporting curve that the segment
+ * belongs to, and arcno is the arc number of the segment.
+ *
+ * Arbitrary (weakly) \f$ x\f$-monotone segments are presented by a range
+ * of `X_monotone_curve_2` instances, whose union equals the segment.
+ * The functor `Construct_x_monotone_segment_2` allows their construction.
+ * To construct all (maximal) terminal segments of a curve,
+ * use the `Make_x_monotone_2` functor supplied by the traits class.
+ */
+ class X_monotone_curve_2 {
+ public:
+
+ /// \name Modifiers
+ /// @{
+
+ /*! returns the supporting algebraic curve of `s`.
+ */
+ Curve_2 curve () const;
+
+ /*! returns whether `s` is a vertical segment.
+ */
+ bool is_vertical () const;
+
+ /*! returns whether `s` has a finite endpoint on the left
+ */
+ bool is_finite (CGAL::Arr_curve_end ce) const;
+
+ /*! \pre (The corresponding curve end is finite)
+ */
+ Point_2 curve_end (CGAL::Arr_curve_end ce) const;
+
+ /*! returns the arc number of the segment.
+ * \pre (The segment is non-vertical)
+ */
+ int arcno () const;
+
+ /*! returns the \f$ x\f$-coordinate of a vertical segment.
+ * \pre (The segment is vertical)
+ */
+ Algebraic_real_1 x () const;
+
+ /// @}
+
+ }; /* end Arr_algebraic_segment_traits_2::X_monotone_curve_2 */
}; /* end Arr_algebraic_segment_traits_2 */
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_bounded_planar_topology_traits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_bounded_planar_topology_traits_2.h
index 9bda6a296b9..862416a2fa3 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_bounded_planar_topology_traits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_bounded_planar_topology_traits_2.h
@@ -49,10 +49,10 @@ public:
/// \name Creation
/// @{
- /*! Default constructor. */
+ /*! constructs default */
Arr_bounded_planar_topology_traits_2();
- /*! Constructor from a geometry-traits object.
+ /*! constructs from a geometry-traits object.
* \param traits the traits.
*/
Arr_bounded_planar_topology_traits_2(const GeometryTraits_2* traits);
@@ -62,16 +62,16 @@ public:
/// \name Accessors
/// @{
- /*! Obtain the DCEL (const version). */
+ /*! obtains the DCEL (const version). */
const Dcel& dcel() const;
- /*! Obtain the DCEL (non-const version). */
+ /*! obtains the DCEL (non-const version). */
Dcel& dcel();
- /*! Obtain the unbounded face (const version). */
+ /*! obtains the unbounded face (const version). */
const Face* unbounded_face() const;
- /*! Obtain the unbounded face (non-const version). */
+ /*! obtains the unbounded face (non-const version). */
Face* unbounded_face();
/// @}
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_circle_segment_traits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_circle_segment_traits_2.h
index 303a00ded01..b3a39fc3e07 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_circle_segment_traits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_circle_segment_traits_2.h
@@ -35,7 +35,7 @@ namespace CGAL {
* \cgalModels{ArrangementTraits_2,ArrangementDirectionalXMonotoneTraits_2}
*
*/
-template< typename Kernel >
+template
class Arr_circle_segment_traits_2 {
public:
@@ -133,7 +133,7 @@ public:
/*! returns the target point.
*
* \pre `cv` is not a full circle.
- */
+ */
const Point_2& target() const;
/*! returns the orientation of the curve (`COLLINEAR` in case of line
@@ -189,7 +189,7 @@ public:
/// \name Creation
/// @{
- /*! default constructor.
+ /*! constructs default
*/
Point_2();
@@ -323,15 +323,15 @@ public:
/// \name Creation
/// @{
- /*! Trims the given x-monotone curve to an from src to tgt.
+ /*! trims the given x-monotone curve to an from src to tgt.
* \ pre `src` and `tgt` lies on the curve
*/
X_monotone_curve_2(const X_monotone_curve_2& xcv,
const Point_2& src,
- const Point_2& tgt)const
+ const Point_2& tgt) const
/// @}
- } /* end Arr_circle_segment_traits_2::Trim_2 */
+ } /* end Arr_circle_segment_traits_2::Trim_2 */
}; /* end Arr_circle_segment_traits_2 */
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_conic_traits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_conic_traits_2.h
index 2db8001f4b1..a68feead26c 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_conic_traits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_conic_traits_2.h
@@ -260,11 +260,11 @@ public:
/// \name Creation
/// @{
- /*! construct a default point.
+ /*! constructs a default point.
*/
Point_2();
- /*! construct a point from an algebraic point.
+ /*! constructs a point from an algebraic point.
*/
Point_2(const typename Alg_kernel::Point_2& p);
@@ -401,7 +401,7 @@ public:
*/
X_monotone_curve_2 operator()(const Curve_2& cv) const;
- /*! Constructs an \f$x\f$-monotone curve connecting the two given endpoints.
+ /*! constructs an \f$x\f$-monotone curve connecting the two given endpoints.
* \param source The first point.
* \param target The second point.
* \pre `source` and `target` must not be the same.
@@ -409,7 +409,7 @@ public:
*/
X_monotone_curve_2 operator()(const Point_2& source, const Point_2& target) const;
- /*! Constructs a special segment of a given line connecting to given
+ /*! constructs a special segment of a given line connecting to given
* endpoints.
* \param a, b, c The coefficients of the supporting line (\f$ax + by + c = 0\f$).
* \param source The source point.
@@ -427,33 +427,34 @@ public:
*/
class Construct_bbox_2 {
public:
- /*! Obtain a bounding box for a conic arc.
+ /*! obtains a bounding box for a conic arc.
* \param cv The conic arc.
* \return The bounding box.
*/
Bbox_2 operator()(const Curve_2& cv) const { return bbox(cv); }
- /*! Obtain a bounding box for an \f$x\f$-monotone conic arc.
+ /*! obtains a bounding box for an \f$x\f$-monotone conic arc.
* \param xcv The \f$x\f$-monotone conic arc.
* \return The bounding box.
*/
Bbox_2 operator()(const X_monotone_curve_2& xcv) const { return bbox(xcv); }
};
- /*! \name Auxiliary Functor definitions, used gor, e.g., the landmarks
+ /*! \name Auxiliary Functor definitions, used gor, e.g., the landmarks \
* point-location strategy and the drawing function.
*/
//@{
typedef double Approximate_number_type;
typedef CGAL::Cartesian Approximate_kernel;
typedef Approximate_kernel::Point_2 Approximate_point_2;
+ //@}
/*! \class Approximate_2
* A functor that approximates a point and an \f$x\f$-monotone curve.
*/
class Approximate_2 {
public:
- /*! Obtain an approximation of a point coordinate.
+ /*! obtains an approximation of a point coordinate.
* \param p The exact point.
* \param i The coordinate index (either 0 or 1).
* \pre `i` is either 0 or 1.
@@ -462,7 +463,7 @@ public:
*/
Approximate_number_type operator()(const Point_2& p, int i) const;
- /*! Obtain an approximation of a point.
+ /*! obtains an approximation of a point.
* \param p The exact point.
*/
Approximate_point_2 operator()(const Point_2& p) const;
@@ -496,7 +497,7 @@ public:
*/
class Trim_2 {
public:
- /*! Trims the given \f$x\f$-monotone arc to new endpoints.
+ /*! trims the given \f$x\f$-monotone arc to new endpoints.
* \param xcv The \f$x\f$-monotone arc
* \param source The new source point.
* \param target The new target point.
@@ -505,28 +506,28 @@ public:
X_monotone_curve_2 operator()(const X_monotone_curve_2& xcv,
const Point_2& source,
const Point_2& target) const;
-
};
/// \name Accessing Functor Objects
/// @{
- /*! Obtain a `Construct_curve_2` functor. */
+ /*! obtains a `Construct_curve_2` functor. */
Construct_curve_2 construct_curve_2_object() const;
- /*! Obtain a `Construct_x_monotone_curve_2` functor. */
+ /*! obtains a `Construct_x_monotone_curve_2` functor. */
Construct_x_monotone_curve_2 construct_x_monotone_curve_2_object() const;
- /*! Obtain a `Bbox_2` functor. */
+ /*! obtains a `Bbox_2` functor. */
Construct_bbox_2 construct_bbox_2_object() const;
- /*! Obtain a `Trim_2` functor. */
+ /*! obtains a `Trim_2` functor. */
Trim_2 trim_2_object() const;
- /*! Obtain an `Approximate_2` functor. */
+ /*! obtains an `Approximate_2` functor. */
Approximate_2 approximate_2_object() const;
/// @}
}; /* end Arr_conic_traits_2 */
+
} /* end namespace CGAL */
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_consolidated_curve_data_traits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_consolidated_curve_data_traits_2.h
index 2ed18e6be6b..c554bc499c2 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_consolidated_curve_data_traits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_consolidated_curve_data_traits_2.h
@@ -1,30 +1,28 @@
namespace CGAL {
-/*!
-\ingroup PkgArrangementOnSurface2TraitsClasses
-
-The class `Arr_consolidated_curve_data_traits_2` is a model of the concept `ArrangementTraits_2`,
-and serves as a decorator class that enables the extension of the curve
-type defined by the `Traits` parameter. The traits class inherits its
-point type from `Traits::Point_2`, and defines the types
-`Curve_2` and `X_monotone_curve_2` extended with extraneous data
-fields of type `Data`.
-
-Each `Curve_2` object is associated with a single data field of type
-`Data`, and each `X_monotone_curve_2` object is associated with
-a set of unique data objects. When a curve is subdivided into \f$ x\f$-monotone
-subcurves, all resulting subcurves are associated with a list containing
-a single data object, copied from the inducing curve. When an \f$ x\f$-monotone
-curve is split, its data set is duplicated, and inserted into the sets of
-both resulting subcurves. In case two (or more) \f$ x\f$-monotone curves
-overlap, their data sets are consolidated, and are inserted into the set
-of the \f$ x\f$-monotone curve that represents the overlap.
-
-\cgalModels{ArrangementTraits_2}
-
-*/
-template< typename Traits, typename Data >
+/*! \ingroup PkgArrangementOnSurface2TraitsClasses
+ *
+ * The class `Arr_consolidated_curve_data_traits_2` is a model of the concept
+ * `ArrangementTraits_2`, and serves as a decorator class that enables the
+ * extension of the curve type defined by the `Traits` parameter. The traits
+ * class inherits its point type from `Traits::Point_2`, and defines the types
+ * `Curve_2` and `X_monotone_curve_2` extended with extraneous data fields of
+ * type `Data`.
+ *
+ * Each `Curve_2` object is associated with a single data field of type `Data`,
+ * and each `X_monotone_curve_2` object is associated with a set of unique data
+ * objects. When a curve is subdivided into \f$ x\f$-monotone subcurves, all
+ * resulting subcurves are associated with a list containing a single data
+ * object, copied from the inducing curve. When an \f$ x\f$-monotone curve is
+ * split, its data set is duplicated, and inserted into the sets of both
+ * resulting subcurves. In case two (or more) \f$ x\f$-monotone curves overlap,
+ * their data sets are consolidated, and are inserted into the set of the \f$
+ * x\f$-monotone curve that represents the overlap.
+ *
+ * \cgalModels{ArrangementTraits_2}
+ */
+template
class Arr_consolidated_curve_data_traits_2
: public Arr_curve_data_traits_2,
_Consolidate_unique_lists,
@@ -32,139 +30,106 @@ class Arr_consolidated_curve_data_traits_2
{
public:
-/// \name Types
-/// @{
+ /// \name Types
+ /// @{
-/*!
-the base traits-class.
-*/
-typedef Traits Base_traits_2;
+ //! the base traits-class.
+ typedef Traits Base_traits_2;
-/*!
-the base curve.
-*/
-typedef typename Base_traits_2::Curve_2 Base_curve_2;
+ //! the base curve.
+ typedef typename Base_traits_2::Curve_2 Base_curve_2;
-/*!
-the base \f$ x\f$-monotone curve curve.
-*/
-typedef typename Base_traits_2::X_monotone_curve_2 Base_x_monotone_curve_2;
+ //! the base \f$ x\f$-monotone curve curve.
+ typedef typename Base_traits_2::X_monotone_curve_2 Base_x_monotone_curve_2;
-/*!
-a set of data objects that is associated with an \f$ x\f$-monotone curve.
-*/
-typedef unspecified_type typedef Data_container;
+ //! a set of data objects that is associated with an \f$ x\f$-monotone curve.
+ typedef unspecified_type typedef Data_container;
-/*!
-a non-mutable iterator for the data objects in the data container.
-*/
-typedef unspecified_type typedef Data_iterator;
+ //! a non-mutable iterator for the data objects in the data container.
+ typedef unspecified_type typedef Data_iterator;
-/// @}
+ /// @}
+ /*! The `Data_container` class nested within the consolidated
+ * curve-data traits and associated with the `Traits::X_monotone_curve_2` type
+ * is maintained as a list with unique data objects. This representation is
+ * simple and efficient in terms of memory consumption. It also requires that
+ * the `Data` class supports only the equality operator. Note however that
+ * most set operations require linear time.
+ */
+ class Data_container {
+ public:
-/*!
+ /// \name Creation
+ /// @{
+ /*! constructs default */
+ Data_container();
-The `Data_container` class nested within the consolidated
-curve-data traits and associated with the `Traits::X_monotone_curve_2`
-type is maintained as a list with unique data objects. This representation is
-simple and efficient in terms of memory consumption. It also requires that
-the `Data` class supports only the equality operator. Note however that
-most set operations require linear time.
+ /*! constructs set containing a single `data` object. */
+ Data_container(const Data& data);
-*/
-class Data_container {
-public:
+ /// @}
-/// \name Creation
-/// @{
+ /// \name Access Functions
+ /// @{
-/*!
-default constructor.
-*/
-Data_container ();
+ /*! returns the number of data objects in the set. */
+ std::size_t size() const;
-/*!
-constructs set containing a single `data` object.
-*/
-Data_container (const Data& data);
+ /*! returns an iterator pointing to the first data object. */
+ Data_iterator begin() const;
-/// @}
+ /*! returns a past-the-end iterator for the data objects. */
+ Data_iterator end() const;
-/// \name Access Functions
-/// @{
+ /*! returns the first data object inserted into the set.
+ * \pre The number of data objects is not \f$ 0\f$.
+ */
+ const Data& front() const;
-/*!
-returns the number of data objects in the set.
-*/
-std::size_t size () const;
+ /*! returns the last data object inserted into the set.
+ * \pre The number of data objects is not \f$ 0\f$.
+ */
+ const Data& back() const;
-/*!
-returns an iterator pointing to the first data object.
-*/
-Data_iterator begin () const;
+ /// @}
-/*!
-returns a past-the-end iterator for the data objects.
-*/
-Data_iterator end () const;
+ /// \name Predicates
+ /// @{
-/*!
-returns the first data object inserted into the set.
-\pre The number of data objects is not \f$ 0\f$.
-*/
-const Data& front () const;
+ /*! checks whether the two sets contain the same data objects (regardless of
+ * order).
+ */
+ bool operator==(const Data_container& other) const;
-/*!
-returns the last data object inserted into the set.
-\pre The number of data objects is not \f$ 0\f$.
-*/
-const Data& back () const;
+ /*! finds the given `data` object in the set and returns an iterator
+ * for this object, or `end()` if it is not found.
+ */
+ Data_iterator find(const Data& data);
-/// @}
+ /// @}
-/// \name Predicates
-/// @{
+ /// \name Modifiers
+ /// @{
-/*!
-check if the two sets contain the same data objects (regardless of order).
-*/
-bool operator== (const Data_container& other) const;
+ /*! inserts the given `data` object into the set. Returns `true` on
+ * success, or `false` if the set already contains the object.
+ */
+ bool insert(const Data& data);
-/*!
-find the given `data` object in the set and returns an iterator
-for this object, or `end()` if it is not found.
-*/
-Data_iterator find (const Data& data);
+ /*! erases the given `data` object from the set. Returns `true` on
+ * success, or `false` if the set does not contain the object.
+ */
+ bool erase(const Data& data);
-/// @}
-
-/// \name Modifiers
-/// @{
-
-/*!
-inserts the given `data` object into the set. Returns `true` on
-success, or `false` if the set already contains the object.
-*/
-bool insert (const Data& data);
-
-/*!
-erases the given `data` object from the set. Returns `true` on
-success, or `false` if the set does not contain the object.
-*/
-bool erase (const Data& data);
-
-/*!
-clears the set.
-*/
-void clear ();
-
-/// @}
-
-}; /* end Arr_consolidated_curve_data_traits_2::Data_container */
+ /*! clears the set. */
+ void clear();
+ /// @}
+ }; /* end Arr_consolidated_curve_data_traits_2::Data_container */
}; /* end Arr_consolidated_curve_data_traits_2 */
+
} /* end namespace CGAL */
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_counting_traits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_counting_traits_2.h
new file mode 100644
index 00000000000..b4f5883c458
--- /dev/null
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_counting_traits_2.h
@@ -0,0 +1,145 @@
+// Copyright (c) 2005,2007,2009,2010,2011 Tel-Aviv University (Israel).
+// All rights reserved.
+//
+// This file is part of CGAL (www.cgal.org).
+//
+// $URL$
+// $Id$
+// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial
+//
+// Author(s): Efi Fogel
+// Eric Berberich
+
+namespace CGAL {
+
+/*! \ingroup PkgArrangementOnSurface2TraitsClasses
+ *
+ * A metadata traits-class decorator for the arrangement package. It counts the
+ * number of invocations of traits-class functors. It is parameterized with
+ * another traits class and inherits from it. For each traits method it
+ * maintains a counter that counts the number of invocations into the method.
+ *
+ * It models all the concepts that the original traits models.
+ */
+
+template
+class Arr_counting_traits_2 : public BaseTraits {
+public:
+ enum Operation_id {
+ COMPARE_X_2_OP = 0,
+ COMPARE_XY_2_OP,
+ CONSTRUCT_MIN_VERTEX_2_OP,
+ CONSTRUCT_MAX_VERTEX_2_OP,
+ IS_VERTICAL_2_OP,
+ COMPARE_Y_AT_X_2_OP,
+ EQUAL_2_POINTS_OP,
+ EQUAL_2_CURVES_OP,
+ COMPARE_Y_AT_X_LEFT_2_OP,
+ COMPARE_Y_AT_X_RIGHT_2_OP,
+ MAKE_X_MONOTONE_2_OP,
+ SPLIT_2_OP,
+ INTERSECT_2_OP,
+ ARE_MERGEABLE_2_OP,
+ MERGE_2_OP,
+ CONSTRUCT_2_OPPOSITE_2_OP,
+ COMPARE_ENDPOINTS_XY_2_OP,
+ APPROXIMATE_2_COORD_OP,
+ APPROXIMATE_2_POINT_OP,
+ APPROXIMATE_2_CURVE_OP,
+ PARAMETER_SPACE_IN_X_2_CURVE_END_OP,
+ PARAMETER_SPACE_IN_X_2_POINT_OP,
+ IS_ON_X_IDENTIFICATION_POINT_2_OP,
+ IS_ON_X_IDENTIFICATION_CURVE_2_OP,
+ COMPARE_Y_ON_BOUNDARY_2_OP,
+ COMPARE_Y_NEAR_BOUNDARY_2_OP,
+ PARAMETER_SPACE_IN_Y_2_CURVE_END_OP,
+ PARAMETER_SPACE_IN_Y_2_POINT_OP,
+ IS_ON_Y_IDENTIFICATION_2_POINT_OP,
+ IS_ON_Y_IDENTIFICATION_2_CURVE_OP,
+ COMPARE_X_ON_BOUNDARY_2_POINTS_OP,
+ COMPARE_X_ON_BOUNDARY_2_POINT_CURVE_END_OP,
+ COMPARE_X_ON_BOUNDARY_2_CURVE_ENDS_OP,
+ COMPARE_X_NEAR_BOUNDARY_2_OP,
+ NUMBER_OF_OPERATIONS
+ };
+
+ /// \name Creation
+ /// @{
+
+ /*! constructs default */
+ template
+ Arr_counting_traits_2(Args ... args) : Base(std::forward(args)...) {}
+
+ /*! disables copy constructor. */
+ Arr_counting_traits_2(const Arr_counting_traits_2&) = delete;
+
+ /// @}
+
+ /*! obtains the counter of the given operation */
+ std::size_t count(Operation_id id) const;
+
+ /*! prints the counter associated with an operation. */
+ template
+ OutStream& print(OutStream& os, Operation_id id) const;
+
+ /// \name Types and functors inherited from `BaseTraits`
+ /// @{
+
+ using Has_left_category = typename Base::Has_left_category;
+ using Has_merge_category = typename Base::Has_merge_category;
+ using Has_do_intersect_category = typename Base::Has_do_intersect_category;
+
+ using Left_side_category =
+ typename internal::Arr_complete_left_side_category::Category;
+ using Bottom_side_category =
+ typename internal::Arr_complete_bottom_side_category::Category;
+ using Top_side_category =
+ typename internal::Arr_complete_top_side_category::Category;
+ using Right_side_category =
+ typename internal::Arr_complete_right_side_category::Category;
+
+ using Point_2 = typename Base::Point_2;
+ using X_monotone_curve_2 = typename Base::X_monotone_curve_2;
+ using Curve_2 = typename Base::Curve_2;
+
+ /// @}
+
+ /// \name Obtain the appropriate functor
+ /// @{
+
+ Compare_x_2 compare_x_2_object() const;
+ Compare_xy_2 compare_xy_2_object() const;
+ Construct_min_vertex_2 construct_min_vertex_2_object() const;
+ Construct_max_vertex_2 construct_max_vertex_2_object() const;
+ Is_vertical_2 is_vertical_2_object() const;
+ Compare_y_at_x_2 compare_y_at_x_2_object() const;
+ Equal_2 equal_2_object() const;
+ Compare_y_at_x_left_2 compare_y_at_x_left_2_object() const;
+ Compare_y_at_x_right_2 compare_y_at_x_right_2_object() const;
+ Make_x_monotone_2 make_x_monotone_2_object() const;
+ Split_2 split_2_object() const;
+ Intersect_2 intersect_2_object() const;
+ Are_mergeable_2 are_mergeable_2_object() const;
+ Merge_2 merge_2_object() const;
+ Construct_opposite_2 construct_opposite_2_object() const;
+ Compare_endpoints_xy_2 compare_endpoints_xy_2_object() const;
+ Approximate_2 approximate_2_object() const;
+ Parameter_space_in_x_2 parameter_space_in_x_2_object() const;
+ Is_on_x_identification_2 is_on_x_identification_2_object() const;
+ Compare_y_on_boundary_2 compare_y_on_boundary_2_object() const;
+ Compare_y_near_boundary_2 compare_y_near_boundary_2_object() const;
+ Parameter_space_in_y_2 parameter_space_in_y_2_object() const;
+ Is_on_y_identification_2 is_on_y_identification_2_object() const;
+ Compare_x_on_boundary_2 compare_x_on_boundary_2_object() const;
+ Compare_x_near_boundary_2 compare_x_near_boundary_2_object() const;
+
+ /// @}
+
+ /*! cleans all operation counters */
+ void clear_counters();
+};
+
+template
+inline OutStream& operator<<(OutStream& os,
+ const Arr_counting_traits_2& traits);
+} // namespace CGAL
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_curve_data_traits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_curve_data_traits_2.h
index e75623e8cd7..c185f3f12fd 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_curve_data_traits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_curve_data_traits_2.h
@@ -101,8 +101,7 @@ public:
/// \name Creation
/// @{
- /*! default constructor.
- */
+ /*! constructs default */
Curve_2();
/*! constructs curve from the given `base` curve with uninitialized
@@ -131,49 +130,49 @@ public:
/// @}
-}; /* end Arr_curve_data_traits_2::Curve_2 */
+ }; /* end Arr_curve_data_traits_2::Curve_2 */
-/*! The `X_monotone_curve_2` class nested within the curve-data traits extends
- * the `Base_traits_2::X_monotone_curve_2` type with an extra data field.
- */
-class X_monotone_curve_2 : public Base_x_monotone_curve_2 {
-public:
-
- /// \name Creation
- /// @{
-
- /*! default constructor.
+ /*! The `X_monotone_curve_2` class nested within the curve-data traits extends
+ * the `Base_traits_2::X_monotone_curve_2` type with an extra data field.
*/
- X_monotone_curve_2();
+ class X_monotone_curve_2 : public Base_x_monotone_curve_2 {
+ public:
- /*! constructs an \f$ x\f$-monotone curve from the given `base` curve with
- * uninitialized data field.
- */
- X_monotone_curve_2(const Base_x_monotone_curve_2& base);
+ /// \name Creation
+ /// @{
- /*! constructs an \f$ x\f$-monotone curve from the given `base` \f$
- * x\f$-monotone curve with an attached `data` field.
- */
- X_monotone_curve_2(const Base_x_monotone_curve_2& base,
- const X_monotone_curve_data& data);
+ /*! constructs default */
+ X_monotone_curve_2();
- /// @}
+ /*! constructs an \f$ x\f$-monotone curve from the given `base` curve with
+ * uninitialized data field.
+ */
+ X_monotone_curve_2(const Base_x_monotone_curve_2& base);
- /// \name Access Functions
- /// @{
+ /*! constructs an \f$ x\f$-monotone curve from the given `base` \f$
+ * x\f$-monotone curve with an attached `data` field.
+ */
+ X_monotone_curve_2(const Base_x_monotone_curve_2& base,
+ const X_monotone_curve_data& data);
- /*! returns the field (a non-const version, which returns a reference
- * to the data object, is also available).
- */
- const X_monotone_curve_data& data() const;
+ /// @}
- /*! sets the data field.
- */
- void set_data(const X_monotone_curve_data& data);
+ /// \name Access Functions
+ /// @{
- /// @}
+ /*! returns the field (a non-const version, which returns a reference
+ * to the data object, is also available).
+ */
+ const X_monotone_curve_data& data() const;
-}; /* end Arr_curve_data_traits_2::X_monotone_curve_2 */
+ /*! sets the data field.
+ */
+ void set_data(const X_monotone_curve_data& data);
+
+ /// @}
+
+ }; /* end Arr_curve_data_traits_2::X_monotone_curve_2 */
}; /* end Arr_curve_data_traits_2 */
+
} /* end namespace CGAL */
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_geodesic_arc_on_sphere_traits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_geodesic_arc_on_sphere_traits_2.h
index d34b40072a9..8c766b7783e 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_geodesic_arc_on_sphere_traits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_geodesic_arc_on_sphere_traits_2.h
@@ -82,7 +82,7 @@ namespace CGAL {
/// \name Creation
/// @{
- /*! Constructs a point from a direction and a location.
+ /*! constructs a point from a direction and a location.
* \param[in] dir the direction.
* \param[in] location indicates the location of the point pre-image
* in the parameter space.
@@ -94,13 +94,13 @@ namespace CGAL {
/// \name Operations
/// @{
- /*! Set the location of the point pre-image in the parameter space.
+ /*! sets the location of the point pre-image in the parameter space.
* \param[in] location the updated location of the point pre-image in
* the parameter space.
*/
void set_location(Location_type location);
- /*! Obtain the location of the point.
+ /*! obtains the location of the point.
* \return the location of the point pre-image in the parameter space.
*/
Location_type location() const;
@@ -126,7 +126,7 @@ namespace CGAL {
/// \name Creation
/// @{
- /*! Constructs an \f$x\f$-monotone geodesic arc.
+ /*! constructs an \f$x\f$-monotone geodesic arc.
* \param[in] source the source point of the arc.
* \param[in] target the target point of the arc.
* \param[in] normal the normal of the plane that contains the arc.
@@ -146,7 +146,7 @@ namespace CGAL {
bool is_degenerate = false,
bool is_empty = false);
- /*! Construct an \f$x\f$-monotone geodesic arc.
+ /*! construct an \f$x\f$-monotone geodesic arc.
* \param[in] normal the normal of the plane containing the arc.
* \param[in] source the source-point direction.
* \param[in] target the target-point direction.
@@ -156,7 +156,7 @@ namespace CGAL {
const Point_2& target,
const Direction_3& normal);
- /*! Construct a full great-circle.
+ /*! construct a full great-circle.
* \param[in] point the endpoint of the full great-circle.
* \param[in] normal the normal of the plane containing the arc.
* \pre the point lies on the given plane.
@@ -171,90 +171,90 @@ namespace CGAL {
/// \name Operations
/// @{
- /*! Sets the source endpoint.
+ /*! sets the source endpoint.
* \param[in] source the updated source endpoint.
*/
void set_source(const Point_2& source);
- /*! Sets the target endpoint.
+ /*! sets the target endpoint.
* \param[in] target the updated target endpoint.
*/
void set_target(const Point_2& target);
- /*! Sets the normal of the underlying plane.
+ /*! sets the normal of the underlying plane.
* \param[in] normal the updated normal of the underlying plane.
*/
void set_normal(const Direction_3& normal);
- /*! Sets the flag that indicates whether the arc is vertical.
+ /*! sets the flag that indicates whether the arc is vertical.
* \param[in] flag indicates whether the arc pre-image in the parameter
* space is vertical.
*/
void set_is_vertical(bool flag);
- /*! Sets the flag that indicates whether the direction of the arc
+ /*! sets the flag that indicates whether the direction of the arc
* pre-image in the parameter space is from left to right.
* \param flag indicates whether the arc pre-image in the parameter
* space is from left to right.
*/
void set_is_directed_right(bool flag);
- /*! Sets the flag that indicates whether the arc is a full great circle.
+ /*! sets the flag that indicates whether the arc is a full great circle.
* \param[in] flag indicates whether the arc is a full great circle.
*/
void set_is_full(bool flag);
- /*! Sets the flag that indicates whether the arc degenerates to a point.
+ /*! sets the flag that indicates whether the arc degenerates to a point.
* \param[in] flag indicates whether the arc degenerates to a point.
*/
void set_is_degenerate(bool flag);
- /*! Sets the flag that indicates whether the arc is empty.
+ /*! sets the flag that indicates whether the arc is empty.
* \param[in] flag indicates whether the arc is empty.
*/
void set_is_empty(bool flag);
- /*! Obtains the source point.
+ /*! obtains the source point.
*/
const Point_2& source() const;
- /*! Obtains the target point.
+ /*! obtains the target point.
*/
const Point_2& target() const;
- /*! Obtains the normal to the containing plane.
+ /*! obtains the normal to the containing plane.
*/
const Direction_3& normal() const;
- /*! Obtains the (lexicographically) left endpoint direction.
+ /*! obtains the (lexicographically) left endpoint direction.
*/
const Point_2& left() const;
- /*! Obtains the (lexicographically) right endpoint.
+ /*! obtains the (lexicographically) right endpoint.
*/
const Point_2& right() const;
- /*! Determines whether the arc is vertical.
+ /*! determines whether the arc is vertical.
*/
bool is_vertical() const;
- /*! Determines whether the arc is directed lexicographically from left to
+ /*! determines whether the arc is directed lexicographically from left to
* right.
*/
bool is_directed_right() const;
- /*! Determines whether the arc is a great circle.
+ /*! determines whether the arc is a great circle.
*/
bool is_full() const;
- /*! Determines whether the arc is degenerate.
+ /*! determines whether the arc is degenerate.
*/
bool is_degenerate() const;
- /*! Determines whether the arc is empty. */
+ /*! determines whether the arc is empty. */
bool is_empty() const;
- /*! Determines whether the arc is a meridian.
+ /*! determines whether the arc is a meridian.
*/
bool is_meridian() const;
@@ -283,6 +283,7 @@ namespace CGAL {
*
* \cgalModels{Assignable,CopyConstructible,AdaptableUnaryFunction,AdaptableTernaryFunction}
*/
+
/*!
*/
class Construct_point_2 {
@@ -297,7 +298,7 @@ namespace CGAL {
/// \name Operations
/// @{
- /*! Construct a point on the sphere from three coordinates, which define
+ /*! constructs a point on the sphere from three coordinates, which define
* a (not necessarily normalized) direction.
* \param[in] x the x coordinate
* \param[in] y the y coordinate
@@ -305,7 +306,7 @@ namespace CGAL {
*/
Point_2 operator()(const FT& x, const FT& y, const FT& z);
- /*! Construct a point on the sphere from a (not necessarily normalized)
+ /*! constructs a point on the sphere from a (not necessarily normalized)
* direction.
* \param other the other direction
*/
@@ -331,7 +332,7 @@ namespace CGAL {
/// \name Operations
/// @{
- /*! Construct the minor geodesic arc from two endpoints. The minor arc
+ /*! constructs the minor geodesic arc from two endpoints. The minor arc
* is the one with the smaller angle among the two geodesic arcs with
* the given endpoints.
* 1. Find out whether the arc is x-monotone.
@@ -351,7 +352,7 @@ namespace CGAL {
*/
X_monotone_curve_2 operator()(const Point_2& p, const Point_2& q);
- /*! Construct a full great circle from a normal to a plane.
+ /*! constructs a full great circle from a normal to a plane.
* Observe that the constructed arc has one endpoint that lies on
* the identification curve. This point is considered both the source and
* target (and also the left and right) point of the arc.
@@ -360,7 +361,7 @@ namespace CGAL {
*/
X_monotone_curve_2 operator()(const Direction_3& normal);
- /*! Construct a geodesic arc from two endpoints and a normal to the plane
+ /*! constructs a geodesic arc from two endpoints and a normal to the plane
* containing the arc. The two endpoints determine the plane. The normal
* determines the orientation of the plane and the final arc (whether its
* the minor arc or the major arc). The right-hand rule can be used
@@ -395,12 +396,12 @@ namespace CGAL {
/// \name Operations
/// @{
- /*! Construct a full great circle from a normal to a plane.
+ /*! constructs a full great circle from a normal to a plane.
* \param normal the normal to the plane containing the great circle.
*/
X_monotone_curve_2 operator()(const Direction_3& normal);
- /*! Construct the minor geodesic arc from two endpoints. The minor arc
+ /*! constructs the minor geodesic arc from two endpoints. The minor arc
* is the one with the smaller angle among the two geodesic arcs with
* the given endpoints.
* 1. Find out whether the arc is x-monotone.
@@ -419,7 +420,7 @@ namespace CGAL {
*/
Curve_2 operator()(const Point_2& p, const Point_2& q);
- /*! Construct a geodesic arc from two endpoints and a normal to the plane
+ /*! constructs a geodesic arc from two endpoints and a normal to the plane
* containing the arc. The two endpoints determine the plane. The normal
* determines the orientation of the plane and the final arc (whether its
* the minor arc or the major arc). The right-hand rule can be used
@@ -434,15 +435,15 @@ namespace CGAL {
/// @}
};
- /*! Returns an instance of `Construct_point_2`.
+ /*! returns an instance of `Construct_point_2`.
*/
Construct_point_2 construct_point_2_object() const;
- /*! Returns an instance of `Construct_x_monotone_curve_2`.
+ /*! returns an instance of `Construct_x_monotone_curve_2`.
*/
Construct_x_monotone_curve_2 construct_x_monotone_curve_2_object() const;
- /*! Returns an instance of `Construct_curve_2`.
+ /*! returns an instance of `Construct_curve_2`.
*/
Construct_curve_2 construct_curve_2_object() const;
};
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_linear_traits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_linear_traits_2.h
index 7f1d5825c01..9a842135e7c 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_linear_traits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_linear_traits_2.h
@@ -23,7 +23,7 @@ namespace CGAL {
*
* \cgalModels{ArrangementTraits_2,ArrangementLandmarkTraits_2,ArrangementOpenBoundaryTraits_2}
*/
-template< typename Kernel >
+template
class Arr_linear_traits_2 {
public:
@@ -147,7 +147,7 @@ public:
/// \name Creation
/// @{
- /*! Trims the given x-monotone curve to an from src to tgt.
+ /*! trims the given x-monotone curve to an from src to tgt.
* \ pre `src` and `tgt` lies on the curve
*/
X_monotone_curve_2 operator()(const X_monotone_curve_2& xcv,
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_polycurve_traits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_polycurve_traits_2.h
index 8c1db150c3b..cedf54756da 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_polycurve_traits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_polycurve_traits_2.h
@@ -93,6 +93,7 @@ namespace CGAL {
/// \name Types
/// @{
+
/*!
*/
// TODO: Have to turn these into links, so whenever I mention Point_2 it
@@ -119,14 +120,14 @@ namespace CGAL {
/// \name Operations
/// @{
- /*! Obtain a polycurve that comprises of one given subcurve.
+ /*! obtains a polycurve that comprises of one given subcurve.
* \param subcurve input subcurve.
* \pre `subcurve` is not degenerated (not tested).
* \return A polycurve with one subcurve, namely `subcurve`.
*/
Curve_2 operator()(const Subcurve_2& subcurve) const;
- /*! Construct a well-oriented polycurve from a range of either
+ /*! constructs a well-oriented polycurve from a range of either
* `SubcurveTraits_2::Point_2` or `SubcurveTraits_2::Curve_2`.
*
* \param begin iterator pointing to the first element in the
@@ -169,17 +170,17 @@ namespace CGAL {
/// \name Operations
/// @{
- /*! Append a subcurve `subcurve` to an existing polycurve `cv` at the back.
- * If `cv` is empty, `subcurve` will be its first subcurve.
+ /*! appends a subcurve `subcurve` to an existing polycurve `cv` at the
+ * back. If `cv` is empty, `subcurve` will be its first subcurve.
* \param cv a polycurve. Note, `cv` is (not necessarily) \f$x\f$-monotone.
* \param subcurve a subcurve (not necessarily \f$x\f$-monotone) to be
* appended to `cv`
*/
void operator()(Curve_2& cv, const Subcurve_2& subcurve) const;
- /*! Append a subcurve `subcurve` to an existing \f$x\f$-monotone polycurve
- * `xcv` at the back. If `xcv` is empty, `subcurve` will be its first
- * subcurve.
+ /*! appends a subcurve `subcurve` to an existing \f$x\f$-monotone
+ * polycurve `xcv` at the back. If `xcv` is empty, `subcurve` will be its
+ * first subcurve.
* \param xcv existing \f$x\f$-monotone polycurve
* \param subcurve the subcurve to be added
* \pre If `xcv` is not empty then `subcurve` extends `xcv` to the right
@@ -201,7 +202,7 @@ namespace CGAL {
/// \name Operations
/// @{
- /*! Append a subcurve `subcurve` to an existing polycurve `cv` at the
+ /*! appends a subcurve `subcurve` to an existing polycurve `cv` at the
* front. If `cv` is empty, `subcurve` will be its first subcurve.
* \param cv a polycurve. Note, `cv` is (not necessarily) \f$x\f$-monotone.
* \param subcurve a subcurve (not necessarily \f$x\f$-monotone) to be
@@ -209,9 +210,9 @@ namespace CGAL {
*/
void operator()(Curve_2& cv, const Subcurve_2& subcurve) const;
- /*! Append a subcurve `subcurve` to an existing \f$x\f$-monotone polycurve
- * `xcv` at the front. If `xcv` is empty, `subcurve` will be its first
- * subcurve.
+ /*! appends a subcurve `subcurve` to an existing \f$x\f$-monotone
+ * polycurve `xcv` at the front. If `xcv` is empty, `subcurve` will be its
+ * first subcurve.
* \param xcv existing \f$x\f$-monotone polycurve
* \param subcurve the subcurve to be added
* \pre If `xcv` is not empty then `subcurve` extends `xcv` to the left if
@@ -228,7 +229,7 @@ namespace CGAL {
class Trim_2 {
public:
- /*! Obtain a trimmed version of the polycurve with src and tgt as end
+ /*! obtains a trimmed version of the polycurve with src and tgt as end
* vertices.
* Src and tgt will be swapped if they do not conform to the direction of
* the polycurve.
@@ -238,7 +239,7 @@ namespace CGAL {
const Point_2& tgt) const;
};
- /*! Subdivide a given subcurve into \f$x\f$-monotone subcurves and
+ /*! subdivides a given subcurve into \f$x\f$-monotone subcurves and
* isolated points, and insert them into an output container. An object in
* the output container is represented by a discriminated union container
* that holds either a point or an \f$x\f$-monotone curve.
@@ -273,10 +274,10 @@ namespace CGAL {
*
* The copy and default constructor as well as the assignment operator are
* provided for polycurve subcurves. In addition, an \link
- * PkgArrangementOnSurface2op_left_shift `operator<<` \endlink for the subcurves is
- * defined for standard output streams, and an \link
- * PkgArrangementOnSurface2op_right_shift `operator>>` \endlink for the subcurves is
- * defined for standard input streams.
+ * PkgArrangementOnSurface2op_left_shift `operator<<` \endlink for the
+ * subcurves is defined for standard output streams, and an \link
+ * PkgArrangementOnSurface2op_right_shift `operator>>` \endlink for the
+ * subcurves is defined for standard input streams.
*/
template
class Curve_2 {
@@ -323,15 +324,15 @@ namespace CGAL {
/// \name Creation
/// @{
- /*! Default constructor that constructs an empty polycurve.
+ /*! constructs Default; constructs an empty polycurve.
*/
Curve_2();
- /*! Construct a polycurve from one subcurve.
+ /*! constructs a polycurve from one subcurve.
*/
Curve_2(const Subcurve_2 subcurve);
- /*! Construct a polycurve defined by the given range of subcurves
+ /*! constructs a polycurve defined by the given range of subcurves
* `[first, last)` (the value-type of `InputIterator` must be
* `SubcurveTraits_2::Curve_2`. In general, the subcurves might not
* be \f$x\f$-monotone, furthermore, they might not form a
@@ -357,7 +358,7 @@ namespace CGAL {
/// @{
/*! \deprecated
- * Obtain the number of subcurve end-points that comprise the polycurve.
+ * obtains the number of subcurve end-points that comprise the polycurve.
* Note that for a bounded polycurve, if there are \f$ n\f$ points in the
* polycurve, it comprises \f$ (n - 1)\f$ subcurves.
* Currently, only bounded polycurves are supported.
@@ -365,20 +366,21 @@ namespace CGAL {
unsigned_int points() const;
/*! \deprecated
- * Obtain an iterator pointing at the source point of the polycurve.
+ * obtains an iterator pointing at the source point of the polycurve.
*/
const_iterator begin() const;
- /*! Obtain an iterator pointing at the first subcurve of the polycurve.
+ /*! obtains an iterator pointing at the first subcurve of the polycurve.
*/
Subcurve_const_iterator begin_subcurves() const;
/*! \deprecated
- * Obtain an iterator pointing after the end of the polycurve.
+ * obtains an iterator pointing after the end of the polycurve.
*/
const_iterator end() const;
- /*! Get an iterator pointing at the past-the-end subcurve of the polycurve.
+ /*! obtains an iterator pointing at the past-the-end subcurve of the
+ * polycurve.
*/
Subcurve_const_iterator end_subcurves() const;
@@ -387,38 +389,38 @@ namespace CGAL {
*/
const_iterator rbegin() const;
- /*! Obtain an iterator pointing at the last subcurve of the polycurve.
+ /*! obtains an iterator pointing at the last subcurve of the polycurve.
*/
Subcurve_const_reverse_iterator rbegin_subcurves() const;
/*! \deprecated
- * Obtain an iterator pointing before the beginning of the polycurve.
+ * obtains an iterator pointing before the beginning of the polycurve.
*/
const_iterator rend() const;
- /*! Obtain an iterator pointing at the past-the-end subcurve of
+ /*! obtains an iterator pointing at the past-the-end subcurve of
* the polycurve in reverse order.
*/
Subcurve_const_reverse_iterator rend_subcurves() const;
/*! \deprecated
- * Obtain the number of subcurves composing the polycurve
+ * obtains the number of subcurves composing the polycurve
* (equivalent to `pi.points() - 1`). Was replaced by number_of_subcurves()
*/
size_type size() const;
- /*! Obtain the number of subcurves that comprise the polycurve.
+ /*! obtains the number of subcurves that comprise the polycurve.
*/
size_type number_of_subcurves() const;
- /*! Obtain the \f$ k\f$th subcurve of the polycurve.
+ /*! obtains the \f$ k\f$th subcurve of the polycurve.
* \pre \f$k\f$ is not greater than or equal to \f$n-1\f$, where
* \f$n\f$ is the number of subcurves.
*/
typename SubcurveTraits_2::X_monotone_curve_2
operator[](size_t k) const;
- /*! Obtain the bounding box of the polycurve.
+ /*! obtains the bounding box of the polycurve.
*/
Bbox_2 bbox() const;
@@ -427,7 +429,7 @@ namespace CGAL {
/// \name Operations
/// @{
- /*! Append a subcurve to the polycurve at the back.
+ /*! appends a subcurve to the polycurve at the back.
* \a Warning: This function does not perform the precondition test
* that the `Push_back_2` functor does. Thus, it is
* recommended to use the latter.
@@ -438,7 +440,7 @@ namespace CGAL {
*/
inline void push_back(const Subcurve_2& subcurve);
- /*! Append a subcurve to the polycurve at the front.
+ /*! appends a subcurve to the polycurve at the front.
* \a Warning: This is a risky function! Don't use it! Prefer the
* corresponding functor which is provided in the traits
* class.
@@ -450,12 +452,12 @@ namespace CGAL {
inline void push_front(const Subcurve_2& subcurve);
/*! \deprecated
- * Add a new point to the polycurvs, which becomes the new target point
+ * adds a new point to the polycurvs, which becomes the new target point
* of `pi`.
*/
void push_back(const Point_2 & p);
- /*! Reset the polycurve.
+ /*! resets the polycurve.
*/
void clear();
@@ -463,7 +465,6 @@ namespace CGAL {
}; /* end Arr_polycurve_traits_2::Curve_2 */
-
/*! The `X_monotone_curve_2` class nested within the polycurve
* traits is used to represent \f$ x\f$-monotone piecewise linear subcurves.
*
@@ -518,4 +519,5 @@ namespace CGAL {
/// @} /* End Accessing Functor Objects */
}; /* end Arr_polycurve_traits_2 */
+
} /* end namespace CGAL */
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_polyline_traits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_polyline_traits_2.h
index c9cc6f5def6..5f6614a6ada 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_polyline_traits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_polyline_traits_2.h
@@ -149,7 +149,7 @@ public:
//! obtains the past-the-end reverse iterator for the polyline points.
Segment_const_reverse_iterator rend_segments() const;
- /*! Obtain the number of subcurves that comprise the poyline.
+ /*! obtains the number of subcurves that comprise the poyline.
* \return The number of subcurves.
*/
Segments_size_type number_of_segments() const;
@@ -169,13 +169,13 @@ public:
typedef std::reverse_iterator
Segment_const_reverse_iterator;
- /*! Construct default. */
+ /*! constructs default. */
X_monotone_curve_2();
- /*! Construct from a subcurve. */
+ /*! constructs from a subcurve. */
X_monotone_curve_2(X_monotone_segment_2 seg);
- /*! Construct from a range. Similar to the constructor of a general
+ /*! constructs from a range. Similar to the constructor of a general
* polycurve. Like in the case of general polycurve, for the sake of
* backwards compatibility we have to keep an implementation of construction
* from a range of points. DO NOT USE THIS CONSTRUCTION.
@@ -183,23 +183,23 @@ public:
template
X_monotone_curve_2(InputIterator begin, InputIterator end);
- /*! Obtain the first iterator of the polyline subcurves.
+ /*! obtains the first iterator of the polyline subcurves.
*/
Segment_const_iterator begin_segments() const;
- /*! Obtain the past-the-end iterator of the polyline subcurves.
+ /*! obtains the past-the-end iterator of the polyline subcurves.
*/
Segment_const_iterator end_segments() const;
- /*! Obtain the first reverse iterator of the polyline subcurves.
+ /*! obtains the first reverse iterator of the polyline subcurves.
*/
Segment_const_reverse_iterator rbegin_segments() const;
- /*! Obtain the past-the-end reverse iterator for the polyline points.
+ /*! obtains the past-the-end reverse iterator for the polyline points.
*/
Segment_const_reverse_iterator rend_segments() const;
- /*! Obtain the number of subcurves that comprise the poyline.
+ /*! obtains the number of subcurves that comprise the poyline.
* \return The number of subcurves.
*/
Segments_size_type number_of_segments() const;
@@ -219,7 +219,7 @@ public:
/// \name Operations
/// @{
- /*! Obtain a polyline connecting the two given endpoints.
+ /*! obtains a polyline connecting the two given endpoints.
* \param p The first point.
* \param q The second point.
* \pre `p` and `q` are distinct.
@@ -227,14 +227,14 @@ public:
*/
Curve_2 operator()(const Point_2& p, const Point_2& q) const;
- /*! Obtain a polyline that comprises of one given segment.
+ /*! obtains a polyline that comprises of one given segment.
* \param seg input segment
* \pre `seg` is not degenerated (not tested)
* \return A polyline with one segment, namely `seg`.
*/
Curve_2 operator()(const Segment_2& seg) const;
- /*! Construct a well-oriented polyline from a range of either
+ /*! constructs a well-oriented polyline from a range of either
* `SegmentTraits_2::Point_2` or `SegmentTraits_2::Segment_2`.
*
* \param begin iterator pointing to the first element in the range.
@@ -270,7 +270,7 @@ public:
/// \name Operations
/// @{
- /*! Append a point `p` to an existing polyline `cv` at the back.
+ /*! appends a point `p` to an existing polyline `cv` at the back.
* \param cv a polyline. Note, `cv` is not (necessarily)
* \f$ x\f$-monotone.
* \param p a point to be appended to `cv` at the back.
@@ -278,7 +278,7 @@ public:
*/
void operator()(Curve_2& cv, const Point_2& p) const;
- /*! Append a segment `seg` to an existing polyline `cv` at the back.
+ /*! appends a segment `seg` to an existing polyline `cv` at the back.
* If `cv` is empty, `seg` will be its first segment.
* \param cv a polyline. Note, `cv` is (not necessarily) \f$x\f$-monotone.
* \param seg a segment (not necessarily \f$x\f$-monotone) to be appended
@@ -286,7 +286,7 @@ public:
*/
void operator()(Curve_2& cv, const Segment_2& seg) const;
- /*! Append a point `p` to an existing \f$x\f$-monotone polyline `xcv` at
+ /*! appends a point `p` to an existing \f$x\f$-monotone polyline `xcv` at
* the back.
* \param xcv the existing \f$x\f$-monotone polyline
* \param p the point to be pushed back.
@@ -297,7 +297,7 @@ public:
*/
void operator()(const X_monotone_curve_2& xcv, Point_2& p) const;
- /*! Append a segment `seg` to an existing \f$x\f$-monotone polyline `xcv`
+ /*! appends a segment `seg` to an existing \f$x\f$-monotone polyline `xcv`
* at the back. If `xcv` is empty, `seg` will be its first segment.
* \param xcv existing \f$x\f$-monotone polyline
* \param seg the segment to be added
@@ -320,7 +320,7 @@ public:
/// \name Operations
/// @{
- /*! Append a point `p` to an existing polyline `cv` at the front.
+ /*! appends a point `p` to an existing polyline `cv` at the front.
* \param cv a polyline. Note, `cv` is not (necessarily)
* \f$ x\f$-monotone.
* \param p a point to be appended to `cv` at the back.
@@ -328,7 +328,7 @@ public:
*/
void operator()(Curve_2& cv, const Point_2& p) const;
- /*! Append a segment `seg` to an existing polyline `cv` at the front.
+ /*! appends a segment `seg` to an existing polyline `cv` at the front.
* If `cv` is empty, `seg` will be its first segment.
* \param cv a polyline. Note, `cv` is (not necessarily) \f$x\f$-monotone.
* \param seg a segment (not necessarily \f$x\f$-monotone) to be appended
@@ -336,7 +336,7 @@ public:
*/
void operator()(Curve_2& cv, const Segment_2& seg) const;
- /*! Append a point `p` to an existing \f$x\f$-monotone polyline `xcv` at
+ /*! appends a point `p` to an existing \f$x\f$-monotone polyline `xcv` at
* the front.
* \param xcv the existing \f$x\f$-monotone polyline
* \param p the point to be pushed back.
@@ -347,7 +347,7 @@ public:
*/
void operator()(const X_monotone_curve_2& xcv, Point_2& p) const;
- /*! Append a segment `seg` to an existing \f$x\f$-monotone polyline `xcv`
+ /*! appends a segment `seg` to an existing \f$x\f$-monotone polyline `xcv`
* at the front. If `xcv` is empty, `seg` will be its first segment.
* \param xcv existing \f$x\f$-monotone polyline
* \param seg the segment to be added
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_rational_function_traits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_rational_function_traits_2.h
index d722a3ae285..21f976db116 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_rational_function_traits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_rational_function_traits_2.h
@@ -1,88 +1,79 @@
namespace CGAL {
-/*!
- \ingroup PkgArrangementOnSurface2TraitsClasses
-
- The traits class `Arr_rational_function_traits_2` is a model of the `ArrangementTraits_2`
- concept. It handles bounded and unbounded arcs of rational functions,
- referred to as rational arcs (in particular, such an arc may correspond to the
- entire graph of a rational function). It supports bounded and
- unbounded arcs. Thus, it is also a model of the concept
- `ArrangementOpenBoundaryTraits_2`. The traits class enables
- the construction and maintenance of arrangements of such arcs.
-
- A rational function \f$ y = \frac{P(x)}{Q(x)}\f$ is defined by two polynomials
- \f$ P\f$ and \f$ Q\f$ of arbitrary degrees.
- If \f$ Q(x) = 1\f$ then the function is a simple polynomial function.
- Usually the domain is \f$ \mathbb{R}\f$ but the function may also be
- restricted to a bounded interval \f$ [x_{\rm min}, x_{\rm max}]\f$
- or defined over a ray \f$ (-\infty, x_{\rm max}]\f$ or over \f$ [x_{\rm min}, \infty)\f$.
- Rational functions are represented by the nested type `Curve_2`.
- Note that a rational function may be not continuous since roots of \f$ Q\f$ induce
- vertical asymptotes, which would contradict the notion of an \f$ x\f$-monotone curve
- as it is introduced by the `ArrangementTraits_2` concept.
- Thus, continuous portions of rational functions are represented by the nested
- type `X_monotone_curve_2`, which is different from `Curve_2`.
- Constructors for both classes are provided by the traits.
- A `Curve_2` may be split up into several `X_monotone_curve_2`
- using `Make_x_monotone_2`.
-
- The template parameter of the traits must be a model of the
- concept `AlgebraicKernel_d_1`.
- A rational function is then represented by two polynomials \f$ P\f$ and \f$ Q\f$ of type
- `AlgebraicKernel_d_1::Polynomial_1`.
- A point is represented by a rational function and its \f$ x\f$-coordinate, which is
- of type `AlgebraicKernel_d_1::Algebraic_real_1`.
- Note that an explicit representation of the \f$ y\f$-coordinate is only computed upon
- request, which can be a rather costly operation.
-
- The constructed rational functions are cached by the traits class.
- The cache is local to each traits class object.
- It is therefore necessary to construct the curves using the constructor
- objects provided by member functions of the traits class.
- Moreover, a curve must only be used with its own traits.
- The cache is automatically cleaned up from time to time.
- The amortized clean up costs are constant. However, there is also a
- separate member function that cleans up the cache on demand.
-
- While `Arr_rational_function_traits_2` models the concept
- `ArrangementDirectionalXMonotoneTraits_2`, the implementation of
- the `Are_mergeable_2` operation does not enforce the input curves
- to have the same direction as a precondition. Moreover, `Arr_rational_function_traits_2`
- supports the merging of curves of opposite directions.
-
- \cgalModels{ArrangementTraits_2,ArrangementDirectionalXMonotoneTraits_2,ArrangementOpenBoundaryTraits_2}
-*/
-template< typename AlgebraicKernel_d_1 >
+/*! \ingroup PkgArrangementOnSurface2TraitsClasses
+ *
+ * The traits class `Arr_rational_function_traits_2` is a model of the
+ * `ArrangementTraits_2` concept. It handles bounded and unbounded arcs of
+ * rational functions, referred to as rational arcs (in particular, such
+ * an arc may correspond to the entire graph of a rational function). It
+ * supports bounded and unbounded arcs. Thus, it is also a model of the concept
+ * `ArrangementOpenBoundaryTraits_2`. The traits class enables the construction
+ * and maintenance of arrangements of such arcs.
+ *
+ * A rational function \f$y = \frac{P(x)}{Q(x)}\f$ is defined by two polynomials
+ * \f$P\f$ and \f$Q\f$ of arbitrary degrees. If \f$Q(x) = 1\f$ then the
+ * function is a simple polynomial function. Usually the domain is
+ * \f$\mathbb{R}\f$ but the function may also be restricted to a bounded
+ * interval \f$[x_{\rm min}, x_{\rm max}]\f$ or defined over a ray \f$(-\infty,
+ * x_{\rm max}]\f$ or over \f$[x_{\rm min}, \infty)\f$. Rational functions are
+ * represented by the nested type `Curve_2`. Note that a rational function may
+ * be not continuous since roots of \f$Q\f$ induce vertical asymptotes, which
+ * would contradict the notion of an \f$x\f$-monotone curve as it is introduced
+ * by the `ArrangementTraits_2` concept. Thus, continuous portions of rational
+ * functions are represented by the nested type `X_monotone_curve_2`, which is
+ * different from `Curve_2`. Constructors for both classes are provided by the
+ * traits. A `Curve_2` may be split up into several `X_monotone_curve_2` using
+ * `Make_x_monotone_2`.
+ *
+ * The template parameter of the traits must be a model of the concept
+ * `AlgebraicKernel_d_1`. A rational function is then represented by two
+ * polynomials \f$P\f$ and \f$Q\f$ of type
+ * `AlgebraicKernel_d_1::Polynomial_1`. A point is represented by a rational
+ * function and its \f$x\f$-coordinate, which is of type
+ * `AlgebraicKernel_d_1::Algebraic_real_1`. Note that an explicit
+ * representation of the \f$y\f$-coordinate is only computed upon request,
+ * which can be a rather costly operation.
+ *
+ * The constructed rational functions are cached by the traits class. The cache
+ * is local to each traits class object. It is therefore necessary to construct
+ * the curves using the constructor objects provided by member functions of the
+ * traits class. Moreover, a curve must only be used with its own traits. The
+ * cache is automatically cleaned up from time to time. The amortized clean up
+ * costs are constant. However, there is also a separate member function that
+ * cleans up the cache on demand.
+ *
+ * While `Arr_rational_function_traits_2` models the concept
+ * `ArrangementDirectionalXMonotoneTraits_2`, the implementation of the
+ * `Are_mergeable_2` operation does not enforce the input curves to have the
+ * same direction as a precondition. Moreover, `Arr_rational_function_traits_2`
+ * supports the merging of curves of opposite directions.
+ *
+ * \cgalModels{ArrangementTraits_2,ArrangementDirectionalXMonotoneTraits_2,ArrangementOpenBoundaryTraits_2}
+ */
+template
class Arr_rational_function_traits_2 {
public:
-
/// \name Types
/// @{
/*!
-
*/
typedef AlgebraicKernel_d_1 Algebraic_kernel_d_1;
/*!
-
*/
typedef AlgebraicKernel_d_1::Coefficient Coefficient;
/*!
-
*/
typedef AlgebraicKernel_d_1::Polynomial_1 Polynomial_1;
/*!
-
*/
typedef AlgebraicKernel_d_1::Algebraic_real_1 Algebraic_real_1;
/*!
-
*/
typedef AlgebraicKernel_d_1::Bound Bound;
@@ -91,10 +82,9 @@ public:
/// \name Creation
/// @{
- /*!
- constructs an empty traits that uses the kernel pointed by `kernel`
- for performing algebraic operations.
- */
+ /*! constructs an empty traits that uses the kernel pointed by `kernel`
+ * for performing algebraic operations.
+ */
Arr_rational_function_traits_2(const Algebraic_kernel_d_1* kernel);
/// @}
@@ -102,673 +92,592 @@ public:
/// \name Operations
/// @{
- /*!
- Returns an instance of `Construct_curve_2`.
- */
+ /*! returns an instance of `Construct_curve_2`.
+ */
Construct_curve_2 construct_curve_2_object() const;
- /*!
- Returns an instance of `Construct_x_monotone_curve_2`.
- */
+ /*! returns an instance of `Construct_x_monotone_curve_2`.
+ */
Construct_x_monotone_curve_2 construct_x_monotone_curve_2_object() const;
- /*!
- Deletes all curves from the cache that exist only there.
- */
+ /*! deletes all curves from the cache that exist only there.
+ */
void cleanup_cache() const;
- /*!
- Returns a pointer to the used algebraic kernel object.
- */
+ /*! returns a pointer to the used algebraic kernel object.
+ */
const Algebraic_kernel_d_1* algebraic_kernel_d_1() const;
/// @}
-
-/*!
-
-
-Functor to construct a `Curve_2`. To enable caching the class is not
-default constructible and must be obtained via the function
-`construct_curve_2_object()`, which is a member of the traits.
-
-\cgalModels{Assignable,CopyConstructible,AdaptableBinaryFunction,AdaptableUnaryFunction}
-
-*/
-class Construct_curve_2 {
-public:
-
-/// \name Types
-/// @{
-
-/*!
-
-*/
-typedef AlgebraicKernel_d_1::Polynomial_1 Polynomial_1;
-
-/*!
-
-*/
-typedef AlgebraicKernel_d_1::Algebraic_real_1 Algebraic_real_1;
-
-/*!
-
-*/
-typedef Arr_rational_function_traits_2::Curve_2 result_type;
-
-/*!
-
-*/
-typedef Polynomial_1 argument_type;
-
-/*!
-
-*/
-typedef Polynomial_1 first_argument_type;
-
-/*!
-
-*/
-typedef Polynomial_1 second_argument_type;
-
-/// @}
-
-/// \name Operations
-/// @{
-
-/*!
-Constructs a curve representing the polynomial function \f$ y = P(x)\f$.
-*/
-Curve_2 operator()(Polynomial_1 P) const;
-
-/*!
-Constructs a curve representing the polynomial function \f$ y = P(x)\f$.
-The function is defined over the interval \f$ [x,+\infty)\f$ if \f$ right\f$ is true
-and \f$ (-\infty,x]\f$ otherwise.
-*/
-Curve_2 operator()(Polynomial_1 P, const Algebraic_real_1& x, bool right) const;
-
-/*!
-Constructs a curve representing the polynomial function \f$ y = P(x)\f$.
-The function is defined over the interval \f$ [lower,upper]\f$.
-*/
-Curve_2 operator()(Polynomial_1 P, const Algebraic_real_1& lower, const Algebraic_real_1& upper) const;
-
-/*!
-Constructs a curve representing the rational function \f$ y = P(x)/Q(x)\f$.
-*/
-Curve_2 operator()(Polynomial_1 P, Polynomial_1 Q) const;
-
-/*!
-Constructs a curve representing the rational function \f$ y = P(x)/Q(x)\f$.
-The function is defined over the interval \f$ I=[x,+\infty)\f$ if \f$ right\f$ is
-true and \f$ I=(-\infty,x]\f$ otherwise.
-*/
-Curve_2 operator()(Polynomial_1 P, Polynomial_1 Q, const Algebraic_real_1& x, bool right) const;
-
-/*!
-Constructs a curve representing the rational function \f$ y = P(x)/Q(x)\f$.
-The function is defined over the interval \f$ I=[lower,upper]\f$.
-*/
-Curve_2 operator()(Polynomial_1 P, Polynomial_1 Q, const Algebraic_real_1& lower, const Algebraic_real_1& upper) const;
-
-/*!
-Constructs a curve representing the polynomial function \f$ y = P(x)\f$, where
-the coefficients of \f$ P\f$ are given in the range `[begin,end)`.
-*/
-template
-Curve_2 operator()(InputIterator begin, InputIterator end) const;
-
-/*!
-Constructs a curve representing the polynomial function \f$ y = P(x)\f$, where
-the coefficients of \f$ P\f$ are given in the range `[begin,end)`. The
-function is defined over the interval \f$ [x,+\infty)\f$ if \f$ right\f$ is true
-and \f$ (-\infty,x]\f$ otherwise.
-*/
-template
-Curve_2 operator()(InputIterator begin, InputIterator end,
-const Algebraic_real_1& x, bool right) const;
-
-/*!
-Constructs a curve representing the polynomial function \f$ y = P(x)\f$, where
-the coefficients of \f$ P\f$ are given in the range `[begin,end)`. The
-function is defined over the interval \f$ [lower,upper]\f$.
-*/
-template
-Curve_2 operator()(InputIterator begin, InputIterator end,
-const Algebraic_real_1& lower,
-const Algebraic_real_1& upper) const;
-
-/*!
-Constructs a curve representing the rational function \f$ y = P(x)/Q(x)\f$,
-where the coefficients of \f$ P\f$ and \f$ Q\f$ are given in the ranges
-`[begin_numer,end_numer)` and `[begin_denom,end_denom)`,
-respectively.
-*/
-template
-Curve_2 operator()(InputIterator begin_numer, InputIterator end_numer,
-InputIterator begin_denom, InputIterator end_denom) const;
-
-/*!
-Constructs a curve representing the rational function \f$ y = P(x)/Q(x)\f$,
-where the coefficients of \f$ P\f$ and \f$ Q\f$ are given in the ranges
-`[begin_numer,end_numer)` and `[begin_denom,end_denom)`,
-respectively. The function is defined over the interval \f$ I=[x,+\infty)\f$
-if \f$ right\f$ is true and \f$ I=(-\infty,x]\f$ otherwise.
-*/
-template
-Curve_2 operator()(InputIterator begin_numer, InputIterator end_numer,
-InputIterator begin_denom, InputIterator end_denom,
-const Algebraic_real_1& x, bool right) const;
-
-/*!
-Constructs a curve representing the rational function \f$ y = P(x)/Q(x)\f$,
-where the coefficients of \f$ P\f$ and \f$ Q\f$ are given in the ranges
-`[begin_numer,end_numer)` and `[begin_denom,end_denom)`,
-respectively. The function is defined over the interval \f$ I=[lower,upper]\f$.
-*/
-template
-Curve_2 operator()(InputIterator begin_numer, InputIterator end_numer,
-InputIterator begin_denom, InputIterator end_denom,
-const Algebraic_real_1& lower,
-const Algebraic_real_1& upper) const;
-
-/// @}
-
-}; /* end Arr_rational_function_traits_2::Construct_curve_2 */
-
-/*!
-
-
-Functor to construct a `X_monotone_curve_2`. To enable caching the class
-is not default constructible and must be obtained via the function
-`construct_x_monotone_curve_2_object()`, which is a member of the traits.
-
-\cgalModels{Assignable,CopyConstructible,AdaptableBinaryFunction,AdaptableUnaryFunction}
-
-*/
-class Construct_x_monotone_curve_2 {
-public:
-
-/// \name Types
-/// @{
-
-/*!
-
-*/
-typedef AlgebraicKernel_d_1::Polynomial_1 Polynomial_1;
-
-/*!
-
-*/
-typedef AlgebraicKernel_d_1::Algebraic_real_1 Algebraic_real_1;
-
-/*!
-
-*/
-typedef Arr_rational_function_traits_2::X_monotone_curve_2 result_type;
-
-/*!
-
-*/
-typedef Polynomial_1 argument_type;
-
-/*!
-
-*/
-typedef Polynomial_1 first_argument_type;
-
-/*!
-
-*/
-typedef Polynomial_1 second_argument_type;
-
-/// @}
-
-/// \name Operations
-/// @{
-
-/*!
-Constructs an \f$ x\f$-monotone curve supported by the polynomial function
-\f$ y = P(x)\f$.
-*/
-X_monotone_curve_2 operator()(Polynomial_1 P) const;
-
-/*!
-Constructs an \f$ x\f$-monotone curve supported by the polynomial function
-\f$ y = P(x)\f$. The function is defined over the interval \f$ [x,+\infty)\f$ if
-\f$ right\f$ is true and \f$ (-\infty,x]\f$ otherwise.
-*/
-X_monotone_curve_2 operator()(Polynomial_1 P,
-const Algebraic_real_1& x,
-bool right) const;
-
-/*!
-Constructs an \f$ x\f$-monotone curve supported by the polynomial function
-\f$ y = P(x)\f$. The function is defined over the interval \f$ [lower,upper]\f$.
-*/
-X_monotone_curve_2 operator()(Polynomial_1 P,
-const Algebraic_real_1& lower,
-const Algebraic_real_1& upper); const
-
-/*!
-Constructs an \f$ x\f$-monotone curve supported by the rational function
-\f$ y = P(x)/Q(x)\f$.
-\pre \f$ Q\f$ has no real roots.
-*/
-X_monotone_curve_2 operator()(Polynomial_1 P, Polynomial_1 Q); const
-
-/*!
-Constructs an \f$ x\f$-monotone curve supported by the rational function
-\f$ y = P(x)/Q(x)\f$. The function is defined over the interval \f$ I=[x,+\infty)\f$
-if \f$ right\f$ is true and \f$ I=(-\infty,x]\f$ otherwise.
-\pre \f$ Q\f$ has no real roots in the interior of \f$ I\f$.
-*/
-X_monotone_curve_2 operator()(Polynomial_1 P, Polynomial_1 Q,
-const Algebraic_real_1& x,
-bool right); const
-
-/*!
-Constructs an \f$ x\f$-monotone curve supported by the rational function
-\f$ y = P(x)/Q(x)\f$. The function is defined over the interval \f$ I=[lower,upper]\f$.
-\pre \f$ Q\f$ has no real roots in the interior of \f$ I\f$.
-*/
-X_monotone_curve_2 operator()(Polynomial_1 P, Polynomial_1 Q,
-const Algebraic_real_1& lower,
-const Algebraic_real_1& upper); const
-
-/*!
-Constructs an \f$ x\f$-monotone curve supported by the polynomial function
-\f$ y = P(x)\f$, where the coefficients of \f$ P\f$ are given in the range
-`[begin,end)`.
-*/
-template
-X_monotone_curve_2 operator()(InputIterator begin, InputIterator end) const;
-
-/*!
-Constructs an \f$ x\f$-monotone curve supported by the polynomial function
-\f$ y = P(x)\f$, where the coefficients of \f$ P\f$ are given in the range
-`[begin,end)`. The function is defined over the interval \f$ [x,+\infty)\f$
-if \f$ right\f$ is true and \f$ (-\infty,x]\f$ otherwise.
-*/
-template
-X_monotone_curve_2 operator()(InputIterator begin, InputIterator end,
-const Algebraic_real_1& x, bool right) const;
-
-/*!
-Constructs an \f$ x\f$-monotone curve supported by the polynomial function
-\f$ y = P(x)\f$, where the coefficients of \f$ P\f$ are given in the range
-`[begin,end)`. The function is defined over the interval
-\f$ [lower,upper]\f$.
-*/
-template
-X_monotone_curve_2 operator()(InputIterator begin, InputIterator end
-const Algebraic_real_1& lower,
-const Algebraic_real_1& upper); const
-
-/*!
-Constructs an \f$ x\f$-monotone curve supported by the rational function
-\f$ y = P(x)/Q(x)\f$, where the coefficients of \f$ P\f$ and \f$ Q\f$ are given in the
-ranges `[begin_numer,end_numer)` and `[begin_denom,end_denom)`,
-respectively.
-\pre \f$ Q\f$ has no real roots.
-*/
-template
-X_monotone_curve_2 operator()(InputIterator begin_numer, InputIterator end_numer,
-InputIterator begin_denom, InputIterator end_denom); const
-
-/*!
-Constructs an \f$ x\f$-monotone curve supported by the rational function
-\f$ y = P(x)/Q(x)\f$, where the coefficients of \f$ P\f$ and \f$ Q\f$ are given in the
-ranges `[begin_numer,end_numer)` and `[begin_denom,end_denom)`,
-respectively. The function is defined over the interval \f$ I=[x,+\infty)\f$
-if \f$ right\f$ is true and \f$ I=(-\infty,x]\f$ otherwise.
-\pre \f$ Q\f$ has no real roots in the interior of \f$ I\f$.
-*/
-template
-X_monotone_curve_2 operator()(InputIterator begin_numer, InputIterator end_numer,
-InputIterator begin_denom, InputIterator end_denom,
-const Algebraic_real_1& x, bool right); const
-
-/*!
-Constructs an \f$ x\f$-monotone curve supported by the rational function
-\f$ y = P(x)/Q(x)\f$, where the coefficients of \f$ P\f$ and \f$ Q\f$ are given in the
-ranges `[begin_numer,end_numer)` and `[begin_denom,end_denom)`,
-respectively. The function is defined over the interval \f$ I=[lower,upper]\f$.
-\pre \f$ Q\f$ has no real roots in the interior of \f$ I\f$.
-*/
-template
-X_monotone_curve_2 operator()(InputIterator begin_numer, InputIterator end_numer,
-InputIterator begin_denom, InputIterator end_denom,
-const Algebraic_real_1& lower, const Algebraic_real_1& upper); const
-
-/// @}
-
-}; /* end Arr_rational_function_traits_2::Construct_x_monotone_curve_2 */
-
-/*!
-
-
-The `Curve_2` class nested within the traits is used
-to represent rational functions which may be restricted to a certain x-range.
-
-\cgalModels{ArrTraits::Curve_2}
-
-*/
-class Curve_2 {
-public:
-
-/// \name Types
-/// @{
-
-/*!
-
-*/
-typedef AlgebraicKernel_d_1::Polynomial_1 Polynomial_1;
-
-/*!
-
-*/
-typedef AlgebraicKernel_d_1::Algebraic_real_1 Algebraic_real_1;
-
-/// @}
-
-/// \name Operations
-/// @{
-
-/*!
-returns the numerator of the supporting rational function.
-*/
-const Polynomial_1& numerator () const;
-
-/*!
-returns the denominator of the supporting rational function.
-*/
-const Polynomial_1& denominator () const;
-
-/*!
-returns whether çurve is continuous, namely whether it does not
-contains any vertical asymptotes in its interior.
-*/
-bool is_continuous() const;
-
-/*!
-returns whether the \f$ x\f$-coordinate of çurve's left end is finite or
-whether it is \f$ \pm\infty\f$.
-*/
-Arr_parameter_space left_parameter_space_in_x () const;
-
-/*!
-returns whether the \f$ x\f$-coordinate of çurve's right end is finite or
-whether it is \f$ \pm\infty\f$.
-*/
-Arr_parameter_space right_parameter_space_in_x () const;
-
-/*!
-returns the \f$ x\f$-coordinate of the left end.
-\pre left_boundary_in_x()==ARR_INTERIOR
-*/
-Algebraic_real_1 left_x() const;
-
-/*!
-returns the \f$ x\f$-coordinate of the right end.
-\pre right_boundary_in_x()==ARR_INTERIOR
-*/
-Algebraic_real_1 right_x() const;
-
-/// @}
-
-}; /* end Arr_rational_function_traits_2::Curve_2 */
-
-/*!
-
-
-\cgalModels{ArrTraits::Point_2}
-
-*/
-class Point_2 {
-public:
-
-/// \name Types
-/// @{
-
-/*!
-
-*/
-typedef AlgebraicKernel_d_1::Polynomial_1 Polynomial_1;
-
-/*!
-
-*/
-typedef AlgebraicKernel_d_1::Algebraic_real_1 Algebraic_real_1;
-
-/*!
-
-*/
-typedef AlgebraicKernel_d_1::Bound Bound;
-
-/// @}
-
-/// \name Operations
-/// @{
-
-/*!
-returns the numerator of the supporting rational function.
-*/
-Polynomial_1 numerator () const;
-
-/*!
-returns the denominator of the supporting rational function.
-*/
-Polynomial_1 denominator () const;
-
-/*!
-returns double-approximations of the x- and y-coordinates.
-*/
-std::pair to_double() const;
-
-/*!
-returns the \f$ x\f$-coordinate of the point.
-*/
-Algebraic_real_1 x() const;
-
-/*!
-obtains the y-coordinates of the point. Attention: As described above,
-points are not stored by their y-coordinate in `Algebraic_real_1`
-representation. In fact, this representation must be computed on demand, and
-might become quite costly for points defined by high-degree polynomials.
-Therefore, it is recommended to avoid calls to this function as much as
-possible.
-*/
-Algebraic_real_1 y() const;
-
-/*!
-Computes a pair \f$ p\f$ approximating the \f$ x\f$-coordinate with
-respect to the given absolute precision \f$ a\f$.
-\post \f$ p.first \leq x \leq p.second \f$
-\post \f$ p.second - p.first \leq2^{-a} \f$
-*/
-std::pair approximate_absolute_x(int a) const;
-
-/*!
-Computes a pair \f$ p\f$ approximating the \f$ y\f$-coordinate with
-respect to the given absolute precision \f$ a\f$.
-\post \f$ p.first \leq y \leq p.second \f$
-\post \f$ p.second - p.first \leq2^{-a} \f$
-*/
-std::pair approximate_absolute_y(int a) const;
-
-/*!
-Computes a pair \f$ p\f$ approximating the \f$ x\f$-coordinate with
-respect to the given relative precision \f$ r\f$.
-\post \f$ p.first \leq x \leq p.second \f$
-\post \f$ p.second - p.first \leq2^{-r}|x| \f$
-*/
-std::pair approximate_relative_x(int r) const;
-
-/*!
-Computes a pair \f$ p\f$ approximating the \f$ y\f$-coordinate with
-respect to the given relative precision \f$ r\f$.
-\post \f$ p.first \leq y \leq p.second \f$
-\post \f$ p.second - p.first \leq2^{-r}|y| \f$
-*/
-std::pair approximate_relative_y(int r) const;
-
-/// @}
-
-}; /* end Arr_rational_function_traits_2::Point_2 */
-
-/*!
-
-
-The `X_monotone_curve_2` class nested within the traits is used
-to represent \f$ x\f$-monotone parts of rational functions. In particular, such an \f$ x\f$-monotone curve
-may not contain a vertical asymptote in its interior \f$ x\f$-range.
-
-\cgalModels{ArrTraits::XMonotoneCurve_2}
-
-*/
-class X_monotone_curve_2 {
-public:
-
-/// \name Types
-/// @{
-
-/*!
-
-*/
-typedef AlgebraicKernel_d_1::Polynomial_1 Polynomial_1;
-
-/*!
-
-*/
-typedef AlgebraicKernel_d_1::Algebraic_real_1 Algebraic_real_1;
-
-/*!
-
-*/
-typedef Arr_rational_function_traits_2::Point_2 Point_2;
-
-/// @}
-
-/// \name Operations
-/// @{
-
-/*!
-returns the numerator of the supporting rational function.
-*/
-const Polynomial_1& numerator () const;
-
-/*!
-returns the denominator of the supporting rational function.
-*/
-const Polynomial_1& denominator () const;
-
-/*!
-returns whether the \f$ x\f$-coordinate of the source is finite or
-whether it is \f$ \pm\infty\f$.
-*/
-Arr_parameter_space source_parameter_space_in_x () const;
-
-/*!
-returns whether the \f$ y\f$-coordinate of the source is finite or
-whether it is \f$ \pm\infty\f$.
-*/
-Arr_parameter_space source_parameter_space_in_y () const;
-
-/*!
-returns the source point of the arc.
-\pre Both the \f$ x\f$- and \f$ y\f$-coordinates of the source point is finite.
-*/
-const Point_2& source() const;
-
-/*!
-returns the \f$ x\f$-coordinate of the source point.
-\pre The \f$ x\f$-coordinate of the source point is finite.
-*/
-Algebraic_real_1 source_x() const;
-
-/*!
-returns whether the \f$ x\f$-coordinate of the target is finite or
-whether it is \f$ \pm\infty\f$.
-*/
-Arr_parameter_space target_parameter_space_in_x () const;
-
-/*!
-returns whether the \f$ y\f$-coordinate of the target is finite or
-whether it is \f$ \pm\infty\f$.
-*/
-Arr_parameter_space target_parameter_space_in_y () const;
-
-/*!
-returns the target point of the arc.
-\pre Both the \f$ x\f$- and \f$ y\f$-coordinates of the target point is finite.
-*/
-const Point_2& target() const;
-
-/*!
-returns the \f$ x\f$-coordinate of the target point.
-\pre The \f$ x\f$-coordinate of the target point is finite.
-*/
-Algebraic_real_1 target_x() const;
-
-/*!
-returns whether the \f$ x\f$-coordinate of the left curve end is finite or
-whether it is \f$ \pm\infty\f$.
-*/
-Arr_parameter_space left_parameter_space_in_x () const;
-
-/*!
-returns whether the \f$ y\f$-coordinate of the left curve end is finite or
-whether it is \f$ \pm\infty\f$.
-*/
-Arr_parameter_space left_parameter_space_in_y () const;
-
-/*!
-returns the left point of the arc.
-\pre Both the \f$ x\f$- and \f$ y\f$-coordinates of the left point is finite.
-*/
-const Point_2& left() const;
-
-/*!
-returns the \f$ x\f$-coordinate of the left point.
-\pre The \f$ x\f$-coordinate of the left point is finite.
-*/
-Algebraic_real_1 left_x() const;
-
-/*!
-returns whether the \f$ x\f$-coordinate of the right curve end is finite or
-whether it is \f$ \pm\infty\f$.
-*/
-Arr_parameter_space right_parameter_space_in_x () const;
-
-/*!
-returns whether the \f$ y\f$-coordinate of the right curve end is finite or
-whether it is \f$ \pm\infty\f$.
-*/
-Arr_parameter_space right_parameter_space_in_y () const;
-
-/*!
-returns the right point of the arc.
-\pre Both the \f$ x\f$- and \f$ y\f$-coordinates of The right point is finite.
-*/
-const Point_2& right() const;
-
-/*!
-returns the \f$ x\f$-coordinate of the right point.
-\pre The \f$ x\f$-coordinate of the right point is finite.
-*/
-Algebraic_real_1 right_x() const;
-
-/*!
-returns whether the curve is oriented from left to right.
-*/
-bool is_left_to_right () const;
-
-/// @}
-
-}; /* end Arr_rational_function_traits_2::X_monotone_curve_2 */
-
+ /*! Functor to construct a `Curve_2`. To enable caching the class is not
+ * default constructible and must be obtained via the function
+ * `construct_curve_2_object()`, which is a member of the traits.
+ *
+ * \cgalModels{Assignable,CopyConstructible,AdaptableBinaryFunction,AdaptableUnaryFunction}
+ */
+
+ class Construct_curve_2 {
+ public:
+ /// \name Types
+ /// @{
+
+ /*!
+ */
+ typedef AlgebraicKernel_d_1::Polynomial_1 Polynomial_1;
+
+ /*!
+ */
+ typedef AlgebraicKernel_d_1::Algebraic_real_1 Algebraic_real_1;
+
+ /*!
+ */
+ typedef Arr_rational_function_traits_2::Curve_2 result_type;
+
+ /*!
+ */
+ typedef Polynomial_1 argument_type;
+
+ /*!
+ */
+ typedef Polynomial_1 first_argument_type;
+
+ /*!
+ */
+ typedef Polynomial_1 second_argument_type;
+
+ /// @}
+
+ /// \name Operations
+ /// @{
+
+ /*! constructs a curve representing the polynomial function \f$y = P(x)\f$.
+ */
+ Curve_2 operator()(Polynomial_1 P) const;
+
+ /*! constructs a curve representing the polynomial function \f$y = P(x)\f$.
+ * The function is defined over the interval \f$[x,+\infty)\f$ if \f$ right\f$
+ * is true and \f$(-\infty,x]\f$ otherwise.
+ */
+ Curve_2 operator()(Polynomial_1 P, const Algebraic_real_1& x,
+ bool right) const;
+
+ /*! constructs a curve representing the polynomial function \f$y = P(x)\f$.
+ * The function is defined over the interval \f$[lower,upper]\f$.
+ */
+ Curve_2 operator()(Polynomial_1 P, const Algebraic_real_1& lower,
+ const Algebraic_real_1& upper) const;
+
+ /*! constructs a curve representing the rational function \f$y = P(x)/Q(x)\f$.
+ */
+ Curve_2 operator()(Polynomial_1 P, Polynomial_1 Q) const;
+
+ /*! constructs a curve representing the rational function \f$y = P(x)/Q(x)\f$.
+ * The function is defined over the interval
+ * \f$ I=[x,+\infty)\f$ if \f$ right\f$ is true and
+ * \f$ I=(-\infty,x]\f$ otherwise.
+ */
+ Curve_2 operator()(Polynomial_1 P, Polynomial_1 Q,
+ const Algebraic_real_1& x, bool right) const;
+
+ /*! constructs a curve representing the rational function \f$y = P(x)/Q(x)\f$.
+ * The function is defined over the interval \f$I=[lower,upper]\f$.
+ */
+ Curve_2 operator()(Polynomial_1 P, Polynomial_1 Q,
+ const Algebraic_real_1& lower,
+ const Algebraic_real_1& upper) const;
+
+ /*! constructs a curve representing the polynomial function \f$y = P(x)\f$,
+ * where the coefficients of \f$P\f$ are given in the range `[begin,end)`.
+ */
+ template
+ Curve_2 operator()(InputIterator begin, InputIterator end) const;
+
+ /*! constructs a curve representing the polynomial function \f$y = P(x)\f$,
+ * where the coefficients of \f$P\f$ are given in the range `[begin,end)`.
+ * The function is defined over the interval
+ * \f$[x,+\infty)\f$ if \f$ right\f$ is true and \f$(-\infty,x]\f$
+ * otherwise.
+ */
+ template
+ Curve_2 operator()(InputIterator begin, InputIterator end,
+ const Algebraic_real_1& x, bool right) const;
+
+ /*! constructs a curve representing the polynomial function \f$y = P(x)\f$,
+ * where the coefficients of \f$P\f$ are given in the range `[begin,end)`.
+ * The function is defined over the interval \f$[lower,upper]\f$.
+ */
+ template
+ Curve_2 operator()(InputIterator begin, InputIterator end,
+ const Algebraic_real_1& lower,
+ const Algebraic_real_1& upper) const;
+
+ /*! constructs a curve representing the rational function \f$y = P(x)/Q(x)\f$,
+ * where the coefficients of \f$P\f$ and \f$Q\f$ are given in the ranges
+ * `[begin_numer,end_numer)` and `[begin_denom,end_denom)`, respectively.
+ */
+ template
+ Curve_2 operator()(InputIterator begin_numer, InputIterator end_numer,
+ InputIterator begin_denom, InputIterator end_denom) const;
+
+ /*! constructs a curve representing the rational function \f$y = P(x)/Q(x)\f$,
+ * where the coefficients of \f$P\f$ and \f$ Q\f$ are given in the ranges
+ * `[begin_numer,end_numer)` and `[begin_denom,end_denom)`, respectively.
+ * The function is defined over the interval \f$I=[x,+\infty)\f$
+ * if \f$right\f$ is true and \f$I=(-\infty,x]\f$ otherwise.
+ */
+ template
+ Curve_2 operator()(InputIterator begin_numer, InputIterator end_numer,
+ InputIterator begin_denom, InputIterator end_denom,
+ const Algebraic_real_1& x, bool right) const;
+
+ /*! constructs a curve representing the rational function \f$y = P(x)/Q(x)\f$,
+ * where the coefficients of \f$P\f$ and \f$Q\f$ are given in the ranges
+ * `[begin_numer,end_numer)` and `[begin_denom,end_denom)`, respectively.
+ * The function is defined over the interval \f$I=[lower,upper]\f$.
+ */
+ template
+ Curve_2 operator()(InputIterator begin_numer, InputIterator end_numer,
+ InputIterator begin_denom, InputIterator end_denom,
+ const Algebraic_real_1& lower,
+ const Algebraic_real_1& upper) const;
+
+ /// @}
+
+ }; /* end Arr_rational_function_traits_2::Construct_curve_2 */
+
+ /*! Functor to construct a `X_monotone_curve_2`. To enable caching the class is
+ * not default constructible and must be obtained via the function
+ * `construct_x_monotone_curve_2_object()`, which is a member of the traits.
+ *
+ * \cgalModels{Assignable,CopyConstructible,AdaptableBinaryFunction,AdaptableUnaryFunction}
+ */
+ class Construct_x_monotone_curve_2 {
+ public:
+
+ /// \name Types
+ /// @{
+
+ /*!
+ */
+ typedef AlgebraicKernel_d_1::Polynomial_1 Polynomial_1;
+
+ /*!
+ */
+ typedef AlgebraicKernel_d_1::Algebraic_real_1 Algebraic_real_1;
+
+ /*!
+ */
+ typedef Arr_rational_function_traits_2::X_monotone_curve_2 result_type;
+
+ /*!
+ */
+ typedef Polynomial_1 argument_type;
+
+ /*!
+ */
+ typedef Polynomial_1 first_argument_type;
+
+ /*!
+ */
+ typedef Polynomial_1 second_argument_type;
+
+ /// @}
+
+ /// \name Operations
+ /// @{
+
+ /*! constructs an \f$ x\f$-monotone curve supported by the polynomial function
+ * \f$ y = P(x)\f$.
+ */
+ X_monotone_curve_2 operator()(Polynomial_1 P) const;
+
+ /*! constructs an \f$x\f$-monotone curve supported by the polynomial function
+ * \f$y = P(x)\f$. The function is defined over the interval
+ * \f$[x,+\infty)\f$ if \f$ right\f$ is true and \f$(-\infty,x]\f$
+ * otherwise.
+ */
+ X_monotone_curve_2 operator()(Polynomial_1 P,
+ const Algebraic_real_1& x,
+ bool right) const;
+
+ /*! constructs an \f$x\f$-monotone curve supported by the polynomial function
+ * \f$y = P(x)\f$. The function is defined over the interval
+ * \f$[lower,upper]\f$.
+ */
+ X_monotone_curve_2 operator()(Polynomial_1 P,
+ const Algebraic_real_1& lower,
+ const Algebraic_real_1& upper) const;
+
+ /*! constructs an \f$x\f$-monotone curve supported by the rational function
+ * \f$y = P(x)/Q(x)\f$.
+ * \pre \f$Q\f$ has no real roots.
+ */
+ X_monotone_curve_2 operator()(Polynomial_1 P, Polynomial_1 Q) const;
+
+ /*! constructs an \f$x\f$-monotone curve supported by the rational function
+ * \f$y = P(x)/Q(x)\f$. The function is defined over the interval
+ * \f$I=[x,+\infty)\f$ if \f$ right\f$ is true and \f$I=(-\infty,x]\f$
+ * otherwise.
+ * \pre \f$Q\f$ has no real roots in the interior of \f$I\f$.
+ */
+ X_monotone_curve_2 operator()(Polynomial_1 P, Polynomial_1 Q,
+ const Algebraic_real_1& x,
+ bool right) const;
+
+ /*! constructs an \f$x\f$-monotone curve supported by the rational function
+ * \f$y = P(x)/Q(x)\f$. The function is defined over the interval
+ * \f$I=[lower,upper]\f$.
+ * \pre \f$Q\f$ has no real roots in the interior of \f$I\f$.
+ */
+ X_monotone_curve_2 operator()(Polynomial_1 P, Polynomial_1 Q,
+ const Algebraic_real_1& lower,
+ const Algebraic_real_1& upper) const;
+
+ /*! constructs an \f$ x\f$-monotone curve supported by the polynomial function
+ * \f$ y = P(x)\f$, where the coefficients of \f$P\f$ are given in the range
+ * `[begin,end)`.
+ */
+ template
+ X_monotone_curve_2 operator()(InputIterator begin, InputIterator end) const;
+
+ /*! constructs an \f$x\f$-monotone curve supported by the polynomial function
+ * \f$y = P(x)\f$, where the coefficients of \f$P\f$ are given in the range
+ * `[begin,end)`. The function is defined over the interval \f$[x,+\infty)\f$
+ * if \f$right\f$ is true and \f$(-\infty,x]\f$ otherwise.
+ */
+ template
+ X_monotone_curve_2 operator()(InputIterator begin, InputIterator end,
+ const Algebraic_real_1& x, bool right) const;
+
+ /*! constructs an \f$x\f$-monotone curve supported by the polynomial function
+ * \f$y = P(x)\f$, where the coefficients of \f$P\f$ are given in the range
+ * `[begin,end)`. The function is defined over the interval
+ * \f$[lower,upper]\f$.
+ */
+ template
+ X_monotone_curve_2 operator()(InputIterator begin, InputIterator end
+ const Algebraic_real_1& lower,
+ const Algebraic_real_1& upper) const;
+
+ /*! constructs an \f$x\f$-monotone curve supported by the rational function
+ * \f$y = P(x)/Q(x)\f$, where the coefficients of \f$P\f$ and \f$Q\f$ are
+ * given in the ranges `[begin_numer,end_numer)` and
+ * `[begin_denom,end_denom)`, respectively.
+ * \pre \f$Q\f$ has no real roots.
+ */
+ template
+ X_monotone_curve_2 operator()(InputIterator begin_numer,
+ InputIterator end_numer,
+ InputIterator begin_denom,
+ InputIterator end_denom) const;
+
+ /*! constructs an \f$x\f$-monotone curve supported by the rational function
+ * \f$y = P(x)/Q(x)\f$, where the coefficients of \f$P\f$ and \f$Q\f$ are
+ * given in the ranges `[begin_numer,end_numer)` and
+ * `[begin_denom,end_denom)`, respectively. The function is defined over the
+ * interval \f$ I=[x,+\infty)\f$ if \f$ right\f$ is true and
+ * \f$ I=(-\infty,x]\f$ otherwise.
+ * \pre \f$ Q\f$ has no real roots in the interior of \f$ I\f$.
+ */
+ template
+ X_monotone_curve_2 operator()(InputIterator begin_numer,
+ InputIterator end_numer,
+ InputIterator begin_denom,
+ InputIterator end_denom,
+ const Algebraic_real_1& x, bool right) const;
+
+ /*! constructs an \f$x\f$-monotone curve supported by the rational function
+ * \f$y = P(x)/Q(x)\f$, where the coefficients of \f$ P\f$ and \f$Q\f$ are
+ * given in the ranges `[begin_numer,end_numer)` and
+ * `[begin_denom,end_denom)`, respectively. The function is defined over the
+ * interval \f$I=[lower,upper]\f$.
+ * \pre \f$Q\f$ has no real roots in the interior of \f$I\f$.
+ */
+ template
+ X_monotone_curve_2 operator()(InputIterator begin_numer,
+ InputIterator end_numer,
+ InputIterator begin_denom,
+ InputIterator end_denom,
+ const Algebraic_real_1& lower,
+ const Algebraic_real_1& upper) const;
+
+ /// @}
+
+ }; /* end Arr_rational_function_traits_2::Construct_x_monotone_curve_2 */
+
+ /*! The `Curve_2` class nested within the traits is used to represent rational
+ * functions which may be restricted to a certain \f$x\f$-range.
+ *
+ * \cgalModels{ArrTraits::Curve_2}
+ */
+ class Curve_2 {
+ public:
+
+ /// \name Types
+ /// @{
+
+ /*!
+ */
+ typedef AlgebraicKernel_d_1::Polynomial_1 Polynomial_1;
+
+ /*!
+ */
+ typedef AlgebraicKernel_d_1::Algebraic_real_1 Algebraic_real_1;
+
+ /// @}
+
+ /// \name Operations
+ /// @{
+
+ /*! returns the numerator of the supporting rational function.
+ */
+ const Polynomial_1& numerator () const;
+
+ /*! returns the denominator of the supporting rational function.
+ */
+ const Polynomial_1& denominator () const;
+
+ /*! returns whether çurve is continuous, namely whether it does not
+ * contains any vertical asymptotes in its interior.
+ */
+ bool is_continuous() const;
+
+ /*! returns whether the \f$x\f$-coordinate of çurve's left end is
+ * finite or whether it is \f$\pm\infty\f$.
+ */
+ Arr_parameter_space left_parameter_space_in_x () const;
+
+ /*! returns whether the \f$x\f$-coordinate of çurve's right end is
+ * finite or whether it is \f$\pm\infty\f$.
+ */
+ Arr_parameter_space right_parameter_space_in_x () const;
+
+ /*! returns the \f$x\f$-coordinate of the left end.
+ * \pre `left_boundary_in_x()` == `ARR_INTERIOR`
+ */
+ Algebraic_real_1 left_x() const;
+
+ /*! returns the \f$x\f$-coordinate of the right end.
+ * \pre `right_boundary_in_x()` == `ARR_INTERIOR`
+ */
+ Algebraic_real_1 right_x() const;
+
+ /// @}
+
+ }; /* end Arr_rational_function_traits_2::Curve_2 */
+
+ /*! \cgalModels{ArrTraits::Point_2}
+ */
+ class Point_2 {
+ public:
+
+ /// \name Types
+ /// @{
+
+ /*!
+ */
+ typedef AlgebraicKernel_d_1::Polynomial_1 Polynomial_1;
+
+ /*!
+ */
+ typedef AlgebraicKernel_d_1::Algebraic_real_1 Algebraic_real_1;
+
+ /*!
+ */
+ typedef AlgebraicKernel_d_1::Bound Bound;
+
+ /// @}
+
+ /// \name Operations
+ /// @{
+
+ /*! returns the numerator of the supporting rational function.
+ */
+ Polynomial_1 numerator () const;
+
+ /*! returns the denominator of the supporting rational function.
+ */
+ Polynomial_1 denominator () const;
+
+ /*! returns double-approximations of the x- and y-coordinates.
+ */
+ std::pair to_double() const;
+
+ /*! returns the \f$ x\f$-coordinate of the point.
+ */
+ Algebraic_real_1 x() const;
+
+ /*! obtains the \f$y\f$-coordinates of the point. Attention: As
+ * described above, points are not stored by their y-coordinate in
+ * `Algebraic_real_1` representation. In fact, this representation must be
+ * computed on demand, and might become quite costly for points defined by
+ * high-degree polynomials. Therefore, it is recommended to avoid calls to
+ * this function as much as possible.
+ */
+ Algebraic_real_1 y() const;
+
+ /*! Computes a pair \f$p\f$ approximating the \f$x\f$-coordinate with
+ * respect to the given absolute precision \f$a\f$.
+ * \post \f$p.first \leq x \leq p.second\f$
+ * \post \f$p.second - p.first \leq2^{-a}\f$
+ */
+ std::pair approximate_absolute_x(int a) const;
+
+ /*! Computes a pair \f$p\f$ approximating the \f$y\f$-coordinate with
+ * respect to the given absolute precision \f$a\f$.
+ * \post \f$p.first \leq y \leq p.second\f$
+ * \post \f$p.second - p.first \leq2^{-a}\f$
+ */
+ std::pair approximate_absolute_y(int a) const;
+
+ /*! Computes a pair \f$p\f$ approximating the \f$x\f$-coordinate with
+ * respect to the given relative precision \f$r\f$.
+ * \post \f$p.first \leq x \leq p.second\f$
+ * \post \f$p.second - p.first \leq2^{-r}|x|\f$
+ */
+ std::pair approximate_relative_x(int r) const;
+
+ /*! Computes a pair \f$p\f$ approximating the \f$ y\f$-coordinate with
+ * respect to the given relative precision \f$r\f$.
+ * \post \f$p.first \leq y \leq p.second\f$
+ * \post \f$p.second - p.first \leq2^{-r}|y|\f$
+ */
+ std::pair approximate_relative_y(int r) const;
+
+ /// @}
+
+ }; /* end Arr_rational_function_traits_2::Point_2 */
+
+ /*! The `X_monotone_curve_2` class nested within the traits is used to represent
+ * \f$ x\f$-monotone parts of rational functions. In particular, such an
+ * \f$x\f$-monotone curve may not contain a vertical asymptote in its interior
+ * \f$x\f$-range.
+ *
+ * \cgalModels{ArrTraits::XMonotoneCurve_2}
+ */
+ class X_monotone_curve_2 {
+ public:
+
+ /// \name Types
+ /// @{
+
+ /*!
+ */
+ typedef AlgebraicKernel_d_1::Polynomial_1 Polynomial_1;
+
+ /*!
+ */
+ typedef AlgebraicKernel_d_1::Algebraic_real_1 Algebraic_real_1;
+
+ /*!
+ */
+ typedef Arr_rational_function_traits_2::Point_2 Point_2;
+
+ /// @}
+
+ /// \name Operations
+ /// @{
+
+ /*! returns the numerator of the supporting rational function.
+ */
+ const Polynomial_1& numerator () const;
+
+ /*! returns the denominator of the supporting rational function.
+ */
+ const Polynomial_1& denominator () const;
+
+ /*! returns whether the \f$x\f$-coordinate of the source is finite or
+ * whether it is \f$\pm\infty\f$.
+ */
+ Arr_parameter_space source_parameter_space_in_x () const;
+
+ /*! returns whether the \f$y\f$-coordinate of the source is finite or
+ * whether it is \f$\pm\infty\f$.
+ */
+ Arr_parameter_space source_parameter_space_in_y () const;
+
+ /*! returns the source point of the arc.
+ * \pre Both the \f$x\f$- and \f$y\f$-coordinates of the source point is
+ * finite.
+ */
+ const Point_2& source() const;
+
+ /*! returns the \f$x\f$-coordinate of the source point.
+ * \pre The \f$x\f$-coordinate of the source point is finite.
+ */
+ Algebraic_real_1 source_x() const;
+
+ /*! returns whether the \f$x\f$-coordinate of the target is finite or
+ * whether it is \f$\pm\infty\f$.
+ */
+ Arr_parameter_space target_parameter_space_in_x () const;
+
+ /*! returns whether the \f$y\f$-coordinate of the target is finite or
+ * whether it is \f$\pm\infty\f$.
+ */
+ Arr_parameter_space target_parameter_space_in_y () const;
+
+ /*! returns the target point of the arc.
+ * \pre Both the \f$x\f$- and \f$y\f$-coordinates of the target point is
+ * finite.
+ */
+ const Point_2& target() const;
+
+ /*! returns the \f$x\f$-coordinate of the target point.
+ * \pre The \f$x\f$-coordinate of the target point is finite.
+ */
+ Algebraic_real_1 target_x() const;
+
+ /*! returns whether the \f$x\f$-coordinate of the left curve end is finite or
+ * whether it is \f$\pm\infty\f$.
+ */
+ Arr_parameter_space left_parameter_space_in_x () const;
+
+ /*! returns whether the \f$y\f$-coordinate of the left curve end is finite or
+ * whether it is \f$\pm\infty\f$.
+ */
+ Arr_parameter_space left_parameter_space_in_y () const;
+
+ /*! returns the left point of the arc.
+ * \pre Both the \f$x\f$- and \f$y\f$-coordinates of the left point is finite.
+ */
+ const Point_2& left() const;
+
+ /*! returns the \f$x\f$-coordinate of the left point.
+ * \pre The \f$x\f$-coordinate of the left point is finite.
+ */
+ Algebraic_real_1 left_x() const;
+
+ /*! returns whether the \f$x\f$-coordinate of the right curve end is finite or
+ * whether it is \f$\pm\infty\f$.
+ */
+ Arr_parameter_space right_parameter_space_in_x () const;
+
+ /*! returns whether the \f$y\f$-coordinate of the right curve end is finite or
+ * whether it is \f$\pm\infty\f$.
+ */
+ Arr_parameter_space right_parameter_space_in_y () const;
+
+ /*! returns the right point of the arc.
+ * \pre Both the \f$x\f$- and \f$y\f$-coordinates of The right point is
+ * finite.
+ */
+ const Point_2& right() const;
+
+ /*! returns the \f$x\f$-coordinate of the right point.
+ * \pre The \f$x\f$-coordinate of the right point is finite.
+ */
+ Algebraic_real_1 right_x() const;
+
+ /*! returns whether the curve is oriented from left to right.
+ */
+ bool is_left_to_right () const;
+
+ /// @}
+
+ }; /* end Arr_rational_function_traits_2::X_monotone_curve_2 */
}; /* end Arr_rational_function_traits_2 */
+
} /* end namespace CGAL */
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_segment_traits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_segment_traits_2.h
index 37a7a6c29bd..1db9da8bc82 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_segment_traits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_segment_traits_2.h
@@ -121,6 +121,7 @@ public:
X_monotone_curve_2(const X_monotone_curve_2& xcv,
const Point_2& src, const Point_2& tgt) const;
+ //! @}
} /* end Arr_segment_traits_2::Trim_2 */
}; /* end Arr_segment_traits_2 */
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_spherical_topology_traits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_spherical_topology_traits_2.h
index aa95832414a..a1badbde914 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_spherical_topology_traits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_spherical_topology_traits_2.h
@@ -49,10 +49,10 @@ public:
/// \name Creation
/// @{
- /*! Default constructor. */
+ /*! constructs default */
Arr_spherical_topology_traits_2();
- /*! Constructor from a geometry-traits object.
+ /*! constructs from a geometry-traits object.
* \param traits the traits.
*/
Arr_spherical_topology_traits_2(const GeometryTraits_2* traits);
@@ -62,36 +62,36 @@ public:
/// \name Accessors
/// @{
- /*! Obtain the DCEL (const version). */
+ /*! obtains the DCEL (const version). */
const Dcel& dcel() const;
- /*! Obtain the DCEL (non-const version). */
+ /*! obtains the DCEL (non-const version). */
Dcel& dcel();
- /*! Obtain the spherical face (const version). */
+ /*! obtains the spherical face (const version). */
const Face* spherical_face() const;
- /*! Obtain the spherical face (non-const version). */
+ /*! obtains the spherical face (non-const version). */
Face* spherical_face();
- /*! Obtain the south pole (const version). */
+ /*! obtains the south pole (const version). */
const Vertex* south_pole() const;
- /*! Obtain the south pole (non-const version). */
+ /*! obtains the south pole (non-const version). */
Vertex* south_pole();
- /*! Obtain the north pole (const version). */
+ /*! obtains the north pole (const version). */
const Vertex* north_pole() const;
- /*! Obtain the north pole (non-const version). */
+ /*! obtains the north pole (non-const version). */
Vertex* north_pole();
- /*! Obtain a vertex on the line of discontinuity that corresponds to
+ /*! obtains a vertex on the line of discontinuity that corresponds to
* the given point (or return NULL if no such vertex exists).
*/
const Vertex* discontinuity_vertex(const Point_2& pt) const;
- /*! Obtain a vertex on the line of discontinuity that corresponds to
+ /*! obtains a vertex on the line of discontinuity that corresponds to
* the given point (or return NULL if no such vertex exists).
*/
Vertex* discontinuity_vertex(const Point_2& pt);
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_tracing_traits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_tracing_traits_2.h
new file mode 100644
index 00000000000..19c12f90716
--- /dev/null
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_tracing_traits_2.h
@@ -0,0 +1,145 @@
+/// Copyright (c) 2007,2009,2010,2011 Tel-Aviv University (Israel).
+// All rights reserved.
+//
+// This file is part of CGAL (www.cgal.org).
+//
+// $URL$
+// $Id$
+// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial
+//
+// Author(s): Efi Fogel
+
+namespace CGAL {
+
+/*! \ingroup PkgArrangementOnSurface2TraitsClasses
+ *
+ * A metadata traits-class decorator for the arrangement package. It traces the
+ * invocations of traits-class functors. It is parameterized with another traits
+ * class and inherits from it. For each traits method it prints out its input
+ * parameters and its output result
+ *
+ * It models all the concepts that the original traits models.
+ */
+template
+class Arr_tracing_traits_2 : public BaseTraits {
+public:
+ enum Operation_id {
+ COMPARE_X_2_OP = 0,
+ COMPARE_XY_2_OP,
+ CONSTRUCT_MIN_VERTEX_2_OP,
+ CONSTRUCT_MAX_VERTEX_2_OP,
+ IS_VERTICAL_2_OP,
+ COMPARE_Y_AT_X_2_OP,
+ EQUAL_POINTS_2_OP,
+ EQUAL_CURVES_2_OP,
+ COMPARE_Y_AT_X_LEFT_2_OP,
+ COMPARE_Y_AT_X_RIGHT_2_OP,
+ MAKE_X_MONOTONE_2_OP,
+ SPLIT_2_OP,
+ INTERSECT_2_OP,
+ ARE_MERGEABLE_2_OP,
+ MERGE_2_OP,
+ CONSTRUCT_2_OPPOSITE_2_OP,
+ COMPARE_ENDPOINTS_XY_2_OP,
+ APPROXIMATE_2_OP,
+ PARAMETER_SPACE_IN_X_2_OP,
+ IS_ON_X_IDENTIFICATION_2_OP,
+ COMPARE_Y_ON_BOUNDARY_2_OP,
+ COMPARE_Y_NEAR_BOUNDARY_2_OP,
+ PARAMETER_SPACE_IN_Y_2_OP,
+ IS_ON_Y_IDENTIFICATION_2_OP,
+ COMPARE_X_ON_BOUNDARY_2_OP,
+ COMPARE_X_NEAR_BOUNDARY_2_OP,
+ NUMBER_OF_OPERATIONS
+ };
+
+public:
+ /// \name Creation
+ /// @{
+
+ /*! constructs default */
+ template
+ Arr_tracing_traits_2(Args ... args) : Base(std::forward(args)...) {}
+
+ /*! disables copy constructor. */
+ Arr_tracing_traits_2(const Arr_tracing_traits_2&) = delete;
+
+ /// @}
+
+ /*! enables the trace of a traits operation
+ * \param id the operation identifier
+ */
+ void enable_trace(Operation_id id);
+
+ /*! enables the trace of all traits operations
+ */
+ void enable_all_traces();
+
+ /*! disables the trace of a traits operation
+ * \param id the operation identifier
+ */
+ void disable_trace(Operation_id id);
+
+ /*! disables the trace of all traits operations
+ */
+ void disable_all_traces();
+
+ /// \name Types and functors inherited from `BaseTraits`
+ /// @{
+
+ using Has_left_category = typename Base::Has_left_category;
+ using Has_merge_category = typename Base::Has_merge_category;
+ using Has_do_intersect_category = typename Base::Has_do_intersect_category;
+
+ using Left_side_category =
+ typename internal::Arr_complete_left_side_category< Base >::Category;
+ using Bottom_side_category =
+ typename internal::Arr_complete_bottom_side_category< Base >::Category;
+ using Top_side_category =
+ typename internal::Arr_complete_top_side_category< Base >::Category;
+ using Right_side_category =
+ typename internal::Arr_complete_right_side_category< Base >::Category;
+
+ using Point_2 = typename Base::Point_2;
+ using X_monotone_curve_2 = typename Base::X_monotone_curve_2;
+ using Curve_2 = typename Base::Curve_2;
+ using Multiplicity = typename Base::Multiplicity;
+
+ /// @}
+
+ /// \name Obtain the appropriate functor
+ /// @{
+
+ Compare_x_2 compare_x_2_object() const;
+ Compare_xy_2 compare_xy_2_object() const;
+ Construct_min_vertex_2 construct_min_vertex_2_object() const;
+ Construct_max_vertex_2 construct_max_vertex_2_object() const;
+ Is_vertical_2 is_vertical_2_object() const;
+ Compare_y_at_x_2 compare_y_at_x_2_object() const;
+ Equal_2 equal_2_object() const;
+ Compare_y_at_x_left_2 compare_y_at_x_left_2_object() const;
+ Compare_y_at_x_right_2 compare_y_at_x_right_2_object() const;
+ Make_x_monotone_2 make_x_monotone_2_object() const;
+ Split_2 split_2_object() const;
+ Intersect_2 intersect_2_object() const;
+ Are_mergeable_2 are_mergeable_2_object() const;
+ Merge_2 merge_2_object() const;
+ Construct_opposite_2 construct_opposite_2_object() const;
+ Compare_endpoints_xy_2 compare_endpoints_xy_2_object() const;
+ Approximate_2 approximate_2_object() const;
+ Parameter_space_in_x_2 parameter_space_in_x_2_object() const;
+ Is_on_x_identification_2 is_on_x_identification_2_object() const;
+ Compare_y_on_boundary_2 compare_y_on_boundary_2_object() const;
+ Compare_y_near_boundary_2 compare_y_near_boundary_2_object() const;
+ Parameter_space_in_y_2 parameter_space_in_y_2_object() const;
+ Is_on_y_identification_2 is_on_y_identification_2_object() const;
+ Compare_x_on_boundary_2 compare_x_on_boundary_2_object() const;
+ Compare_x_near_boundary_2 compare_x_near_boundary_2_object() const;
+
+ /// @}
+};
+
+template
+OutputStream& operator<<(OutputStream& os, Comparison_result cr);
+
+} // namespace CGAL
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_unb_planar_topology_traits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_unb_planar_topology_traits_2.h
index 9a3aaf14789..46eb2fbfc96 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_unb_planar_topology_traits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_unb_planar_topology_traits_2.h
@@ -49,10 +49,10 @@ public:
/// \name Creation
/// @{
- /*! Default constructor. */
+ /*! constructs default. */
Arr_unb_planar_topology_traits_2();
- /*! Constructor from a geometry-traits object.
+ /*! constructs from a geometry-traits object.
* \param traits the traits.
*/
Arr_unb_planar_topology_traits_2(const GeometryTraits_2* traits);
@@ -62,16 +62,16 @@ public:
/// \name Accessors
/// @{
- /*! Obtain the DCEL (const version). */
+ /*! obtains the DCEL (const version). */
const Dcel& dcel() const;
- /*! Obtain the DCEL (non-const version). */
+ /*! obtains the DCEL (non-const version). */
Dcel& dcel();
- /*! Obtain the unbounded face (const version). */
+ /*! obtains the unbounded face (const version). */
const Face* unbounded_face() const;
- /*! Obtain the unbounded face (non-const version). */
+ /*! obtains the unbounded face (non-const version). */
Face* unbounded_face();
/// @}
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--Approximate_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--Approximate_2.h
index 3a43a08c1a2..fc450689a0d 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--Approximate_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--Approximate_2.h
@@ -16,8 +16,8 @@ public:
/// A model of this concept must provide:
/// @{
- /*! obtains an approximation of `p`'s \f$x\f$-coordinate (if `i == 0`), or of
- * `p`'s \f$y\f$-coordinate (if `i == 1`).
+ /*! obtains an approximation of `p`'s \f$x\f$-coordinate (if `i` == 0), or of
+ * `p`'s \f$y\f$-coordinate (if `i` == 1).
*/
CGAL::Approximate_number_type operator()(ArrTraits::Point_2 p, int i);
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementBasicTopologyTraits.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementBasicTopologyTraits.h
index e30fada356a..76c42cc2114 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementBasicTopologyTraits.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementBasicTopologyTraits.h
@@ -38,10 +38,10 @@ public:
/// \name Access Functions
/// @{
- /*! Obtain the DCEL (const version). */
+ /*! obtains the DCEL (const version). */
const Dcel& dcel() const;
- /*! Obtain the DCEL (non-const version). */
+ /*! obtains the DCEL (non-const version). */
Dcel& dcel();
/// @}
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementBottomSideTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementBottomSideTraits_2.h
index a29b1d33531..8d2682583b8 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementBottomSideTraits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementBottomSideTraits_2.h
@@ -29,6 +29,7 @@ public:
/// \name Functor Types
/// @{
+ /// @}
/// \name Accessing Functor Objects
/// @{
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedBottomTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedBottomTraits_2.h
index 09de38a67c5..48563de6d81 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedBottomTraits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedBottomTraits_2.h
@@ -33,6 +33,7 @@ public:
/// \name Functor Types
/// @{
+ /// @}
/// \name Accessing Functor Objects
/// @{
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedLeftTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedLeftTraits_2.h
index 9a06f1e409c..de1940c372b 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedLeftTraits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedLeftTraits_2.h
@@ -33,6 +33,7 @@ public:
/// \name Functor Types
/// @{
+ /// @}
/// \name Accessing Functor Objects
/// @{
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedRightTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedRightTraits_2.h
index 3f93d80deb2..a36bca2691e 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedRightTraits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedRightTraits_2.h
@@ -33,6 +33,7 @@ public:
/// \name Functor Types
/// @{
+ /// @}
/// \name Accessing Functor Objects
/// @{
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedTopTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedTopTraits_2.h
index be39ea2b6b1..d4a2d352af4 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedTopTraits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedTopTraits_2.h
@@ -33,6 +33,7 @@ public:
/// \name Functor Types
/// @{
+ /// @}
/// \name Accessing Functor Objects
/// @{
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementLeftSideTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementLeftSideTraits_2.h
index 3b01d80db4f..6f2d1343a85 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementLeftSideTraits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementLeftSideTraits_2.h
@@ -29,6 +29,7 @@ public:
/// \name Functor Types
/// @{
+ /// @}
/// \name Accessing Functor Objects
/// @{
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenBottomTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenBottomTraits_2.h
index c53f51ef056..2298e679738 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenBottomTraits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenBottomTraits_2.h
@@ -33,6 +33,7 @@ public:
/// \name Functor Types
/// @{
+ /// @}
/// \name Accessing Functor Objects
/// @{
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenLeftTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenLeftTraits_2.h
index f1b7d62ca68..b4f1b8d2ee3 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenLeftTraits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenLeftTraits_2.h
@@ -33,6 +33,7 @@ public:
/// \name Functor Types
/// @{
+ /// @}
/// \name Accessing Functor Objects
/// @{
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenRightTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenRightTraits_2.h
index fa8468d49dc..a5683bc1aff 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenRightTraits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenRightTraits_2.h
@@ -33,6 +33,7 @@ public:
/// \name Functor Types
/// @{
+ /// @}
/// \name Accessing Functor Objects
/// @{
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenTopTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenTopTraits_2.h
index 455bef4d160..ad852c41ed3 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenTopTraits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenTopTraits_2.h
@@ -33,6 +33,7 @@ public:
/// \name Functor Types
/// @{
+ /// @}
/// \name Accessing Functor Objects
/// @{
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementRightSideTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementRightSideTraits_2.h
index 689d2b7af2d..ed6d2be0c4d 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementRightSideTraits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementRightSideTraits_2.h
@@ -29,6 +29,7 @@ public:
/// \name Functor Types
/// @{
+ /// @}
/// \name Accessing Functor Objects
/// @{
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementTopSideTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementTopSideTraits_2.h
index 94614dfc81a..e579a7df9ef 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementTopSideTraits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementTopSideTraits_2.h
@@ -29,6 +29,7 @@ public:
/// \name Functor Types
/// @{
+ /// @}
/// \name Accessing Functor Objects
/// @{
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/PackageDescription.txt b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/PackageDescription.txt
index 1a82a431b56..300970a336e 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/PackageDescription.txt
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/PackageDescription.txt
@@ -198,46 +198,48 @@ implemented as peripheral classes or as free (global) functions.
- `CGAL::Arrangement_on_surface_with_history_2`
- `CGAL::Arrangement_2`
- `CGAL::Arrangement_with_history_2`
-- `CGAL::Arr_accessor`
-- `CGAL::Aos_observer`
-- `CGAL::Arr_observer`
- `CGAL::Arrangement_2::Vertex`
- `CGAL::Arrangement_2::Halfedge`
- `CGAL::Arrangement_2::Face`
+- `CGAL::Arr_accessor`
+- `CGAL::Arr_algebraic_segment_traits_2`
+- `CGAL::Arr_Bezier_curve_traits_2`
+- `CGAL::Arr_bounded_planar_topology_traits_2`
+- `CGAL::Arr_circle_segment_traits_2`
+- `CGAL::Arr_circular_arc_traits_2`
+- `CGAL::Arr_circular_line_arc_traits_2`
+- `CGAL::Arr_conic_traits_2`
+- `CGAL::Arr_consolidated_curve_data_traits_2`
+- `CGAL::Arr_counting_traits_2`
+- `CGAL::Arr_curve_data_traits_2
`
-- `CGAL::Arr_consolidated_curve_data_traits_2`
-- `CGAL::Arr_text_formatter`
-- `CGAL::Arr_face_extended_text_formatter`
-- `CGAL::Arr_extended_dcel_text_formatter`
-- `CGAL::Arr_with_history_text_formatter`
-- `CGAL::Arr_naive_point_location`
-- `CGAL::Arr_walk_along_line_point_location`
-- `CGAL::Arr_trapezoid_ric_point_location`
-- `CGAL::Arr_landmarks_point_location`
-- `CGAL::Arr_vertex_index_map`
- `CGAL::Arr_face_index_map`
+- `CGAL::Arr_extended_dcel`
+- `CGAL::Arr_extended_dcel_text_formatter`
+- `CGAL::Arr_face_extended_text_formatter`
+- `CGAL::Arr_geodesic_arc_on_sphere_traits_2`
+- `CGAL::Arr_landmarks_point_location`
+- `CGAL::Arr_line_arc_traits_2`
+- `CGAL::Arr_linear_traits_2`
+- `CGAL::Arr_naive_point_location`
+- `CGAL::Arr_non_caching_segment_traits_2`
+- `CGAL::Arr_observer`
+- `CGAL::Arr_polyline_traits_2`
- `CGAL::Arr_point_location_result`
-- `CGAL::Arr_bounded_planar_topology_traits_2`
-- `CGAL::Arr_unb_planar_topology_traits_2`
+- `CGAL::Arr_rational_function_traits_2`
+- `CGAL::Arr_segment_traits_2`
- `CGAL::Arr_spherical_topology_traits_2`
+- `CGAL::Arr_text_formatter`
+- `CGAL::Arr_tracing_traits_2`
+- `CGAL::Arr_trapezoid_ric_point_location`
+- `CGAL::Arr_unb_planar_topology_traits_2`
+- `CGAL::Arr_vertex_index_map`
+- `CGAL::Arr_walk_along_line_point_location`
+- `CGAL::Arr_with_history_text_formatter`
+- `CGAL::Aos_observer`
- `CGAL::CORE_algebraic_number_traits`
\cgalCRPSection{Functions}
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/examples.txt b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/examples.txt
index 1196580e382..f3d19cb4c94 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/examples.txt
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/examples.txt
@@ -12,6 +12,7 @@
\example Arrangement_on_surface_2/conics.cpp
\example Arrangement_on_surface_2/conic_multiplicities.cpp
\example Arrangement_on_surface_2/consolidated_curve_data.cpp
+\example Arrangement_on_surface_2/count_and_trace.cpp
\example Arrangement_on_surface_2/curve_history.cpp
\example Arrangement_on_surface_2/dcel_extension.cpp
\example Arrangement_on_surface_2/dcel_extension_io.cpp
diff --git a/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/CMakeLists.txt b/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/CMakeLists.txt
index 2784310f4ed..bb5566835ab 100644
--- a/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/CMakeLists.txt
+++ b/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Arrangement_on_surface_2_Examples)
find_package(CGAL REQUIRED COMPONENTS Core OPTIONAL_COMPONENTS Qt6)
diff --git a/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/count_and_trace.cpp b/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/count_and_trace.cpp
new file mode 100644
index 00000000000..3d95cacd096
--- /dev/null
+++ b/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/count_and_trace.cpp
@@ -0,0 +1,80 @@
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "arr_print.h"
+
+using Kernel = CGAL::Exact_predicates_exact_constructions_kernel;
+
+using Segment_base_traits = CGAL::Arr_segment_traits_2;
+using Segment_cnt_traits = CGAL::Arr_counting_traits_2;
+using Segment_traits = CGAL::Arr_tracing_traits_2;
+using Segment_arrangement = CGAL::Arrangement_2;
+using Point = Segment_traits::Point_2;
+using Segment = Segment_traits::Curve_2;
+
+using Geodesic_base_traits = CGAL::Arr_geodesic_arc_on_sphere_traits_2;
+using Geodesic_cnt_traits = CGAL::Arr_counting_traits_2;
+using Geodesic_traits = CGAL::Arr_tracing_traits_2;
+using Topol_traits = CGAL::Arr_spherical_topology_traits_2;
+using Geodesic_arrangement =
+ CGAL::Arrangement_on_surface_2;
+using Geodesic_point = Geodesic_traits::Point_2;
+using Geodesic_curve = Geodesic_traits::Curve_2;
+
+using Nt_traits = CGAL::CORE_algebraic_number_traits;
+using NT = Nt_traits::Rational;
+using Rational = Nt_traits::Rational;
+using Algebraic = Nt_traits::Algebraic;
+using Rat_kernel = CGAL::Cartesian;
+using Alg_kernel = CGAL::Cartesian;
+using Rat_point = Rat_kernel::Point_2;
+using Bezier_base_traits =
+ CGAL::Arr_Bezier_curve_traits_2;
+using Bezier_cnt_traits = CGAL::Arr_counting_traits_2;
+using Bezier_traits = CGAL::Arr_tracing_traits_2;
+using Bezier_arrangement = CGAL::Arrangement_2;
+
+int main() {
+ Segment_traits seg_traits;
+ seg_traits.disable_all_traces();
+ seg_traits.enable_trace(Segment_traits::COMPARE_Y_AT_X_2_OP);
+ Segment_arrangement seg_arr(&seg_traits);
+ std::vector ps = { Point(0,0), Point(1,0), Point(0,1) };
+ std::vector segs =
+ { Segment(ps[0], ps[1]), Segment(ps[1], ps[2]), Segment(ps[2], ps[0]) };
+ CGAL::insert(seg_arr, segs.begin(), segs.end());
+ std::cout << seg_traits;
+ print_arrangement_size(seg_arr);
+ std::cout << std::endl;
+
+ Geodesic_traits geodesic_traits;
+ geodesic_traits.disable_all_traces();
+ geodesic_traits.enable_trace(Geodesic_traits::COMPARE_XY_2_OP);
+ auto ctr_p = geodesic_traits.construct_point_2_object();
+ auto ctr_cv = geodesic_traits.construct_curve_2_object();
+ std::vector gps =
+ { ctr_p(-1,0,0), ctr_p(0,-1,0), ctr_p(0,0,-1) };
+ std::vector gas =
+ { ctr_cv(gps[0], gps[1]), ctr_cv(gps[1], gps[2]), ctr_cv(gps[2], gps[0]) };
+ Geodesic_arrangement geodesic_arr(&geodesic_traits);
+ CGAL::insert(geodesic_arr, gas.begin(), gas.end());
+ std::cout << geodesic_traits;
+ print_arrangement_size(geodesic_arr);
+
+ Bezier_traits bezier_traits;
+ bezier_traits.disable_all_traces();
+ std::cout << bezier_traits;
+
+ return 0;
+}
diff --git a/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/sgm_point_location.cpp b/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/sgm_point_location.cpp
index 565f903cddc..8d53c465581 100644
--- a/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/sgm_point_location.cpp
+++ b/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/sgm_point_location.cpp
@@ -36,13 +36,6 @@ using Trap_pl = CGAL::Arr_trapezoid_ric_point_location;
using Geom_traits = Gm::Geometry_traits_2;
using Point_2 = Geom_traits::Point_2;
-using Point_location_result = CGAL::Arr_point_location_result;
-using Query_result = std::pair;
-
-using Vertex_const_handle = Gm::Vertex_const_handle;
-using Halfedge_const_handle = Gm::Halfedge_const_handle;
-using Face_const_handle = Gm::Face_const_handle;
-
int main() {
Gm_polyhedron p;
p.make_tetrahedron(Point_3(1.0, 0.0, 0.0), Point_3(0.0, 1.0, 0.0),
@@ -50,7 +43,7 @@ int main() {
Gm gm;
Naive_pl naive_pl(gm);
- // Landmarks_pl landmarks_pl(gm);
+ Landmarks_pl landmarks_pl(gm);
Walk_pl walk_pl(gm);
// Trap_pl trap_pl(gm);
@@ -70,30 +63,17 @@ int main() {
locate_point(naive_pl, points[1]);
locate_point(naive_pl, points[2]);
+ // locate_point(walk_pl, points[0]);
+ // locate_point(walk_pl, points[1]);
+ // locate_point(walk_pl, points[2]);
+
+ locate_point(landmarks_pl, points[0]);
+ locate_point(landmarks_pl, points[1]);
+ locate_point(landmarks_pl, points[2]);
+
// locate_point(trap_pl, points[0]);
-
- ////////
- std::list results;
- // The following cause an assertion failure.
- // CGAL::locate(gm, &points[0], &points[3], std::back_inserter(results));
-
- // Print the results.
- for (auto it = results.begin(); it != results.end(); ++it) {
- std::cout << "The point (" << it->first << ") is located ";
- if (const Face_const_handle* f =
- std::get_if(&(it->second))) // inside a face
- std::cout << "inside "
- << (((*f)->is_unbounded()) ? "the unbounded" : "a bounded")
- << " face.\n";
- else if (const Halfedge_const_handle* e =
- std::get_if(&(it->second))) // on an edge
- std::cout << "on an edge: " << (*e)->curve() << std::endl;
- else if (const Vertex_const_handle* v =
- std::get_if(&(it->second))) // on a vertex
- std::cout << "on "
- << (((*v)->is_isolated()) ? "an isolated" : "a")
- << " vertex: " << (*v)->point() << std::endl;
- }
+ // locate_point(trap_pl, points[1]);
+ // locate_point(trap_pl, points[2]);
return 0;
}
diff --git a/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/tracing_counting.cpp b/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/tracing_counting.cpp
index 100c8828e39..df5715628f7 100644
--- a/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/tracing_counting.cpp
+++ b/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/tracing_counting.cpp
@@ -22,7 +22,7 @@ int main() {
Geom_traits traits;
traits.disable_all_traces();
- traits.enable_trace(Tracing_traits::INTERSECT_OP);
+ traits.enable_trace(Tracing_traits::INTERSECT_2_OP);
// Construct an arrangement using aggregated insertion:
My_arrangement arr1(&traits);
diff --git a/Arrangement_on_surface_2/include/CGAL/Aos_observer.h b/Arrangement_on_surface_2/include/CGAL/Aos_observer.h
index 0881fd44c8c..4c7749a25e2 100644
--- a/Arrangement_on_surface_2/include/CGAL/Aos_observer.h
+++ b/Arrangement_on_surface_2/include/CGAL/Aos_observer.h
@@ -48,27 +48,27 @@ public:
private:
Arrangement_2* p_arr; // The associated arrangement.
- /*! Copy constructor - not supported. */
+ /*! Copy constructor not supported. */
Aos_observer(const Self&);
- /*! Assignment operator - not supported. */
+ /*! Assignment operator not supported. */
Self& operator=(const Self&);
public:
/// \name Construction and destruction functions.
//@{
- /*! Default constructor. */
+ /*! constructs defaults. */
Aos_observer() : p_arr(nullptr) {}
- /*! Constructor with an associated arrangement. */
+ /*! constructs with an associated arrangement. */
Aos_observer(Arrangement_2& arr) : p_arr(&arr)
{
// Register the observer object in the arrangement.
p_arr->_register_observer(this);
}
- /*! Destructor. */
+ /*! destructs. */
virtual ~Aos_observer()
{
// Unregister the observer object from the arrangement.
@@ -80,13 +80,13 @@ public:
/// \name Modifying the associated arrangement.
//@{
- /*! Get the associated arrangement (const version). */
+ /*! obtains the associated arrangement (const version). */
const Arrangement_2* arrangement() const { return (p_arr); }
- /*! Get the associated arrangement (non-const version). */
+ /*! obtains the associated arrangement (non-const version). */
Arrangement_2* arrangement() { return (p_arr); }
- /*! Attach the observer to an arrangement.
+ /*! attaches the observer to an arrangement.
* \pre The observer is not already attached to an arrangement.
*/
void attach(Arrangement_2& arr)
@@ -110,7 +110,7 @@ public:
after_attach();
}
- /*! Detach the observer from the arrangement. */
+ /*! detaches the observer from the arrangement. */
void detach()
{
if (p_arr == nullptr) return;
@@ -564,7 +564,7 @@ public:
//@}
};
-} //namespace CGAL
+} // namespace CGAL
#include
diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_Bezier_curve_traits_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_Bezier_curve_traits_2.h
index 461cadf34a1..330686350a7 100644
--- a/Arrangement_on_surface_2/include/CGAL/Arr_Bezier_curve_traits_2.h
+++ b/Arrangement_on_surface_2/include/CGAL/Arr_Bezier_curve_traits_2.h
@@ -123,7 +123,7 @@ public:
/// \name Construction.
//@{
- /*! Default constructor. */
+ /*! constructs default. */
Arr_Bezier_curve_traits_2 ()
{
p_cache = new Bezier_cache;
@@ -131,14 +131,14 @@ public:
m_owner = true;
}
- /*! Copy constructor. */
+ /*! constructs copy. */
Arr_Bezier_curve_traits_2 (const Self& tr) :
p_cache (tr.p_cache),
p_inter_map (tr.p_inter_map),
m_owner (false)
{}
- /*! Assignment operator. */
+ /*! assigns. */
Self& operator= (const Self& tr)
{
if (this == &tr)
@@ -150,7 +150,7 @@ public:
return (*this);
}
- /*! Destructor. */
+ /*! destructs. */
~Arr_Bezier_curve_traits_2 ()
{
if (m_owner)
@@ -176,13 +176,12 @@ public:
public:
- /*! Constructor. */
+ /*! constructs. */
Compare_x_2 (const Bezier_cache *cache) :
p_cache (cache)
{}
- /*!
- * Compare the x-coordinates of two points.
+ /*! compares the x-coordinates of two points.
* \param p1 The first point.
* \param p2 The second point.
* \return LARGER if x(p1) > x(p2);
@@ -196,7 +195,7 @@ public:
}
};
- /*! Get a Compare_x_2 functor object. */
+ /*! obtains a `Compare_x_2` functor object. */
Compare_x_2 compare_x_2_object () const
{
return (Compare_x_2 (p_cache));
@@ -212,13 +211,12 @@ public:
public:
- /*! Constructor. */
+ /*! constructs. */
Compare_xy_2 (const Bezier_cache *cache) :
p_cache (cache)
{}
- /*!
- * Compares two points lexigoraphically: by x, then by y.
+ /*! compares two points lexigoraphically: by x, then by y.
* \param p1 The first point.
* \param p2 The second point.
* \return LARGER if x(p1) > x(p2), or if x(p1) = x(p2) and y(p1) > y(p2);
@@ -232,7 +230,7 @@ public:
}
};
- /*! Get a Compare_xy_2 functor object. */
+ /*! obtains a `Compare_xy_2` functor object. */
Compare_xy_2 compare_xy_2_object () const
{
return (Compare_xy_2 (p_cache));
@@ -244,8 +242,7 @@ public:
class Construct_min_vertex_2
{
public:
- /*!
- * Get the left endpoint of the x-monotone curve (segment).
+ /*! obtains the left endpoint of the x-monotone curve (segment).
* \param cv The curve.
* \return The left endpoint.
*/
@@ -255,7 +252,7 @@ public:
}
};
- /*! Get a Construct_min_vertex_2 functor object. */
+ /*! obtains a `Construct_min_vertex_2` functor object. */
Construct_min_vertex_2 construct_min_vertex_2_object () const
{
return Construct_min_vertex_2();
@@ -267,8 +264,7 @@ public:
class Construct_max_vertex_2
{
public:
- /*!
- * Get the right endpoint of the x-monotone curve (segment).
+ /*! obtains the right endpoint of the x-monotone curve (segment).
* \param cv The curve.
* \return The right endpoint.
*/
@@ -278,7 +274,7 @@ public:
}
};
- /*! Get a Construct_max_vertex_2 functor object. */
+ /*! obtains a `Construct_max_vertex_2` functor object. */
Construct_max_vertex_2 construct_max_vertex_2_object () const
{
return Construct_max_vertex_2();
@@ -290,8 +286,7 @@ public:
class Is_vertical_2
{
public:
- /*!
- * Check whether the given x-monotone curve is a vertical segment.
+ /*! checks whether the given x-monotone curve is a vertical segment.
* \param cv The curve.
* \return (true) if the curve is a vertical segment; (false) otherwise.
*/
@@ -301,7 +296,7 @@ public:
}
};
- /*! Get an Is_vertical_2 functor object. */
+ /*! obtains an `Is_vertical_2` functor object. */
Is_vertical_2 is_vertical_2_object () const
{
return Is_vertical_2();
@@ -317,13 +312,12 @@ public:
public:
- /*! Constructor. */
+ /*! constructs. */
Compare_y_at_x_2 (const Bezier_cache *cache) :
p_cache (cache)
{}
- /*!
- * Return the location of the given point with respect to the input curve.
+ /*! returns the location of the given point with respect to the input curve.
* \param cv The curve.
* \param p The point.
* \pre p is in the x-range of cv.
@@ -339,7 +333,7 @@ public:
}
};
- /*! Get a Compare_y_at_x_2 functor object. */
+ /*! obtains a `Compare_y_at_x_2` functor object. */
Compare_y_at_x_2 compare_y_at_x_2_object () const
{
return (Compare_y_at_x_2 (p_cache));
@@ -355,13 +349,12 @@ public:
public:
- /*! Constructor. */
+ /*! constructs. */
Compare_y_at_x_left_2 (const Bezier_cache *cache) :
p_cache (cache)
{}
- /*!
- * Compares the y value of two x-monotone curves immediately to the left
+ /*! compares the y value of two x-monotone curves immediately to the left
* of their intersection point.
* \param cv1 The first curve.
* \param cv2 The second curve.
@@ -380,7 +373,7 @@ public:
}
};
- /*! Get a Compare_y_at_x_left_2 functor object. */
+ /*! obtains a `Compare_y_at_x_left_2` functor object. */
Compare_y_at_x_left_2 compare_y_at_x_left_2_object () const
{
return (Compare_y_at_x_left_2 (p_cache));
@@ -396,13 +389,12 @@ public:
public:
- /*! Constructor. */
+ /*! constructs. */
Compare_y_at_x_right_2 (const Bezier_cache *cache) :
p_cache (cache)
{}
- /*!
- * Compares the y value of two x-monotone curves immediately to the right
+ /*! compares the y value of two x-monotone curves immediately to the right
* of their intersection point.
* \param cv1 The first curve.
* \param cv2 The second curve.
@@ -421,7 +413,7 @@ public:
}
};
- /*! Get a Compare_y_at_x_right_2 functor object. */
+ /*! obtains a `Compare_y_at_x_right_2` functor object. */
Compare_y_at_x_right_2 compare_y_at_x_right_2_object () const
{
return (Compare_y_at_x_right_2 (p_cache));
@@ -437,13 +429,12 @@ public:
public:
- /*! Constructor. */
+ /*! constructs. */
Equal_2 (const Bezier_cache *cache) :
p_cache (cache)
{}
- /*!
- * Check if the two x-monotone curves are the same (have the same graph).
+ /*! checks if the two x-monotone curves are the same (have the same graph).
* \param cv1 The first curve.
* \param cv2 The second curve.
* \return (true) if the two curves are the same; (false) otherwise.
@@ -455,8 +446,7 @@ public:
const_cast (*p_cache)));
}
- /*!
- * Check if the two points are the same.
+ /*! checks if the two points are the same.
* \param p1 The first point.
* \param p2 The second point.
* \return (true) if the two point are the same; (false) otherwise.
@@ -468,7 +458,7 @@ public:
}
};
- /*! Get an Equal_2 functor object. */
+ /*! obtains an `Equal_2` functor object. */
Equal_2 equal_2_object () const
{
return (Equal_2 (p_cache));
@@ -486,10 +476,10 @@ public:
Bezier_cache* p_cache;
public:
- /*! Constructor. */
+ /*! constructs. */
Make_x_monotone_2(Bezier_cache* cache) : p_cache(cache) {}
- /*! Subdivide a given Bezier curve into x-monotone subcurves and insert them
+ /*! subdivides a given Bezier curve into x-monotone subcurves and insert them
* into a given output iterator.
* \param cv the curve.
* \param oi an output iterator for the result. Its value type is a variant
@@ -600,7 +590,7 @@ public:
}
};
- /*! Get a Make_x_monotone_2 functor object. */
+ /*! obtains a `Make_x_monotone_2` functor object. */
Make_x_monotone_2 make_x_monotone_2_object() const
{ return (Make_x_monotone_2 (p_cache)); }
@@ -610,8 +600,7 @@ public:
class Split_2
{
public:
- /*!
- * Split a given x-monotone curve at a given point into two sub-curves.
+ /*! splits a given x-monotone curve at a given point into two sub-curves.
* \param cv The curve to split
* \param p The split point.
* \param c1 Output: The left resulting subcurve (p is its right endpoint).
@@ -626,7 +615,7 @@ public:
}
};
- /*! Get a Split_2 functor object. */
+ /*! obtains a `Split_2` functor object. */
Split_2 split_2_object () const
{
return Split_2();
@@ -643,14 +632,13 @@ public:
public:
- /*! Constructor. */
+ /*! constructs. */
Intersect_2 (Bezier_cache *cache, Intersection_map *imap) :
p_cache (cache),
p_imap (imap)
{}
- /*!
- * Find the intersections of the two given curves and insert them to the
+ /*! finds the intersections of the two given curves and insert them to the
* given output iterator.
* \param cv1 The first curve.
* \param cv2 The second curve.
@@ -666,7 +654,7 @@ public:
}
};
- /*! Get an Intersect_2 functor object. */
+ /*! obtains an `Intersect_2` functor object. */
Intersect_2 intersect_2_object () const
{
return (Intersect_2 (p_cache, p_inter_map));
@@ -678,8 +666,7 @@ public:
class Are_mergeable_2
{
public:
- /*!
- * Check whether it is possible to merge two given x-monotone curves.
+ /*! checks whether it is possible to merge two given x-monotone curves.
* \param cv1 The first curve.
* \param cv2 The second curve.
* \return (true) if the two curves are mergeable - if they are supported
@@ -692,7 +679,7 @@ public:
}
};
- /*! Get an Are_mergeable_2 functor object. */
+ /*! obtains an `Are_mergeable_2` functor object. */
Are_mergeable_2 are_mergeable_2_object () const
{
return Are_mergeable_2();
@@ -709,7 +696,7 @@ public:
/*! The traits (in case it has state) */
const Traits* m_traits;
- /*! Constructor
+ /*! constructs
* \param traits the traits (in case it has state)
*/
Merge_2(const Traits* traits) : m_traits(traits) {}
@@ -718,8 +705,7 @@ public:
Nt_traits, Bounding_traits>;
public:
- /*!
- * Merge two given x-monotone curves into a single curve (segment).
+ /*! merges two given x-monotone curves into a single curve (segment).
* \param cv1 The first curve.
* \param cv2 The second curve.
* \param c Output: The merged curve.
@@ -736,7 +722,7 @@ public:
}
};
- /*! Get a Merge_2 functor object. */
+ /*! obtains a `Merge_2` functor object. */
Merge_2 merge_2_object () const
{
return Merge_2(this);
@@ -752,8 +738,7 @@ public:
class Compare_endpoints_xy_2
{
public:
- /*!
- * Compare the endpoints of an $x$-monotone curve lexicographically.
+ /*! compares the endpoints of an $x$-monotone curve lexicographically.
* (assuming the curve has a designated source and target points).
* \param cv The curve.
* \return SMALLER if the curve is directed right;
@@ -768,7 +753,7 @@ public:
}
};
- /*! Get a Compare_endpoints_xy_2 functor object. */
+ /*! obtains a `Compare_endpoints_xy_2` functor object. */
Compare_endpoints_xy_2 compare_endpoints_xy_2_object() const
{
return Compare_endpoints_xy_2();
@@ -781,16 +766,14 @@ public:
/*! The traits (in case it has state) */
const Traits& m_traits;
- /*! Constructor
+ /*! constructs
* \param traits the traits (in case it has state)
*/
Trim_2(const Traits& traits) : m_traits(traits) {}
friend class Arr_Bezier_curve_traits_2;
- /*!\brief
- * Returns a trimmed version of an arc
- *
+ /*! returns a trimmed version of an arc
* \param xcv The arc
* \param src the new first endpoint
* \param tgt the new second endpoint
@@ -824,7 +807,7 @@ public:
}
};
- /*! Obtain a Trim_2 functor object. */
+ /*! obtains a `Trim_2` functor object. */
Trim_2 trim_2_object() const { return Trim_2(*this); }
/*! \class Construct_opposite_2
@@ -833,9 +816,7 @@ public:
class Construct_opposite_2
{
public:
-
- /*!
- * Construct an opposite x-monotone curve (with swapped source and target).
+ /*! constructs an opposite x-monotone curve (with swapped source and target).
* \param cv The curve.
* \return The opposite curve.
*/
@@ -845,7 +826,7 @@ public:
}
};
- /*! Get a Construct_opposite_2 functor object. */
+ /*! obtains a `Construct_opposite_2` functor object. */
Construct_opposite_2 construct_opposite_2_object() const
{
return Construct_opposite_2();
@@ -854,7 +835,8 @@ public:
//@}
};
-} //namespace CGAL
+} // namespace CGAL
#include
+
#endif
diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_accessor.h b/Arrangement_on_surface_2/include/CGAL/Arr_accessor.h
index bb60e54d224..9627f680137 100644
--- a/Arrangement_on_surface_2/include/CGAL/Arr_accessor.h
+++ b/Arrangement_on_surface_2/include/CGAL/Arr_accessor.h
@@ -69,30 +69,29 @@ private:
public:
- /*! Constructor with an associated arrangement. */
+ /*! constructs from an associated arrangement. */
Arr_accessor(Arrangement_2& arr) : p_arr(&arr) {}
- /* Get the arrangement. */
+ /*! obtains the arrangement. */
Arrangement_2& arrangement() { return (*p_arr); }
- /* Get the arrangement (const version). */
+ /*! obtains the arrangement (const version). */
const Arrangement_2& arrangement() const { return (*p_arr); }
/// \name Accessing the notification functions (for the global functions).
//@{
- /*! Notify that a global operation is about to take place. */
+ /*! notifies that a global operation is about to take place. */
void notify_before_global_change() { p_arr->_notify_before_global_change(); }
- /*! Notify that a global operation was completed. */
+ /*! notifies that a global operation was completed. */
void notify_after_global_change() { p_arr->_notify_after_global_change(); }
//@}
/// \name Local operations and predicates for the arrangement.
//@{
- /*!
- * Locate the arrangement feature that contains the given curve-end.
+ /*! locates the arrangement feature that contains the given curve-end.
* \param cv The curve.
* \param ind ARR_MIN_END if we refer to cv's minimal end;
* ARR_MAX_END if we refer to its maximal end.
@@ -128,8 +127,7 @@ public:
return Pl_result::make_result(Vertex_const_handle());
}
- /*!
- * Locate the place for the given curve around the given vertex.
+ /*! locates the place for the given curve around the given vertex.
* \param vh A handle for the arrangement vertex.
* \param cv The given x-monotone curve.
* \pre v is one of cv's endpoints.
@@ -162,8 +160,7 @@ public:
return (p_arr->_handle_for (he));
}
- /*!
- * Locate the place for the given curve-end around the given vertex,
+ /*! locates the place for the given curve-end around the given vertex,
* which lies on the boundary.
* \param vh A handle for the arrangement vertex.
* \param cv The curve.
@@ -177,11 +174,11 @@ public:
* vertex (in a clockwise order).
*/
Halfedge_handle
- locate_around_boundary_vertex(Vertex_handle vh,
- const X_monotone_curve_2& cv,
- Arr_curve_end ind,
- Arr_parameter_space ps_x,
- Arr_parameter_space ps_y) const
+ locate_around_boundary_vertex(Vertex_handle vh,
+ const X_monotone_curve_2& cv,
+ Arr_curve_end ind,
+ Arr_parameter_space ps_x,
+ Arr_parameter_space ps_y) const
{
CGAL_precondition((ps_x != ARR_INTERIOR) || (ps_y != ARR_INTERIOR));
@@ -193,8 +190,7 @@ public:
return (p_arr->_handle_for (he));
}
- /*!
- * Compute the distance (in halfedges) between two halfedges.
+ /*! computes the distance (in halfedges) between two halfedges.
* \param e1 A handle for the source halfedge.
* \param e2 A handle for the destination halfedge.
* \return In case e1 and e2 belong to the same connected component, the
@@ -222,8 +218,7 @@ public:
return (static_cast(dist));
}
- /*!
- * Determine whether a given query halfedge lies in the interior of a new
+ /*! determines whether a given query halfedge lies in the interior of a new
* face we are about to create, by connecting it with another halfedge
* using a given x-monotone curve.
* \param prev1 A handle for the query halfedge.
@@ -244,8 +239,7 @@ public:
cv));
}
- /*!
- * Check if the given vertex represents one of the ends of a given curve.
+ /*! checks if the given vertex represents one of the ends of a given curve.
* \param v The vertex.
* \param cv The curve.
* \param ind ARR_MIN_END if we refer to cv's minimal end;
@@ -262,8 +256,7 @@ public:
cv, ind, ps_x, ps_y));
}
- /*!
- * Check whether the given halfedge lies on the outer boundary of its
+ /*! checks whether the given halfedge lies on the outer boundary of its
* incident face.
* \param he The given halfedge.
* \return (true) in case he lies on the outer boundary of its incident face;
@@ -275,8 +268,7 @@ public:
return (! p_he->is_on_inner_ccb());
}
- /*!
- * Check whether the given halfedge lies on the inner boundary of its
+ /*! checks whether the given halfedge lies on the inner boundary of its
* incident face.
* \param he The given halfedge.
* \return (true) in case he lies on a hole inside its incident face;
@@ -288,8 +280,7 @@ public:
return (p_he->is_on_inner_ccb());
}
- /*!
- * Create a new vertex and associate it with the given point.
+ /*! creates a new vertex and associate it with the given point.
* \param p The point.
* \return A handle for the newly created vertex.
*/
@@ -300,8 +291,7 @@ public:
return (p_arr->_handle_for (v));
}
- /*!
- * Create a new boundary vertex.
+ /*! creates a new boundary vertex.
* \param pt the point
* \param ps_x The parameter space in x.
* \param ps_y The parameter space in y.
@@ -328,8 +318,7 @@ public:
return (p_arr->_handle_for(v));
}
- /*!
- * Create a new boundary vertex.
+ /*! creates a new boundary vertex.
* \param cv The curve incident to the boundary.
* \param ind The relevant curve-end.
* \param ps_x The parameter space in x.
@@ -358,8 +347,7 @@ public:
return (p_arr->_handle_for(v));
}
- /*!
- * Locate the arrangement features that will be used for inserting the
+ /*! locates the arrangement features that will be used for inserting the
* given curve end, which has a boundary condition, and set a proper vertex
* there.
* \param f The face that contains the curve end.
@@ -388,8 +376,7 @@ public:
return (std::make_pair(p_arr->_handle_for(v), p_arr->_handle_for(pred)));
}
- /*!
- * Insert an x-monotone curve into the arrangement, where the end vertices
+ /*! inserts an x-monotone curve into the arrangement, where the end vertices
* are given by the target points of two given halfedges.
* The two halfedges should be given such that in case a new face is formed,
* it will be the incident face of the halfedge directed from the first
@@ -426,8 +413,7 @@ public:
return (p_arr->_handle_for(he));
}
- /*!
- * Insert an x-monotone curve into the arrangement, such that one of its
+ /*! inserts an x-monotone curve into the arrangement, such that one of its
* endpoints corresponds to a given arrangement vertex, given the exact
* place for the curve in the circular list around this vertex. The other
* endpoint corresponds to a free vertex (a newly created vertex or an
@@ -463,8 +449,7 @@ public:
return (p_arr->_handle_for (he));
}
- /*!
- * Insert an x-monotone curve into the arrangement, such that both its
+ /*! inserts an x-monotone curve into the arrangement, such that both its
* endpoints correspond to free arrangement vertices (newly created vertices
* or existing isolated vertices), so a new hole is formed in the face
* that contains the two vertices.
@@ -511,16 +496,14 @@ public:
}
- /*!
- * Insert the given vertex as an isolated vertex inside the given face.
+ /*! inserts the given vertex as an isolated vertex inside the given face.
* \param f The face that should contain the isolated vertex.
* \param v The isolated vertex.
*/
void insert_isolated_vertex(Face_handle f, Vertex_handle v)
{ p_arr->_insert_isolated_vertex(p_arr->_face (f), p_arr->_vertex(v)); }
- /*!
- * Relocate all holes and isolated vertices to their proper position,
+ /*! relocates all holes and isolated vertices to their proper position,
* immediately after a face has split due to the insertion of a new halfedge.
* In case insert_at_vertices_ex() was invoked and indicated that a new face
* has been created, this function should be called with the halfedge
@@ -539,8 +522,7 @@ public:
void relocate_holes_in_new_face(Halfedge_handle new_he)
{ p_arr->_relocate_holes_in_new_face(p_arr->_halfedge(new_he)); }
- /*!
- * Move an outer CCB from one face to another.
+ /*! moves an outer CCB from one face to another.
* \param from_face The source face.
* \param to_face The destination face.
* \param ccb A CCB circulator that corresponds to component to move.
@@ -552,8 +534,7 @@ public:
p_arr->_halfedge (ccb));
}
- /*!
- * Move an inner CCB from one face to another.
+ /*! moves an inner CCB from one face to another.
* \param from_face The source face.
* \param to_face The destination face.
* \param ccb A CCB circulator that corresponds to component to move.
@@ -565,8 +546,7 @@ public:
p_arr->_halfedge(ccb));
}
- /*!
- * Move an isolated vertex from one face to another.
+ /*! moves an isolated vertex from one face to another.
* \param from_face The source face.
* \param to_face The destination face.
* \param v The isolated vertex to move.
@@ -578,8 +558,7 @@ public:
p_arr->_face(to_face), p_arr->_vertex(v));
}
- /*!
- * Remove an isolated vertex from its face.
+ /*! removes an isolated vertex from its face.
* \param v The isolated vertex to remove.
*/
void remove_isolated_vertex_ex (Vertex_handle v)
@@ -589,8 +568,7 @@ public:
p_arr->_remove_isolated_vertex(iso_v);
}
- /*!
- * Modify the point associated with a given vertex. The point may be
+ /*! modifies the point associated with a given vertex. The point may be
* geometrically different than the one currently associated with the vertex.
* \param v The vertex to modify.
* \param p The new point to associate with v.
@@ -602,9 +580,8 @@ public:
return v;
}
- /*!
- * Modify the x-monotone curve associated with a given edge. The curve may be
- * geometrically different than the one currently associated with the edge.
+ /*! modifies the x-monotone curve associated with a given edge. The curve may
+ * be geometrically different than the one currently associated with the edge.
* \param e The edge to modify.
* \param cv The new x-monotone curve to associate with e.
* \return A handle for the modified edge (same as e).
@@ -616,8 +593,7 @@ public:
return e;
}
- /*!
- * Split a given edge into two at a given point, and associate the given
+ /*! splits a given edge into two at a given point, and associate the given
* x-monotone curves with the split edges.
* \param e The edge to split (one of the pair of twin halfedges).
* \param p The split point.
@@ -638,8 +614,7 @@ public:
return (p_arr->_handle_for(he));
}
- /*!
- * Split a given edge into two at the given vertex, and associate the given
+ /*! splits a given edge into two at the given vertex, and associate the given
* x-monotone curves with the split edges.
* \param e The edge to split (one of the pair of twin halfedges).
* \param v The split vertex.
@@ -661,8 +636,7 @@ public:
return (p_arr->_handle_for(he));
}
- /*!
- * Split a fictitious edge at the given vertex.
+ /*! splits a fictitious edge at the given vertex.
* \param e The edge to split (one of the pair of twin halfedges).
* \param v The split vertex.
* \return A handle for the first split halfedge, whose source equals the
@@ -677,8 +651,7 @@ public:
return (p_arr->_handle_for(he));
}
- /*!
- * Remove a pair of twin halfedges from the arrangement.
+ /*! removes a pair of twin halfedges from the arrangement.
* \param e A handle for one of the halfedges to be removed.
* \param remove_source Should the source vertex of e be removed if it
* becomes isolated (true by default).
@@ -698,8 +671,7 @@ public:
return (p_arr->_handle_for(f));
}
- /*!
- * Check if the two given halfedges lie on the same inner component.
+ /*! checks if the two given halfedges lie on the same inner component.
* \param e1 A handle for the first halfedge.
* \param e2 A handle for the second halfedge.
* \return Whether e1 and e2 lie on the same inner component.
@@ -714,8 +686,7 @@ public:
return (ic1 == ic2);
}
- /*!
- * Check if the two given halfedges lie on the same outer component.
+ /*! checks if the two given halfedges lie on the same outer component.
* \param e1 A handle for the first halfedge.
* \param e2 A handle for the second halfedge.
* \return Whether e1 and e2 lie on the same outer component.
@@ -741,7 +712,7 @@ public:
typedef typename Arrangement_2::_Is_valid_vertex Is_valid_vertex;
typedef typename Arrangement_2::_Valid_vertex_iterator Valid_vertex_iterator;
- /*! Get an iterator for the first valid arrangement vertex. */
+ /*! obtains an iterator for the first valid arrangement vertex. */
Valid_vertex_iterator valid_vertices_begin()
{
return (Valid_vertex_iterator
@@ -750,7 +721,7 @@ public:
Is_valid_vertex (p_arr->topology_traits())));
}
- /*! Get a past-the-end iterator for the valid arrangement vertices. */
+ /*! obtains a past-the-end iterator for the valid arrangement vertices. */
Valid_vertex_iterator valid_vertices_end()
{
return (Valid_vertex_iterator
@@ -759,7 +730,7 @@ public:
Is_valid_vertex (p_arr->topology_traits())));
}
- /*! Get the number of valid arrangement vertices. */
+ /*! obtains the number of valid arrangement vertices. */
Size number_of_valid_vertices() const
{
return (p_arr->topology_traits()->number_of_valid_vertices());
@@ -786,13 +757,11 @@ public:
typedef DInner_ccb Dcel_inner_ccb;
typedef DIso_vertex Dcel_isolated_vertex;
- /*!
- * Get the arrangement DCEL.
+ /*! obtains the arrangement DCEL.
*/
const Dcel& dcel() const { return (p_arr->_dcel()); }
- /*!
- * Clear the entire arrangement.
+ /*! clears the entire arrangement.
*/
void clear_all()
{
@@ -800,8 +769,7 @@ public:
p_arr->_dcel().delete_all();
}
- /*!
- * Set the boundary of a vertex
+ /*! sets the boundary of a vertex
* \param p A vertex
* \param ps_x The boundary condition at x.
* \param ps_y The boundary condition at y.
@@ -816,8 +784,7 @@ public:
return (v_to_set);
}
- /*!
- * Create a new vertex.
+ /*! creates a new vertex.
* \param p A pointer to the point (may be nullptr in case of a vertex at
* infinity).
* \param ps_x The boundary condition at x.
@@ -842,8 +809,7 @@ public:
return (new_v);
}
- /*!
- * Create a new edge (halfedge pair), associated with the given curve.
+ /*! creates a new edge (halfedge pair), associated with the given curve.
* \param cv A pointer to the x-monotone curve (may be nullptr in case of
* a fictitious edge).
* \return A pointer to one of the created DCEL halfedge.
@@ -860,34 +826,29 @@ public:
return new_he;
}
- /*!
- * Create a new face.
+ /*! creates a new face.
* \return A pointer to the created DCEL face.
*/
Dcel_face* new_face() { return (p_arr->_dcel().new_face()); }
- /*!
- * Create a new outer CCB.
+ /*! creates a new outer CCB.
* \return A pointer to the created DCEL outer CCB.
*/
Dcel_outer_ccb* new_outer_ccb() { return (p_arr->_dcel().new_outer_ccb()); }
- /*!
- * Create a new inner CCB.
+ /*! creates a new inner CCB.
* \return A pointer to the created DCEL inner CCB.
*/
Dcel_inner_ccb* new_inner_ccb()
{ return (p_arr->_dcel().new_inner_ccb()); }
- /*!
- * Create a new isolated vertex.
+ /*! creates a new isolated vertex.
* \return A pointer to the created DCEL isolated vertex.
*/
Dcel_isolated_vertex* new_isolated_vertex()
{ return (p_arr->_dcel().new_isolated_vertex()); }
- /*!
- * Remove a range of vertices
+ /*! removes a range of vertices
*/
template
void delete_vertices(const VertexRange& range)
@@ -902,8 +863,7 @@ public:
}
}
- /*!
- * Remove a range of edges
+ /*! removes a range of edges
*/
template
void delete_edges(const EdgeRange& range)
@@ -918,8 +878,7 @@ public:
}
}
- /*!
- * Remove a range of faces
+ /*! removes a range of faces
*/
template
void delete_faces(const FaceRange& range)
@@ -932,8 +891,7 @@ public:
}
}
- /*!
- * Remove a range of outer ccbs
+ /*! removes a range of outer ccbs
*/
template
void delete_outer_ccbs(const CcbRange& range)
@@ -946,8 +904,7 @@ public:
}
}
- /*!
- * Remove a range of inner ccbs
+ /*! removes a range of inner ccbs
*/
template
void delete_inner_ccbs(const CcbRange& range)
@@ -960,14 +917,13 @@ public:
}
}
- /*!
- * Update the topology traits after the DCEL has been updated.
+ /*! updates the topology traits after the DCEL has been updated.
*/
void dcel_updated() { p_arr->topology_traits()->dcel_updated(); }
//@}
};
-} //namespace CGAL
+} // namespace CGAL
#endif
diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_algebraic_segment_traits_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_algebraic_segment_traits_2.h
index 03566eaa919..06ec80facc7 100644
--- a/Arrangement_on_surface_2/include/CGAL/Arr_algebraic_segment_traits_2.h
+++ b/Arrangement_on_surface_2/include/CGAL/Arr_algebraic_segment_traits_2.h
@@ -33,11 +33,10 @@
namespace CGAL {
-template< class Coefficient_ >
+template
class Arr_algebraic_segment_traits_2 {
public:
-
enum Site_of_point {
POINT_IN_INTERIOR = 0,
MIN_ENDPOINT = -1,
@@ -57,16 +56,15 @@ public:
typedef CGAL::Arr_algebraic_segment_traits_2 Self;
- // Default constructor
+ // constructs default
Arr_algebraic_segment_traits_2 () {}
- // Copy constructor
+ // constructs copy
Arr_algebraic_segment_traits_2 (const Self& /* s */) { /* No state...*/}
- // Assignment operator
- const Self& operator= (const Self& s)
- {return s;}
+ // assigns
+ const Self& operator= (const Self& s) { return s; }
// public types
@@ -613,11 +611,7 @@ public:
return Construct_curve_2(&CKvA_2::instance());
}
-
-
-
-
-/*
+ /*
// additional functionality (for not introducing a "general" arc)
@@ -650,12 +644,12 @@ public:
};
-*/
+ */
};
-} //namespace CGAL
+} // namespace CGAL
#include
-#endif // CGAL_ARR_ALGEBRAIC_SEGMENT_TRAITS_H
+#endif
diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_bounded_planar_topology_traits_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_bounded_planar_topology_traits_2.h
index 105d379297d..ba7f8772864 100644
--- a/Arrangement_on_surface_2/include/CGAL/Arr_bounded_planar_topology_traits_2.h
+++ b/Arrangement_on_surface_2/include/CGAL/Arr_bounded_planar_topology_traits_2.h
@@ -118,26 +118,26 @@ public:
///! \name Construction methods.
//@{
- /*! Default constructor. */
+ /*! constructs default. */
Arr_bounded_planar_topology_traits_2() :
Base(),
unb_face(nullptr)
{}
- /*! Constructor from a geometry-traits object. */
+ /*! constructs from a geometry-traits object. */
Arr_bounded_planar_topology_traits_2(const Gt2* traits) :
Base(traits),
unb_face(nullptr)
{}
- /*! Assign the contents of another topology-traits class. */
+ /*! assigns the contents of another topology-traits class. */
void assign(const Self& other);
//@}
///! \name Accessing the DCEL and constructing iterators.
//@{
- /*! Determine whether the DCEL reprsenets an empty structure. */
+ /*! determines whether the DCEL reprsenets an empty structure. */
bool is_empty_dcel() const
{
// An empty bounded arrangement has no edges or vertices.
@@ -145,40 +145,40 @@ public:
this->m_dcel.size_of_halfedges() == 0);
}
- /*! Check if the given vertex is concrete (associated with a point). */
+ /*! checks if the given vertex is concrete (associated with a point). */
inline bool is_concrete_vertex(const Vertex*) const { return true; }
- /*! Get the number of concrete vertices. */
+ /*! obtains the number of concrete vertices. */
Size number_of_concrete_vertices() const
{
// All vertices are concrete.
return (this->m_dcel.size_of_vertices());
}
- /*! Check if the given vertex is valid (not a fictitious one). */
+ /*! checks if the given vertex is valid (not a fictitious one). */
inline bool is_valid_vertex(const Vertex*) const { return true; }
- /*! Get the number of valid vertices. */
+ /*! obtains the number of valid vertices. */
Size number_of_valid_vertices() const
{
// All vertices are valid.
return (this->m_dcel.size_of_vertices());
}
- /*! Check if the given halfedge is valid (not a fictitious one). */
+ /*! checks if the given halfedge is valid (not a fictitious one). */
inline bool is_valid_halfedge(const Halfedge*) const { return true; }
- /*! Get the number of valid halfedges. */
+ /*! obtains the number of valid halfedges. */
Size number_of_valid_halfedges() const
{
// All halfedges are valid.
return (this->m_dcel.size_of_halfedges());
}
- /*! Check if the given face is valid (not a fictitious one). */
+ /*! checks if the given face is valid (not a fictitious one). */
inline bool is_valid_face (const Face*) const { return true; }
- /*! Get the number of valid faces. */
+ /*! obtains the number of valid faces. */
Size number_of_valid_faces() const
{
// All faces are valid.
@@ -255,15 +255,15 @@ public:
///! \name Topology-traits methods.
//@{
- /*! Initialize an empty DCEL structure.
+ /*! initializes an empty DCEL structure.
*/
void init_dcel();
- /*! Make the necessary updates after the DCEL structure have been updated.
+ /*! makes the necessary updates after the DCEL structure have been updated.
*/
void dcel_updated();
- /*! Check if the given vertex is associated with the given curve end.
+ /*! checks if the given vertex is associated with the given curve end.
* \param v The vertex.
* \param cv The x-monotone curve.
* \param ind The curve end.
@@ -295,8 +295,8 @@ public:
}
}
- /*! Given a curve end with boundary conditions and a face that contains the
- * interior of the curve, find a place for a boundary vertex that will
+ /*! given a curve end with boundary conditions and a face that contains the
+ * interior of the curve, finds a place for a boundary vertex that will
* represent the curve end along the face boundary.
* \param f The face.
* \param cv The x-monotone curve.
@@ -318,7 +318,7 @@ public:
return std::nullopt;
}
- /*! Locate the predecessor halfedge for the given curve around a given
+ /*! locates the predecessor halfedge for the given curve around a given
* vertex with boundary conditions.
* \param v The vertex.
* \param cv The x-monotone curve.
@@ -340,7 +340,7 @@ public:
return nullptr;
}
- /*! Locate a DCEL feature that contains the given curve end.
+ /*! locates a DCEL feature that contains the given curve end.
* \param cv The x-monotone curve.
* \param ind The curve end.
* \param ps_x The boundary condition of the curve end in x.
@@ -361,7 +361,7 @@ public:
return Result(v);
}
- /*! Split a fictitious edge using the given vertex.
+ /*! splits a fictitious edge using the given vertex.
* \param e The edge to split (one of the pair of halfedges).
* \param v The split vertex.
* \pre e is a fictitious halfedge.
@@ -375,21 +375,21 @@ public:
return nullptr;
}
- /*! Determine whether the given face is unbounded.
+ /*! determines whether the given face is unbounded.
* \param f The face.
* \return Whether f is unbounded.
* There is only one unbounded face in the arrangement:
*/
bool is_unbounded(const Face* f) const { return (f == unb_face); }
- /*! Determine whether the given boundary vertex is redundant.
+ /*! determines whether the given boundary vertex is redundant.
* \param v The vertex.
* \return Whether v is redundant, and should be erased.
* There are no redundant vertices.
*/
bool is_redundant(const Vertex*) const { return false; }
- /*! Erase the given redundant vertex by merging a fictitious edge.
+ /*! erases the given redundant vertex by merging a fictitious edge.
* The function does not free the vertex v itself.
* \param v The vertex.
* \pre v is a redundant vertex.
@@ -402,20 +402,20 @@ public:
return nullptr;
}
- //! reference_face (const version).
- /*! The function returns a reference face of the arrangement.
- All reference faces of arrangements of the same type have a common
- point.
- \return A pointer to the reference face.
- */
+ //! reference_face (const version).
+ /*! returns a reference face of the arrangement. All reference faces of
+ * arrangements of the same type have a common point.
+ *
+ * \return A pointer to the reference face.
+ */
const Face* reference_face() const { return unbounded_face(); }
//! reference_face (non-const version).
- /*! The function returns a reference face of the arrangement.
- All reference faces of arrangements of the same type have a common
- point.
- \return A pointer to the reference face.
- */
+ /*! returns a reference face of the arrangement. All reference faces of
+ * arrangements of the same type have a common point.
+ *
+ * \return A pointer to the reference face.
+ */
Face* reference_face() { return unbounded_face(); }
//@}
@@ -426,17 +426,17 @@ public:
/*! This function is used by the "walk" point-location strategy. */
const Face* initial_face() const { return (unb_face); }
- /*! Get the unbounded face (const version). */
+ /*! obtains the unbounded face (const version). */
const Face* unbounded_face() const { return (unb_face); }
- /*! Get the unbounded face (non-const version). */
+ /*! obtains the unbounded face (non-const version). */
Face* unbounded_face() { return (unb_face); }
//@}
/// \name Additional predicates, specialized for this topology-traits class.
//@{
- /*! Compare the given vertex and the given point.
+ /*! compares the given vertex and the given point.
* \param p The point.
* \param v The vertex.
* \return The result of the comparison of the x-coordinates of p and v.
@@ -444,7 +444,7 @@ public:
virtual Comparison_result compare_x(const Point_2& p, const Vertex* v) const
{ return (this->m_geom_traits->compare_x_2_object()(p, v->point())); }
- /*! Compare the given vertex and the given point.
+ /*! compares the given vertex and the given point.
* \param p The point.
* \param v The vertex.
* \return The result of the xy-lexicographic comparison of p and v.
@@ -452,7 +452,7 @@ public:
virtual Comparison_result compare_xy(const Point_2& p, const Vertex* v) const
{ return (this->m_geom_traits->compare_xy_2_object()(p, v->point())); }
- /*! Compare the relative y-position of the given point and the given edge
+ /*! compares the relative y-position of the given point and the given edge
* (which may be fictitious).
* \param p The point.
* \param he The edge (one of the pair of halfedges).
diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_circle_segment_traits_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_circle_segment_traits_2.h
index f6fbe621739..a2630c65104 100644
--- a/Arrangement_on_surface_2/include/CGAL/Arr_circle_segment_traits_2.h
+++ b/Arrangement_on_surface_2/include/CGAL/Arr_circle_segment_traits_2.h
@@ -72,12 +72,12 @@ protected:
bool m_use_cache;
public:
- /*! Default constructor. */
+ /*! constructs default. */
Arr_circle_segment_traits_2 (bool use_intersection_caching = false) :
m_use_cache(use_intersection_caching)
{}
- /*! Get the next curve index. */
+ /*! obtains the next curve index. */
static unsigned int get_index ()
{
#ifdef CGAL_NO_ATOMIC
@@ -94,8 +94,7 @@ public:
class Compare_x_2
{
public:
- /*!
- * Compare the x-coordinates of two points.
+ /*! compares the \f$x\f$-coordinates of two points.
* \param p1 The first point.
* \param p2 The second point.
* \return LARGER if x(p1) > x(p2);
@@ -111,7 +110,7 @@ public:
}
};
- /*! Get a Compare_x_2 functor object. */
+ /*! obtains a `Compare_x_2` functor object. */
Compare_x_2 compare_x_2_object () const
{
return Compare_x_2();
@@ -120,8 +119,7 @@ public:
class Compare_xy_2
{
public:
- /*!
- * Compares two points lexigoraphically: by x, then by y.
+ /*! compares two points lexigoraphically: by x, then by y.
* \param p1 The first point.
* \param p2 The second point.
* \return LARGER if x(p1) > x(p2), or if x(p1) = x(p2) and y(p1) > y(p2);
@@ -142,7 +140,7 @@ public:
}
};
- /*! Get a Compare_xy_2 functor object. */
+ /*! obtains a Compare_xy_2 functor object. */
Compare_xy_2 compare_xy_2_object () const
{
return Compare_xy_2();
@@ -151,8 +149,7 @@ public:
class Construct_min_vertex_2
{
public:
- /*!
- * Get the left endpoint of the x-monotone curve (segment).
+ /*! obtains the left endpoint of the \f$x\f$-monotone curve (segment).
* \param cv The curve.
* \return The left endpoint.
*/
@@ -162,7 +159,7 @@ public:
}
};
- /*! Get a Construct_min_vertex_2 functor object. */
+ /*! obtains a `Construct_min_vertex_2` functor object. */
Construct_min_vertex_2 construct_min_vertex_2_object () const
{
return Construct_min_vertex_2();
@@ -171,8 +168,7 @@ public:
class Construct_max_vertex_2
{
public:
- /*!
- * Get the right endpoint of the x-monotone curve (segment).
+ /*! obtains the right endpoint of the \f$x\f$-monotone curve (segment).
* \param cv The curve.
* \return The right endpoint.
*/
@@ -182,7 +178,7 @@ public:
}
};
- /*! Get a Construct_max_vertex_2 functor object. */
+ /*! obtains a Construct_max_vertex_2 functor object. */
Construct_max_vertex_2 construct_max_vertex_2_object () const
{
return Construct_max_vertex_2();
@@ -191,8 +187,7 @@ public:
class Is_vertical_2
{
public:
- /*!
- * Check whether the given x-monotone curve is a vertical segment.
+ /*! checks whether the given \f$x\f$-monotone curve is a vertical segment.
* \param cv The curve.
* \return (true) if the curve is a vertical segment; (false) otherwise.
*/
@@ -202,7 +197,7 @@ public:
}
};
- /*! Get an Is_vertical_2 functor object. */
+ /*! obtains an `Is_vertical_2` functor object. */
Is_vertical_2 is_vertical_2_object () const
{
return Is_vertical_2();
@@ -211,11 +206,10 @@ public:
class Compare_y_at_x_2
{
public:
- /*!
- * Return the location of the given point with respect to the input curve.
+ /*! returns the location of the given point with respect to the input curve.
* \param cv The curve.
* \param p The point.
- * \pre p is in the x-range of cv.
+ * \pre p is in the \f$x\f$-range of `cv`.
* \return SMALLER if y(p) < cv(x(p)), i.e. the point is below the curve;
* LARGER if y(p) > cv(x(p)), i.e. the point is above the curve;
* EQUAL if p lies on the curve.
@@ -229,7 +223,7 @@ public:
}
};
- /*! Get a Compare_y_at_x_2 functor object. */
+ /*! obtains a `Compare_y_at_x_2` functor object. */
Compare_y_at_x_2 compare_y_at_x_2_object () const
{
return Compare_y_at_x_2();
@@ -238,9 +232,8 @@ public:
class Compare_y_at_x_right_2
{
public:
- /*!
- * Compares the y value of two x-monotone curves immediately to the right
- * of their intersection point.
+ /*! compares the y value of two \f$x\f$-monotone curves immediately to the
+ * right of their intersection point.
* \param cv1 The first curve.
* \param cv2 The second curve.
* \param p The intersection point.
@@ -283,7 +276,7 @@ public:
}
};
- /*! Get a Compare_y_at_x_right_2 functor object. */
+ /*! obtains a `Compare_y_at_x_right_2` functor object. */
Compare_y_at_x_right_2 compare_y_at_x_right_2_object () const
{
return Compare_y_at_x_right_2();
@@ -292,16 +285,15 @@ public:
class Compare_y_at_x_left_2
{
public:
- /*!
- * Compares the y value of two x-monotone curves immediately to the left
- * of their intersection point.
+ /*! compares the \f$y\f$-value of two \f$x\f$-monotone curves immediately to
+ * the left of their intersection point.
* \param cv1 The first curve.
* \param cv2 The second curve.
* \param p The intersection point.
- * \pre The point p lies on both curves, and both of them must be also be
+ * \pre The point `p` lies on both curves, and both of them must be also be
* defined (lexicographically) to its left.
- * \return The relative position of cv1 with respect to cv2 immdiately to
- * the left of p: SMALLER, LARGER or EQUAL.
+ * \return The relative position of `cv1` with respect to `cv2` immdiately
+ * to the left of `p`: `SMALLER`, `LARGER`, or `EQUAL`.
*/
Comparison_result operator() (const X_monotone_curve_2& cv1,
const X_monotone_curve_2& cv2,
@@ -338,7 +330,7 @@ public:
}
};
- /*! Get a Compare_y_at_x_left_2 functor object. */
+ /*! obtains a `Compare_y_at_x_left_2` functor object. */
Compare_y_at_x_left_2 compare_y_at_x_left_2_object () const
{
return Compare_y_at_x_left_2();
@@ -347,8 +339,8 @@ public:
class Equal_2
{
public:
- /*!
- * Check if the two x-monotone curves are the same (have the same graph).
+ /*! checks if the two \f$x\f$-monotone curves are the same (have the same
+ * graph).
* \param cv1 The first curve.
* \param cv2 The second curve.
* \return (true) if the two curves are the same; (false) otherwise.
@@ -362,8 +354,7 @@ public:
return (cv1.equals (cv2));
}
- /*!
- * Check if the two points are the same.
+ /*! checks if the two points are the same.
* \param p1 The first point.
* \param p2 The second point.
* \return (true) if the two point are the same; (false) otherwise.
@@ -374,7 +365,7 @@ public:
}
};
- /*! Get an Equal_2 functor object. */
+ /*! obtains an `Equal_2` functor object. */
Equal_2 equal_2_object () const
{
return Equal_2();
@@ -395,7 +386,7 @@ public:
/*! The traits (in case it has state) */
const Traits& m_traits;
- /*! Constructor
+ /*! constructs
* \param traits the traits.
*/
Approximate_2(const Traits& traits) : m_traits(traits) {}
@@ -403,24 +394,24 @@ public:
friend class Arr_circle_segment_traits_2;
public:
- /*! Obtain an approximation of a point coordinate.
+ /*! obtains an approximation of a point coordinate.
* \param p the exact point.
* \param i the coordinate index (either 0 or 1).
- * \pre i is either 0 or 1.
- * \return An approximation of p's x-coordinate (if i == 0), or an
- * approximation of p's y-coordinate (if i == 1).
+ * \pre `i` is either 0 or 1.
+ * \return An approximation of `p`'s \f$x\f$-coordinate (if `i` == 0), or an
+ * approximation of `p`'s \f$y\f$-coordinate (if `i` == 1).
*/
Approximate_number_type operator()(const Point_2& p, int i) const {
CGAL_precondition((i == 0) || (i == 1));
return (i == 0) ? (CGAL::to_double(p.x())) : (CGAL::to_double(p.y()));
}
- /*! Obtain an approximation of a point.
+ /*! obtains an approximation of a point.
*/
Approximate_point_2 operator()(const Point_2& p) const
{ return Approximate_point_2(operator()(p, 0), operator()(p, 1)); }
- /*! Obtain an approximation of an \f$x\f$-monotone curve.
+ /*! obtains an approximation of an \f$x\f$-monotone curve.
*/
template
OutputIterator operator()(const X_monotone_curve_2& xcv, double error,
@@ -430,7 +421,7 @@ public:
}
private:
- /*! Handle segments.
+ /*! handles segments.
*/
template
OutputIterator approximate_segment(const X_monotone_curve_2& xcv,
@@ -477,7 +468,7 @@ public:
return oi;
}
- /*! Compute the circular point given the parameter t and the transform
+ /*! computes the circular point given the parameter t and the transform
* data, that is, the center (translation) and the sin and cos of the
* rotation angle.
*/
@@ -486,7 +477,7 @@ public:
y = r * std::sin(t);
}
- /*! Transform a point. In particular, rotate the canonical point
+ /*! transforms a point. In particular, rotate the canonical point
* (`xc`,`yc`) by an angle, the sine and cosine of which are `sint` and
* `cost`, respectively, and translate by (`cx`,`cy`).
*/
@@ -496,7 +487,7 @@ public:
y = yc + cy;
}
- /*! Handle circular arcs.
+ /*! handles circular arcs.
*/
template
OutputIterator approximate_arc(const X_monotone_curve_2& xcv,
@@ -554,7 +545,7 @@ public:
}
};
- /*! Obtain an Approximate_2 functor object. */
+ /*! obtains an `Approximate_2` functor object. */
Approximate_2 approximate_2_object() const { return Approximate_2(*this); }
//@}
@@ -562,7 +553,7 @@ public:
//@{
/*! \class
- * A functor for subdividing a curve into x-monotone curves.
+ * A functor for subdividing a curve into \f$x\f$-monotone curves.
*/
class Make_x_monotone_2 {
private:
@@ -573,8 +564,8 @@ public:
public:
Make_x_monotone_2(bool use_cache = false) : m_use_cache(use_cache) {}
- /*! Subdivide a given circular arc or line segment into x-monotone subcurves
- * and insert them to a given output iterator.
+ /*! subdivides a given circular arc or line segment into \f$x\f$-monotone
+ * subcurves and insert them to a given output iterator.
* \param cv the curve.
* \param oi the output iterator for the result. Its dereference type is a
* variant that wraps a \c Point_2 or an \c X_monotone_curve_2
@@ -632,7 +623,7 @@ public:
else {
// Act according to the number of vertical tangency points.
if (n_vpts == 2) {
- // Subdivide the circular arc into three x-monotone arcs.
+ // Subdivide the circular arc into three \f$x\f$-monotone arcs.
*oi++ = X_monotone_curve_2(circ,
cv.source(), vpts[0],
cv.orientation(),
@@ -650,7 +641,7 @@ public:
index);
}
else if (n_vpts == 1) {
- // Subdivide the circular arc into two x-monotone arcs.
+ // Subdivide the circular arc into two \f$x\f$-monotone arcs.
*oi++ = X_monotone_curve_2(circ,
cv.source(),
vpts[0],
@@ -666,7 +657,7 @@ public:
else {
CGAL_assertion(n_vpts == 0);
- // The arc is already x-monotone:
+ // The arc is already \f$x\f$-monotone:
*oi++ = X_monotone_curve_2(circ,
cv.source(),
cv.target(),
@@ -679,7 +670,7 @@ public:
}
};
- /*! Get a Make_x_monotone_2 functor object. */
+ /*! obtains a `Make_x_monotone_2` functor object. */
Make_x_monotone_2 make_x_monotone_2_object() const
{ return Make_x_monotone_2(m_use_cache); }
@@ -687,13 +678,13 @@ public:
{
public:
- /*!
- * Split a given x-monotone curve at a given point into two sub-curves.
+ /*! splits a given \f$x\f$-monotone curve at a given point into two
+ * sub-curves.
* \param cv The curve to split
* \param p The split point.
- * \param c1 Output: The left resulting subcurve (p is its right endpoint).
- * \param c2 Output: The right resulting subcurve (p is its left endpoint).
- * \pre p lies on cv but is not one of its end-points.
+ * \param c1 Output: The left resulting subcurve (`p` is its right endpoint).
+ * \param c2 Output: The right resulting subcurve (`p` is its left endpoint).
+ * \pre `p` lies on cv but is not one of its end-points.
*/
void operator() (const X_monotone_curve_2& cv, const Point_2& p,
X_monotone_curve_2& c1, X_monotone_curve_2& c2) const
@@ -707,7 +698,7 @@ public:
}
};
- /*! Get a Split_2 functor object. */
+ /*! obtains a `Split_2` functor object. */
Split_2 split_2_object () const
{
return Split_2();
@@ -718,10 +709,10 @@ public:
Intersection_map& _inter_map; // The map of intersection points.
public:
- /*! Constructor. */
+ /*! constructs. */
Intersect_2(Intersection_map& map) : _inter_map(map) {}
- /*! Find the intersections of the two given curves and insert them to the
+ /*! finds the intersections of the two given curves and insert them to the
* given output iterator. As two segments may itersect only once, only a
* single will be contained in the iterator.
* \param cv1 The first curve.
@@ -736,18 +727,18 @@ public:
{ return (cv1.intersect(cv2, oi, &_inter_map)); }
};
- /*! Get an Intersect_2 functor object. */
+ /*! obtains an `Intersect_2` functor object. */
Intersect_2 intersect_2_object() const { return (Intersect_2(inter_map)); }
class Are_mergeable_2
{
public:
- /*!
- * Check whether it is possible to merge two given x-monotone curves.
+ /*! checks whether it is possible to merge two given \f$x\f$-monotone curves.
* \param cv1 The first curve.
* \param cv2 The second curve.
- * \return (true) if the two curves are mergeable - if they are supported
- * by the same line and share a common endpoint; (false) otherwise.
+ * \return (true) if `cv1` and `cv2` are mergeable, that is, if they are
+ * supported by the same line and share a common endpoint; (false)
+ * otherwise.
*/
bool operator() (const X_monotone_curve_2& cv1,
const X_monotone_curve_2& cv2) const
@@ -756,14 +747,14 @@ public:
}
};
- /*! Get an Are_mergeable_2 functor object. */
+ /*! obtains an `Are_mergeable_2` functor object. */
Are_mergeable_2 are_mergeable_2_object () const
{
return Are_mergeable_2();
}
/*! \class Merge_2
- * A functor that merges two x-monotone arcs into one.
+ * A functor that merges two \f$x\f$-monotone arcs into one.
*/
class Merge_2
{
@@ -773,7 +764,7 @@ public:
/*! The traits (in case it has state) */
const Traits* m_traits;
- /*! Constructor
+ /*! Constructs
* \param traits the traits (in case it has state)
*/
Merge_2(const Traits* traits) : m_traits(traits) {}
@@ -781,8 +772,7 @@ public:
friend class Arr_circle_segment_traits_2;
public:
- /*!
- * Merge two given x-monotone curves into a single curve.
+ /*! merges two given \f$x\f$-monotone curves into a single curve.
* \param cv1 The first curve.
* \param cv2 The second curve.
* \param c Output: The merged curve.
@@ -799,7 +789,7 @@ public:
}
};
- /*! Get a Merge_2 functor object. */
+ /*! obtains a `Merge_2` functor object. */
Merge_2 merge_2_object () const
{
return Merge_2(this);
@@ -808,10 +798,9 @@ public:
class Compare_endpoints_xy_2
{
public:
- /*!
- * compare lexicogrphic the endpoints of a x-monotone curve.
+ /*! compares lexicogrphic the endpoints of a \f$x\f$-monotone curve.
* \param cv the curve
- * \return SMALLER if the curve is directed right, else return SMALLER
+ * \return `SMALLER` if the curve is directed right, else return `LARGER`.
*/
Comparison_result operator()(const X_monotone_curve_2& cv) const
{
@@ -821,7 +810,7 @@ public:
}
};
- /*! Get a Compare_endpoints_xy_2 functor object. */
+ /*! obtains a `Compare_endpoints_xy_2` functor object. */
Compare_endpoints_xy_2 compare_endpoints_xy_2_object() const
{
return Compare_endpoints_xy_2();
@@ -830,10 +819,9 @@ public:
class Construct_opposite_2
{
public:
- /*!
- * construct an opposite x-monotone curve.
+ /*! constructs an opposite \f$x\f$-monotone curve.
* \param cv the curve
- * \return an opposite x-monotone curve.
+ * \return an opposite \f$x\f$-monotone curve.
*/
X_monotone_curve_2 operator()(const X_monotone_curve_2& cv) const
{
@@ -841,7 +829,7 @@ public:
}
};
- /*! Get a Construct_opposite_2 functor object. */
+ /*! obtains a `Construct_opposite_2` functor object. */
Construct_opposite_2 construct_opposite_2_object() const
{
return Construct_opposite_2();
@@ -854,7 +842,7 @@ public:
/*! The traits (in case it has state) */
const Traits& m_traits;
- /*! Constructor
+ /*! constructs
* \param traits the traits (in case it has state)
*/
Trim_2(const Traits& traits) : m_traits(traits) {}
@@ -862,7 +850,7 @@ public:
friend class Arr_circle_segment_traits_2;
public:
- /*! Obtain a trimmed version of an arc
+ /*! obtains a trimmed version of an arc
* \param xcv The arc
* \param src the new first endpoint
* \param tgt the new second endpoint
@@ -893,14 +881,14 @@ public:
}
};
- /*! Obtain a Trim_2 functor object. */
+ /*! obtains a `Trim_2` functor object. */
Trim_2 trim_2_object() const { return Trim_2(*this); }
// @}
};
-} //namespace CGAL
+} // namespace CGAL
#include
diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_circular_arc_traits_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_circular_arc_traits_2.h
index 151bcf5644a..367e4708a36 100644
--- a/Arrangement_on_surface_2/include/CGAL/Arr_circular_arc_traits_2.h
+++ b/Arrangement_on_surface_2/include/CGAL/Arr_circular_arc_traits_2.h
@@ -206,4 +206,4 @@ public:
#include
-#endif // CGAL_CIRCULAR_KERNEL_CIRCULAR_ARC_TRAITS_H
+#endif
diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_circular_line_arc_traits_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_circular_line_arc_traits_2.h
index b1783f8c3ec..449e085fa87 100644
--- a/Arrangement_on_surface_2/include/CGAL/Arr_circular_line_arc_traits_2.h
+++ b/Arrangement_on_surface_2/include/CGAL/Arr_circular_line_arc_traits_2.h
@@ -380,8 +380,7 @@ namespace CGAL {
typedef typename CircularKernel::Circular_arc_point_2
Circular_arc_point_2;
- public :
-
+ public:
typedef Circular_arc_point_2 result_type;
//typedef const result_type& qualified_result_type;
@@ -395,14 +394,13 @@ namespace CGAL {
}
};
-
template
class Construct_max_vertex_2//: public Has_qrt
{
typedef typename CircularKernel::Circular_arc_point_2 Point_2;
+
public:
- /*!
- * Get the right endpoint of the x-monotone curve (segment).
+ /*! obtains the right endpoint of the x-monotone curve (segment).
* \param cv The curve.
* \return The right endpoint.
*/
@@ -418,10 +416,10 @@ namespace CGAL {
}
};
- template
+ template
class Variant_Is_vertical_2
{
- public :
+ public:
template < typename T >
bool
@@ -449,7 +447,7 @@ namespace CGAL {
// an empty class used to have different types between Curve_2 and X_monotone_curve_2
// in Arr_circular_line_arc_traits_2.
- namespace internal_Argt_traits{
+ namespace internal_Argt_traits {
struct Not_X_Monotone{};
inline std::ostream& operator << (std::ostream& os, const Not_X_Monotone&)
{return os;}
@@ -520,45 +518,42 @@ namespace CGAL {
typedef VariantFunctors::Intersect_2
Intersect_2;
+ Compare_x_2 compare_x_2_object() const
+ { return ck.compare_x_2_object(); }
- Compare_x_2 compare_x_2_object() const
- { return ck.compare_x_2_object(); }
+ Compare_xy_2 compare_xy_2_object() const
+ { return ck.compare_xy_2_object(); }
- Compare_xy_2 compare_xy_2_object() const
- { return ck.compare_xy_2_object(); }
+ Compare_y_at_x_2 compare_y_at_x_2_object() const
+ { return Compare_y_at_x_2(); }
- Compare_y_at_x_2 compare_y_at_x_2_object() const
- { return Compare_y_at_x_2(); }
+ Compare_y_at_x_right_2 compare_y_at_x_right_2_object() const
+ { return Compare_y_at_x_right_2(); }
- Compare_y_at_x_right_2 compare_y_at_x_right_2_object() const
- { return Compare_y_at_x_right_2(); }
+ Equal_2 equal_2_object() const
+ { return Equal_2(); }
- Equal_2 equal_2_object() const
- { return Equal_2(); }
+ Make_x_monotone_2 make_x_monotone_2_object() const
+ { return Make_x_monotone_2(); }
- Make_x_monotone_2 make_x_monotone_2_object() const
- { return Make_x_monotone_2(); }
+ Split_2 split_2_object() const
+ { return Split_2(); }
- Split_2 split_2_object() const
- { return Split_2(); }
-
- Intersect_2 intersect_2_object() const
+ Intersect_2 intersect_2_object() const
{ return Intersect_2(); }
- Construct_min_vertex_2 construct_min_vertex_2_object() const
+ Construct_min_vertex_2 construct_min_vertex_2_object() const
{ return Construct_min_vertex_2(); }
- Construct_max_vertex_2 construct_max_vertex_2_object() const
+ Construct_max_vertex_2 construct_max_vertex_2_object() const
{ return Construct_max_vertex_2(); }
- Is_vertical_2 is_vertical_2_object() const
+ Is_vertical_2 is_vertical_2_object() const
{ return Is_vertical_2();}
-
-
};
} // namespace CGAL
#include
-#endif // CGAL_CIRCULAR_KERNEL_VARIANT_TRAITS_H
+#endif
diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_conic_traits_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_conic_traits_2.h
index 6a5f37ec4cf..0f63b3c41fa 100644
--- a/Arrangement_on_surface_2/include/CGAL/Arr_conic_traits_2.h
+++ b/Arrangement_on_surface_2/include/CGAL/Arr_conic_traits_2.h
@@ -125,11 +125,11 @@ private:
// intersection points.
public:
- /*! Default constructor.
+ /*! constructs default.
*/
Arr_conic_traits_2() {}
- /*! Construct from resources.
+ /*! constructs from resources.
*/
Arr_conic_traits_2(Shared_rat_kernel rat_kernel,
Shared_alg_kernel alg_kernel,
@@ -139,19 +139,19 @@ public:
m_nt_traits(nt_traits)
{}
- /*! Obtain the rational kernel.
+ /*! obtains the rational kernel.
*/
Shared_rat_kernel rat_kernel() const { return m_rat_kernel; }
- /*! Obtain the algebraic kernel.
+ /*! obtains the algebraic kernel.
*/
Shared_alg_kernel alg_kernel() const { return m_alg_kernel; }
- /*! Obtain the nt traits.
+ /*! obtains the nt traits.
*/
Shared_nt_traits nt_traits() const { return m_nt_traits; }
- /*! Obtain the next conic index. */
+ /*! obtains the next conic index. */
static size_t get_index() {
#ifdef CGAL_NO_ATOMIC
static size_t index;
@@ -171,7 +171,7 @@ public:
/*! The traits (in case it has state) */
const Traits& m_traits;
- /*! Constructor
+ /*! constructs
* \param traits The traits.
*/
Compare_x_2(const Traits& traits) : m_traits(traits) {}
@@ -179,7 +179,7 @@ public:
friend class Arr_conic_traits_2;
public:
- /*! Compare the x-coordinates of two points.
+ /*! compares the \f$x\f$-coordinates of two points.
* \param p1 The first point.
* \param p2 The second point.
* \return LARGER if x(p1) > x(p2);
@@ -190,7 +190,7 @@ public:
{ return m_traits.m_alg_kernel->compare_x_2_object()(p1, p2); }
};
- /*! Obtain a Compare_x_2 functor object. */
+ /*! obtains a `Compare_x_2` functor object. */
Compare_x_2 compare_x_2_object() const { return Compare_x_2(*this); }
class Compare_xy_2 {
@@ -200,7 +200,7 @@ public:
/*! The traits (in case it has state) */
const Traits& m_traits;
- /*! Constructor
+ /*! constructs
* \param traits The traits.
*/
Compare_xy_2(const Traits& traits) : m_traits(traits) {}
@@ -208,7 +208,7 @@ public:
friend class Arr_conic_traits_2;
public:
- /*! Compares two points lexigoraphically: by x, then by y.
+ /*! compares two points lexigoraphically: by x, then by y.
* \param p1 The first point.
* \param p2 The second point.
* \return `LARGER` if `x(p1) > x(p2)`, or if `x(p1) = x(p2)` and `y(p1) > y(p2)`;
@@ -219,12 +219,12 @@ public:
{ return m_traits.m_alg_kernel->compare_xy_2_object()(p1, p2); }
};
- /*! Obtain a Compare_xy_2 functor object. */
+ /*! obtains a `Compare_xy_2` functor object. */
Compare_xy_2 compare_xy_2_object() const { return Compare_xy_2(*this); }
class Construct_min_vertex_2 {
public:
- /*! Obtain the left endpoint of an x-monotone arc.
+ /*! obtains the left endpoint of an \f$x\f$-monotone arc.
* \param cv The arc.
* \return The left endpoint.
*/
@@ -232,13 +232,13 @@ public:
{ return xcv.left(); }
};
- /*! Obtain a Construct_min_vertex_2 functor object. */
+ /*! obtains a `Construct_min_vertex_2` functor object. */
Construct_min_vertex_2 construct_min_vertex_2_object() const
{ return Construct_min_vertex_2(); }
class Construct_max_vertex_2 {
public:
- /*! Obtain the right endpoint of the x-monotone arc.
+ /*! obtains the right endpoint of the \f$x\f$-monotone arc.
* \param cv The arc.
* \return The right endpoint.
*/
@@ -246,13 +246,13 @@ public:
{ return xcv.right(); }
};
- /*! Obtain a Construct_max_vertex_2 functor object. */
+ /*! obtains a Construct_max_vertex_2 functor object. */
Construct_max_vertex_2 construct_max_vertex_2_object() const
{ return Construct_max_vertex_2(); }
class Is_vertical_2 {
public:
- /*! Check whether a given x-monotone arc is a vertical segment.
+ /*! checks whether a given \f$x\f$-monotone arc is a vertical segment.
* \param cv The vertical segment.
* \return `true` if the arc is a vertical segment; `false` otherwise.
*/
@@ -260,7 +260,7 @@ public:
{ return cv.is_vertical(); }
};
- /*! Obtain an Is_vertical_2 functor object. */
+ /*! obtains an `Is_vertical_2` functor object. */
Is_vertical_2 is_vertical_2_object() const { return Is_vertical_2(); }
class Compare_y_at_x_2 {
@@ -270,7 +270,7 @@ public:
/*! The traits (in case it has state) */
const Traits& m_traits;
- /*! Constructor
+ /*! constructs
* \param traits The traits.
*/
Compare_y_at_x_2(const Traits& traits) : m_traits(traits) {}
@@ -278,7 +278,7 @@ public:
friend class Arr_conic_traits_2;
public:
- /*! Return the location of a given point with respect to an input arc.
+ /*! returns the location of a given point with respect to an input arc.
* \param xcv The arc.
* \param p The point.
* \pre `p` is in the \f$x\f$-range of `xcv`.
@@ -292,8 +292,8 @@ public:
if (xcv.is_vertical()) {
// A special treatment for vertical segments:
- // In case p has the same x c-ordinate of the vertical segment, compare
- // it to the segment endpoints to determine its position.
+ // In case p has the same \f$x\f$-coordinate of the vertical segment,
+ // compare it to the segment endpoints to determine its position.
Comparison_result res1 = cmp_y(p, xcv.left());
Comparison_result res2 = cmp_y(p, xcv.right());
return (res1 == res2) ? res1 : EQUAL;
@@ -302,7 +302,8 @@ public:
// Check whether the point is exactly on the curve.
if (m_traits.contains_point(xcv, p)) return EQUAL;
- // Obtain a point q on the x-monotone arc with the same x coordinate as p.
+ // Obtain a point q on the \f$x\f$-monotone arc with the same
+ // \f$x\f$-coordinate as p.
Point_2 q;
auto cmp_x = m_traits.m_alg_kernel->compare_x_2_object();
@@ -318,12 +319,13 @@ public:
}
}
- // Compare p with the a point of the curve with the same x coordinate.
+ // Compare p with the a point of the curve with the same
+ // \f$x\f$-coordinate.
return cmp_y(p, q);
}
};
- /*! Obtain a Compare_y_at_x_2 functor object. */
+ /*! obtains a `Compare_y_at_x_2` functor object. */
Compare_y_at_x_2 compare_y_at_x_2_object() const
{ return Compare_y_at_x_2(*this); }
@@ -334,7 +336,7 @@ public:
/*! The traits (in case it has state) */
const Traits& m_traits;
- /*! Constructor
+ /*! constructs
* \param traits The traits.
*/
Compare_y_at_x_left_2(const Traits& traits) : m_traits(traits) {}
@@ -342,7 +344,7 @@ public:
friend class Arr_conic_traits_2;
public:
- /*! Compares the \f$y\f$ value of two \f$x\f$-monotone arcs immediately
+ /*! compares the \f$y\f$ value of two \f$x\f$-monotone arcs immediately
* to the left of their intersection point.
* \param xcv1 The first arc.
* \param xcv2 The second arc.
@@ -374,7 +376,7 @@ public:
}
private:
- /*! Compare two arcs immediately to the leftt of their intersection point.
+ /*! compares two arcs immediately to the leftt of their intersection point.
* \param xcv1 The first compared arc.
* \param xcv2 The second compared arc.
* \param p The reference intersection point.
@@ -470,14 +472,14 @@ public:
xcv2.test_flag(X_monotone_curve_2::FACING_UP))
return SMALLER;
- // Compute the second-order derivative by y and act according to it.
+ // Compute the second-order derivative by \f$y\f$ and act according to it.
xcv1.derive_by_y_at(p, 2, slope1_numer, slope1_denom);
xcv2.derive_by_y_at(p, 2, slope2_numer, slope2_denom);
Comparison_result slope_res =
CGAL::compare(slope2_numer*slope1_denom, slope1_numer*slope2_denom);
- // If necessary, use the third-order derivative by y.
+ // If necessary, use the third-order derivative by \f$y\f$.
if (slope_res == EQUAL) {
// \todo Check this!
xcv1.derive_by_y_at(p, 3, slope1_numer, slope1_denom);
@@ -501,7 +503,7 @@ public:
};
- /*! Obtain a Compare_y_at_x_left_2 functor object. */
+ /*! obtains a `Compare_y_at_x_left_2` functor object. */
Compare_y_at_x_left_2 compare_y_at_x_left_2_object() const
{ return Compare_y_at_x_left_2(*this); }
@@ -512,7 +514,7 @@ public:
/*! The traits (in case it has state) */
const Traits& m_traits;
- /*! Constructor
+ /*! constructs
* \param traits the traits.
*/
Compare_y_at_x_right_2(const Traits& traits) : m_traits(traits) {}
@@ -520,7 +522,7 @@ public:
friend class Arr_conic_traits_2;
public:
- /*! Compares the `y` value of two \f$x\f$-monotone arcs immediately
+ /*! compares the `y` value of two \f$x\f$-monotone arcs immediately
* to the right of their intersection point.
* \param xcv1 The first arc.
* \param xcv2 The second arc.
@@ -552,7 +554,7 @@ public:
}
private:
- /*! Compare two arcs immediately to the right of their intersection point.
+ /*! compares two arcs immediately to the right of their intersection point.
* \param xcv1 The first compared arc.
* \param xcv2 The second compared arc.
* \param p The reference intersection point.
@@ -643,14 +645,14 @@ public:
else if (xcv1.test_flag(X_monotone_curve_2::FACING_DOWN) &&
xcv2.test_flag(X_monotone_curve_2::FACING_UP)) return SMALLER;
- // Compute the second-order derivative by y and act according to it.
+ // Compute the second-order derivative by \f$y\f$ and act according to it.
xcv1.derive_by_y_at(p, 2, slope1_numer, slope1_denom);
xcv2.derive_by_y_at(p, 2, slope2_numer, slope2_denom);
Comparison_result slope_res =
CGAL::compare(slope1_numer*slope2_denom, slope2_numer*slope1_denom);
- // If necessary, use the third-order derivative by y.
+ // If necessary, use the third-order derivative by \f$y\f$.
if (slope_res == EQUAL) {
// \todo Check this!
xcv1.derive_by_y_at(p, 3, slope1_numer, slope1_denom);
@@ -671,7 +673,7 @@ public:
};
- /*! Obtain a Compare_y_at_x_right_2 functor object. */
+ /*! obtains a `Compare_y_at_x_right_2` functor object. */
Compare_y_at_x_right_2 compare_y_at_x_right_2_object() const
{ return Compare_y_at_x_right_2(*this); }
@@ -682,7 +684,7 @@ public:
/*! The traits (in case it has state) */
const Traits& m_traits;
- /*! Constructor
+ /*! constructs
* \param traits The traits.
*/
Equal_2(const Traits& traits) : m_traits(traits) {}
@@ -690,7 +692,7 @@ public:
friend class Arr_conic_traits_2;
public:
- /*! Check whether two \f$x\f$-monotone curves are the same (have the same
+ /*! checks whether two \f$x\f$-monotone curves are the same (have the same
* graph).
* \param xcv1 The first curve.
* \param xcv2 The second curve.
@@ -703,7 +705,7 @@ public:
return equals(xcv1, xcv2);
}
- /*! Check whether two points are the same.
+ /*! checks whether two points are the same.
* \param p1 The first point.
* \param p2 The second point.
* \return `true` if the two point are the same; `false` otherwise.
@@ -714,7 +716,7 @@ public:
}
private:
- /*! Check whether two arcs are equal (have the same graph).
+ /*! checks whether two arcs are equal (have the same graph).
* \param xcv1 The first compared arc.
* \param xcv2 The second compared arc.
* \return `true` if the two arcs have the same graph; `false` otherwise.
@@ -747,7 +749,7 @@ public:
}
};
- /*! Obtain an Equal_2 functor object. */
+ /*! obtains an `Equal_2` functor object. */
Equal_2 equal_2_object() const { return Equal_2(*this); }
//@}
@@ -755,11 +757,11 @@ public:
//@{
/*! A function object that obtains the parameter space of a geometric
- * entity along the \f$x-\f$xaxis.
+ * entity along the \f$x\f$x-axis.
*/
class Parameter_space_in_x_2 {
public:
- /*! Obtains the parameter space at the end of an arc along the \f$x\f$-axis.
+ /*! obtains the parameter space at the end of an arc along the \f$x\f$-axis.
* \param xcv The arc.
* \param ce The arc end indicator:
* `ARR_MIN_END`—the minimal end of `xcv` or
@@ -777,7 +779,7 @@ public:
return ARR_INTERIOR;
}
- /*! Obtains the parameter space at a point along the \f$x\f$-axis.
+ /*! obtains the parameter space at a point along the \f$x\f$-axis.
* \param p The point.
* \return the parameter space at `p`.
*/
@@ -785,16 +787,16 @@ public:
{ return ARR_INTERIOR; }
};
- /*! Obtain a Parameter_space_in_x_2 function object */
+ /*! obtains a `Parameter_space_in_x_2` function object */
Parameter_space_in_x_2 parameter_space_in_x_2_object() const
{ return Parameter_space_in_x_2(); }
/*! A function object that obtains the parameter space of a geometric
- * entity along the y-axis
+ * entity along the \f$y\f$-axis
*/
class Parameter_space_in_y_2 {
public:
- /*! Obtains the parameter space at the end of an arc along the \f$y\f$-axis .
+ /*! obtains the parameter space at the end of an arc along the \f$y\f$-axis .
* Note that if the arc end coincides with a pole, then unless the arc
* coincides with the identification curve, the arc end is considered to
* be approaching the boundary, but not on the boundary.
@@ -817,7 +819,7 @@ public:
return ARR_INTERIOR;
}
- /*! Obtains the parameter space at a point along the \f$y\f$-axis.
+ /*! obtains the parameter space at a point along the \f$y\f$-axis.
* \param p The point.
* \return The parameter space at `p`.
*/
@@ -825,7 +827,7 @@ public:
{ return ARR_INTERIOR; }
};
- /*! Obtain a Parameter_space_in_y_2 function object */
+ /*! obtains a `Parameter_space_in_y_2` function object */
Parameter_space_in_y_2 parameter_space_in_y_2_object() const
{ return Parameter_space_in_y_2(); }
@@ -835,7 +837,7 @@ public:
//@{
/*! \class Make_x_monotone_2
- * A functor for subdividing curves into x-monotone curves.
+ * A functor for subdividing curves into \f$x\f$-monotone curves.
*/
class Make_x_monotone_2 {
protected:
@@ -844,7 +846,7 @@ public:
/*! The traits (in case it has state) */
const Traits& m_traits;
- /*! Constructor
+ /*! constructs
* \param traits The traits.
*/
Make_x_monotone_2(const Traits& traits) : m_traits(traits) {}
@@ -852,7 +854,7 @@ public:
friend class Arr_conic_traits_2;
public:
- /*! Subdivide a given conic arc into \f$x\f$-monotone sub arcs
+ /*! subdivides a given conic arc into \f$x\f$-monotone sub arcs
* and insert them to a given output iterator.
* \param cv The arc.
* \param oi the output iterator for the result. Its dereference type is a
@@ -874,17 +876,17 @@ public:
Alg_point_2 vtan_ps[2];
auto n_vtan_ps = m_traits.vertical_tangency_points(cv, vtan_ps);
if (n_vtan_ps == 0) {
- // In case the given curve is already x-monotone:
+ // In case the given curve is already \f$x\f$-monotone:
*oi++ = ctr_xcv(cv, conic_id);
return oi;
}
- // Split the conic arc into x-monotone sub-curves.
+ // Split the conic arc into \f$x\f$-monotone sub-curves.
if (cv.is_full_conic()) {
// Make sure we have two vertical tangency points.
CGAL_assertion(n_vtan_ps == 2);
- // In case the curve is a full conic, split it into two x-monotone
+ // In case the curve is a full conic, split it into two \f$x\f$-monotone
// arcs, one going from ps[0] to ps[1], and the other from ps[1] to
// ps[0].
*oi++ = ctr_xcv(cv, vtan_ps[0], vtan_ps[1], conic_id);
@@ -892,8 +894,8 @@ public:
}
else {
if (n_vtan_ps == 1) {
- // Split the arc into two x-monotone sub-curves: one going from the
- // arc source to ps[0], and the other from ps[0] to the target.
+ // Split the arc into two \f$x\f$-monotone sub-curves: one going from
+ // the arc source to ps[0], and the other from ps[0] to the target.
*oi++ = ctr_xcv(cv, cv.source(), vtan_ps[0], conic_id);
*oi++ = ctr_xcv(cv, vtan_ps[0], cv.target(), conic_id);
}
@@ -924,7 +926,7 @@ public:
ind_second = 0;
}
- // Split the arc into three x-monotone sub-curves.
+ // Split the arc into three \f$x\f$-monotone sub-curves.
*oi++ = ctr_xcv(cv, cv.source(),
vtan_ps[ind_first],
conic_id);
@@ -942,7 +944,7 @@ public:
}
};
- /*! Obtain a Make_x_monotone_2 functor object. */
+ /*! obtains a `Make_x_monotone_2` functor object. */
Make_x_monotone_2 make_x_monotone_2_object() const
{ return Make_x_monotone_2(*this); }
@@ -953,7 +955,7 @@ public:
/*! The traits (in case it has state) */
const Traits& m_traits;
- /*! Constructor
+ /*! constructs
* \param traits The traits.
*/
Split_2(const Traits& traits) : m_traits(traits) {}
@@ -961,7 +963,7 @@ public:
friend class Arr_conic_traits_2;
public:
- /*! Split a given \f$x\f$-monotone arc at a given point into two sub-arcs.
+ /*! splits a given \f$x\f$-monotone arc at a given point into two sub-arcs.
* \param xcv The arc to split
* \param p The split point.
* \param xcv1 Output: The left resulting sub-arc (`p` is its right endpoint).
@@ -973,7 +975,7 @@ public:
{ split(xcv, p, xcv1, xcv2); }
private:
- /*! Split the arc into two at a given split point.
+ /*! splits the arc into two at a given split point.
* \param p The split point.
* \param xcv1 Output: The first resulting arc, lying to the left of `p`.
* \param xcv2 Output: The first resulting arc, lying to the right of `p`.
@@ -1017,7 +1019,7 @@ public:
};
- /*! Obtain a Split_2 functor object. */
+ /*! obtains a `Split_2` functor object. */
Split_2 split_2_object() const { return Split_2(*this); }
class Intersect_2 {
@@ -1027,7 +1029,7 @@ public:
/*! The traits (in case it has state) */
const Traits& m_traits;
- /*! Constructor.
+ /*! constructs.
* \param traits The traits.
*/
Intersect_2(const Traits& traits) : m_traits(traits) {}
@@ -1035,7 +1037,7 @@ public:
friend class Arr_conic_traits_2;
public:
- /*! Find the intersections of the two given curves and insert them to the
+ /*! finds the intersections of the two given curves and insert them to the
* given output iterator. As two segments may itersect only once, only a
* single will be contained in the iterator.
* \param cv1 The first arc.
@@ -1050,7 +1052,7 @@ public:
{ return intersect(xcv1, xcv2, m_traits.m_inter_map, oi); }
private:
- /*! Compute the overlap with a given arc, which is supposed to have the same
+ /*! computes the overlap with a given arc, which is supposed to have the same
* supporting conic curve as this arc.
* \param xcv1 The first arc.
* \param xcv2 The second arc.
@@ -1107,7 +1109,7 @@ public:
return false;
}
- /*! Intersect the supporting conic curves of this arc and the given arc.
+ /*! intersects the supporting conic curves of this arc and the given arc.
* \param arc The arc to intersect with.
* \param inter_list The list of intersection points.
*/
@@ -1152,7 +1154,7 @@ public:
else {
const auto* extra_data2 = xcv2.extra_data();
- // Compute the x-coordinates of the intersection points.
+ // Compute the \f$x\f$-coordinates of the intersection points.
n_xs = compute_resultant_roots(*nt_traits,
xcv1.alg_r(), xcv1.alg_s(),
xcv1.alg_t(), xcv1.alg_u(),
@@ -1164,7 +1166,7 @@ public:
xs);
CGAL_assertion(n_xs <= 2);
- // Compute the y-coordinates of the intersection points.
+ // Compute the \f$y\f$-coordinates of the intersection points.
n_ys = compute_resultant_roots(*nt_traits,
xcv1.alg_s(), xcv1.alg_r(),
xcv1.alg_t(), xcv1.alg_v(),
@@ -1178,7 +1180,7 @@ public:
}
}
else {
- // Compute the x-coordinates of the intersection points.
+ // Compute the \f$x\f$-coordinates of the intersection points.
n_xs = compute_resultant_roots(*nt_traits,
xcv1.r(), xcv1.s(), xcv1.t(),
xcv1.u(), xcv1.v(), xcv1.w(),
@@ -1189,7 +1191,7 @@ public:
xs);
CGAL_assertion(n_xs <= 4);
- // Compute the y-coordinates of the intersection points.
+ // Compute the \f$y\f$-coordinates of the intersection points.
n_ys = compute_resultant_roots(*nt_traits,
xcv1.s(), xcv1.r(), xcv1.t(),
xcv1.v(), xcv1.u(), xcv1.w(),
@@ -1202,8 +1204,8 @@ public:
}
// Pair the coordinates of the intersection points. As the vectors of
- // x and y-coordinates are sorted in ascending order, we output the
- // intersection points in lexicographically ascending order.
+ // \f$x\f$- and \f$y\f$-coordinates are sorted in ascending order, we
+ // output the intersection points in lexicographically ascending order.
Multiplicity mult;
int i, j;
@@ -1249,9 +1251,9 @@ public:
else {
CGAL_assertion((n_xs == 2) && (n_ys == 2));
- // The x-coordinates and the y-coordinates are given in ascending
- // order. If the slope of the segment is positive, we pair the
- // coordinates as is - otherwise, we swap the pairs.
+ // The \f$x\f$-coordinates and the \f$y\f$-coordinates are given in
+ // ascending order. If the slope of the segment is positive, we pair
+ // the coordinates as is; otherwise, we swap the pairs.
int ind_first_y(0), ind_second_y(1);
const auto* extra_data2 = xcv2.extra_data();
@@ -1298,7 +1300,7 @@ public:
}
}
- /*! Compute the intersections with the given arc.
+ /*! computes the intersections with the given arc.
* \param arc The given intersecting arc.
* \param inter_map Maps conic pairs to lists of their intersection points.
* \param oi The output iterator.
@@ -1315,7 +1317,8 @@ public:
X_monotone_curve_2 overlap;
if (compute_overlap(xcv1, xcv2, overlap)) {
- // There can be just a single overlap between two x-monotone arcs:
+ // There can be just a single overlap between two \f$x\f$-monotone
+ // arcs:
*oi++ = overlap;
return oi;
}
@@ -1382,7 +1385,7 @@ public:
}
// Go over the list of intersection points and report those that lie on
- // both x-monotone arcs.
+ // both \f$x\f$-monotone arcs.
for (auto iter = inter_list.begin(); iter != inter_list.end(); ++iter) {
if (m_traits.is_between_endpoints(xcv1, (*iter).first) &&
m_traits.is_between_endpoints(xcv2, (*iter).first))
@@ -1395,7 +1398,7 @@ public:
}
};
- /*! Obtain an Intersect_2 functor object. */
+ /*! obtains an `Intersect_2` functor object. */
Intersect_2 intersect_2_object() const { return Intersect_2(*this); }
class Are_mergeable_2 {
@@ -1405,7 +1408,7 @@ public:
/*! The traits (in case it has state) */
const Traits& m_traits;
- /*! Constructor
+ /*! constructs
* \param traits The traits (in case it has state)
*/
Are_mergeable_2(const Traits& traits) : m_traits(traits) {}
@@ -1413,7 +1416,7 @@ public:
friend class Arr_conic_traits_2;
public:
- /*! Check whether it is possible to merge two given x-monotone curves.
+ /*! checks whether it is possible to merge two given \f$x\f$-monotone curves.
* \param xcv1 The first arc.
* \param xcv2 The second arc.
* \return `true` if the two curves are mergeable; that is, they are
@@ -1425,7 +1428,7 @@ public:
{ return can_merge_with(xcv1, xcv2); }
private:
- /*! Check whether it is possible to merge the arc with the given arc.
+ /*! checks whether it is possible to merge the arc with the given arc.
* \param xcv1 The first arc.
* \param xcv2 The second arc.
* \return `true` if it is possible to merge the two arcs;
@@ -1444,12 +1447,12 @@ public:
}
};
- /*! Obtain an Are_mergeable_2 functor object. */
+ /*! obtains an `Are_mergeable_2` functor object. */
Are_mergeable_2 are_mergeable_2_object() const
{ return Are_mergeable_2(*this); }
/*! \class Merge_2
- * A functor that merges two x-monotone arcs into one.
+ * A functor that merges two \f$x\f$-monotone arcs into one.
*/
class Merge_2 {
protected:
@@ -1458,7 +1461,7 @@ public:
/*! The traits (in case it has state) */
const Traits& m_traits;
- /*! Constructor
+ /*! constructs
* \param traits The traits (in case it has state)
*/
Merge_2(const Traits& traits) : m_traits(traits) {}
@@ -1466,7 +1469,7 @@ public:
friend class Arr_conic_traits_2;
public:
- /*! Merge two given x-monotone curves into a single curve (segment).
+ /*! merges two given \f$x\f$-monotone curves into a single curve (segment).
* \param xcv1 The first arc.
* \param xcv2 The second arc.
* \param xcv The merged arc.
@@ -1482,7 +1485,7 @@ public:
}
private:
- /*! Merge the current arc with the given arc.
+ /*! merges the current arc with the given arc.
* \param xcv1 The first arc to merge with.
* \param xcv2 The second arc to merge with.
* \pre The two arcs are mergeable.
@@ -1507,12 +1510,12 @@ public:
}
};
- /*! Obtain a Merge_2 functor object. */
+ /*! obtains a `Merge_2` functor object. */
Merge_2 merge_2_object() const { return Merge_2(*this); }
//@}
- /*! \name Auxiliary Functor definitions, used gor, e.g., the landmarks
+ /*! \name Auxiliary Functor definitions, used gor, e.g., the landmarks \
* point-location strategy and the drawing function.
*/
//@{
@@ -1527,7 +1530,7 @@ public:
/*! The traits (in case it has state) */
const Traits& m_traits;
- /*! Constructor
+ /*! constructs
* \param traits the traits.
*/
Approximate_curve_length_2(const Traits& traits) : m_traits(traits) {}
@@ -1535,7 +1538,7 @@ public:
friend class Arr_conic_traits_2;
public:
- /*! Obtain an approximation of the length of a curve.
+ /*! obtains an approximation of the length of a curve.
* \param xcv The curve.
* \return An approximation of the length of `xcv`.
*/
@@ -1548,7 +1551,7 @@ public:
}
private:
- /*! Obtain the segment length.
+ /*! obtains the segment length.
*/
double segment_length(const X_monotone_curve_2& xcv) {
auto min_vertex = m_traits.construct_min_vertex_2_object();
@@ -1588,7 +1591,7 @@ public:
return tmp/2.0 + b_sqr*std::log((4.0*a + tmp)/b)/(8.0*a);
}
- /*! Obtain the parabolic arc length.
+ /*! obtains the parabolic arc length.
*/
double parabola_length(const X_monotone_curve_2& xcv) {
double r_m, t_m, s_m, u_m, v_m, w_m;
@@ -1645,7 +1648,7 @@ public:
/*! The traits (in case it has state) */
const Traits& m_traits;
- /*! Constructor
+ /*! constructs
* \param traits the traits.
*/
Approximate_2(const Traits& traits) : m_traits(traits) {}
@@ -1653,12 +1656,12 @@ public:
friend class Arr_conic_traits_2;
public:
- /*! Obtain an approximation of a point coordinate.
+ /*! obtains an approximation of a point coordinate.
* \param p The exact point.
* \param i The coordinate index (either 0 or 1).
- * \pre i is either 0 or 1.
- * \return An approximation of p's x-coordinate (if i == 0), or an
- * approximation of p's y-coordinate (if i == 1).
+ * \pre `i` is either 0 or 1.
+ * \return An approximation of `p`'s \f$x\f$-coordinate (if `i` == 0), or an
+ * approximation of `p`'s \f$y\f$-coordinate (if `i` == 1).
*/
Approximate_number_type operator()(const Point_2& p, int i) const {
CGAL_precondition((i == 0) || (i == 1));
@@ -1667,12 +1670,12 @@ public:
else return CGAL::to_double(p.y());
}
- /*! Obtain an approximation of a point.
+ /*! obtains an approximation of a point.
*/
Approximate_point_2 operator()(const Point_2& p) const
{ return Approximate_point_2(operator()(p, 0), operator()(p, 1)); }
- /*! Obtain an approximation of an \f$x\f$-monotone curve.
+ /*! obtains an approximation of an \f$x\f$-monotone curve.
*/
template