diff --git a/.travis/build_package.sh b/.travis/build_package.sh index f1faf434ddd..c47cd822c21 100755 --- a/.travis/build_package.sh +++ b/.travis/build_package.sh @@ -2,12 +2,12 @@ set -e [ -n "$CGAL_DEBUG_TRAVIS" ] && set -x -CXX_FLAGS="-DCGAL_NDEBUG" +CXX_FLAGS="-DCGAL_NDEBUG -ftemplate-backtrace-limit=0" function build_examples { mkdir -p build-travis cd build-travis - cmake -DCGAL_DIR="/usr/local/lib/cmake/CGAL" -DCMAKE_CXX_FLAGS_RELEASE="${CXX_FLAGS}" .. + cmake -DCGAL_DIR="/usr/local/lib/cmake/CGAL" -DCMAKE_CXX_FLAGS="${CXX_FLAGS}" .. make -j2 } @@ -45,7 +45,7 @@ function build_demo { QGLVIEWERROOT=$PWD/qglviewer export QGLVIEWERROOT fi - cmake -DCGAL_DIR="/usr/local/lib/cmake/CGAL" -DQt5_DIR="/opt/qt55/lib/cmake/Qt5" -DQt5Svg_DIR="/opt/qt55/lib/cmake/Qt5Svg" -DQt5OpenGL_DIR="/opt/qt55/lib/cmake/Qt5OpenGL" -DCGAL_DONT_OVERRIDE_CMAKE_FLAGS:BOOL=ON -DCMAKE_CXX_FLAGS_RELEASE="${CXX_FLAGS} ${EXTRA_CXX_FLAGS}" .. + cmake -DCGAL_DIR="/usr/local/lib/cmake/CGAL" -DQt5_DIR="/opt/qt55/lib/cmake/Qt5" -DQt5Svg_DIR="/opt/qt55/lib/cmake/Qt5Svg" -DQt5OpenGL_DIR="/opt/qt55/lib/cmake/Qt5OpenGL" -DCGAL_DONT_OVERRIDE_CMAKE_FLAGS:BOOL=ON -DCMAKE_CXX_FLAGS="${CXX_FLAGS} ${EXTRA_CXX_FLAGS}" .. make -j2 } old_IFS=$IFS diff --git a/AABB_tree/benchmark/AABB_tree/CMakeLists.txt b/AABB_tree/benchmark/AABB_tree/CMakeLists.txt new file mode 100644 index 00000000000..077df0007ca --- /dev/null +++ b/AABB_tree/benchmark/AABB_tree/CMakeLists.txt @@ -0,0 +1,41 @@ +# Created by the script cgal_create_CMakeLists +# This is the CMake script for compiling a set of CGAL applications. + +project( AABB_traits_benchmark) + + +cmake_minimum_required(VERSION 3.1) + cmake_policy(VERSION 3.1) + + +if ( COMMAND cmake_policy ) + + cmake_policy( SET CMP0003 NEW ) + +endif() + +# CGAL and its components +find_package( CGAL QUIET) +if ( CGAL_FOUND ) + include( ${CGAL_USE_FILE} ) +else () + message(STATUS "This project requires the CGAL library, and will not be compiled.") + return() + +endif() + + +# Boost and its components +find_package( Boost REQUIRED ) +# include for local directory +if ( NOT Boost_FOUND ) + message(STATUS "This project requires the Boost library, and will not be compiled.") + return() +endif() + +# include for local package +include_directories( BEFORE ../../include ) + +add_executable (test_ test.cpp) + + diff --git a/AABB_tree/benchmark/AABB_tree/data/handle.off b/AABB_tree/benchmark/AABB_tree/data/handle.off new file mode 100644 index 00000000000..1b4c7ffbfe2 --- /dev/null +++ b/AABB_tree/benchmark/AABB_tree/data/handle.off @@ -0,0 +1,3495 @@ +OFF +1165 2326 0 + +-0.5 -0.153364 0 +-0.5 -0.145472 -0.123072 +-0.5 -0.145472 0.123072 +-0.5 -0.131604 -0.204475 +-0.5 -0.122132 -0.245084 +-0.5 -0.122132 0.245084 +-0.5 -0.06 0 +-0.5 -0.0588999 -0.01144 +-0.5 -0.0588999 0.01144 +-0.5 -0.0557159 -0.022268 +-0.5 -0.0557159 0.022268 +-0.5 -0.052588 -0.0288879 +-0.5 -0.050768 0.0319758 +-0.5 -0.0474238 -0.0367521 +-0.5 -0.0422279 0.0426238 +-0.5 -0.0398639 -0.0448439 +-0.5 -0.03388 0.0495199 +-0.5 -0.0333279 -0.0498919 +-0.5 -0.026544 0.053808 +-0.5 -0.0259439 -0.0540999 +-0.5 -0.018904 0.056944 +-0.5 -0.015804 -0.0578799 +-0.5 -0.00754798 0.059524 +-0.5 -0.002308 -0.0599558 +-0.5 0.00308399 0.0599199 +-0.5 0.008572 -0.0593841 +-0.5 0.01408 0.0583239 +-0.5 0.0195399 -0.0567281 +-0.5 0.024872 0.0546 +-0.5 0.03 -0.0519599 +-0.5 0.034848 0.0488401 +-0.5 0.039356 -0.0452879 +-0.5 0.0434681 0.0413558 +-0.5 0.0471437 -0.037116 +-0.5 0.050352 0.0326319 +-0.5 0.0513119 -0.031096 +-0.5 0.055324 0.023224 +-0.5 0.055544 -0.0226959 +-0.5 0.0587678 -0.0121 +-0.5 0.0587678 0.0121 +-0.5 0.06 0 +-0.5 0.122132 -0.245084 +-0.5 0.122132 0.245084 +-0.5 0.131604 0.204475 +-0.5 0.145472 -0.123072 +-0.5 0.145472 0.123072 +-0.5 0.153364 0 +-0.499816 -0.126076 0.245176 +-0.499816 0.126076 -0.245176 +-0.499583 -0.12108 -0.250841 +-0.499583 0.12108 0.250841 +-0.499477 0.124444 -0.25072 +-0.499458 0.122748 -0.251432 +-0.499458 0.12602 -0.249804 +-0.499417 0.127408 -0.248739 +-0.499399 -0.137264 -0.210963 +-0.499399 0.137264 0.210963 +-0.499396 -0.152344 -0.123952 +-0.499396 -0.152344 0.123952 +-0.499396 0.152344 -0.123952 +-0.499396 0.152344 0.123952 +-0.499392 -0.160308 0 +-0.499392 0.160308 0 +-0.49934 0.128816 -0.247291 +-0.499246 -0.12088 0.252811 +-0.499246 0.12088 -0.252811 +-0.499227 -0.130112 -0.245444 +-0.499227 0.130112 0.245444 +-0.498925 -0.131512 0.245571 +-0.498925 0.131512 -0.245571 +-0.498835 -0.129156 0.25086 +-0.498801 -0.120744 -0.2548 +-0.498801 0.120744 0.2548 +-0.498433 -0.129056 -0.253028 +-0.498433 0.12906 0.253028 +-0.498128 0.126868 -0.255655 +-0.4981 -0.12884 0.254631 +-0.4981 0.123844 -0.25688 +-0.498056 0.129668 -0.254044 +-0.49791 0.13212 -0.252139 +-0.497657 0.134556 -0.24954 +-0.497467 -0.144212 -0.212476 +-0.497467 0.144212 0.212476 +-0.497442 -0.159432 -0.12486 +-0.497442 -0.159432 0.12486 +-0.497442 0.159432 -0.12486 +-0.497442 0.159432 0.12486 +-0.49743 -0.167467 0 +-0.49743 0.167467 0 +-0.497171 -0.120668 0.25986 +-0.497171 0.120668 -0.25986 +-0.497087 -0.137288 -0.246275 +-0.497087 0.137288 0.246275 +-0.496623 -0.13838 0.246439 +-0.496623 0.13838 -0.246439 +-0.496592 0.135432 0.253396 +-0.496526 -0.120712 -0.261387 +-0.496526 0.120712 0.261387 +-0.496427 -0.135844 -0.253427 +-0.496402 0.128968 -0.259603 +-0.496383 0.124964 -0.261172 +-0.496321 -0.12888 -0.25996 +-0.496314 0.128888 0.259955 +-0.496252 0.132664 -0.257492 +-0.496249 -0.137512 0.25136 +-0.495969 0.135876 -0.25496 +-0.495928 -0.128764 0.260992 +-0.495545 -0.137216 0.254795 +-0.495517 0.139024 -0.251484 +-0.49447 0.135236 0.259987 +-0.494311 -0.135636 -0.259992 +-0.494177 -0.120972 0.265864 +-0.494177 0.120972 -0.265864 +-0.494074 -0.150996 -0.213951 +-0.494074 0.150996 0.213951 +-0.494015 -0.166348 -0.125748 +-0.494015 -0.166348 0.125748 +-0.494015 0.166348 -0.125748 +-0.494015 0.166348 0.125748 +-0.493984 -0.17446 0 +-0.493984 0.17446 0 +-0.493984 -0.143332 -0.247299 +-0.493984 0.143332 0.247299 +-0.493741 -0.143712 0.247376 +-0.493741 0.143712 -0.247376 +-0.493489 -0.13708 0.260624 +-0.493327 -0.142968 0.251887 +-0.49332 0.142076 0.2539 +-0.493274 -0.129116 -0.265888 +-0.493274 0.129124 0.265884 +-0.492704 -0.14304 -0.253991 +-0.492648 -0.142688 0.255028 +-0.492202 0.127068 -0.268071 +-0.492109 0.132524 -0.266076 +-0.491744 0.13752 -0.263231 +-0.491467 0.135364 0.265615 +-0.491314 -0.135752 -0.265599 +-0.491308 -0.121372 -0.269979 +-0.491308 0.121372 0.269979 +-0.491242 0.141816 0.259925 +-0.491183 0.141804 -0.259736 +-0.490806 -0.12924 0.269464 +-0.490691 -0.1425 0.260347 +-0.490644 -0.142756 -0.259917 +-0.490358 0.14588 -0.254872 +-0.489488 -0.121628 0.272111 +-0.489488 0.121628 -0.272111 +-0.489255 -0.15718 -0.2153 +-0.489255 0.15718 0.2153 +-0.489143 -0.172648 -0.126556 +-0.489143 -0.172648 0.126556 +-0.489143 0.172648 -0.126556 +-0.489143 0.172648 0.126556 +-0.489087 -0.180824 0 +-0.489087 0.180824 0 +-0.488915 -0.149724 0.248715 +-0.488915 0.149724 -0.248715 +-0.488915 -0.149724 -0.248715 +-0.488915 0.149724 0.248715 +-0.488629 -0.137304 0.268477 +-0.488526 0.14836 0.254412 +-0.488501 -0.129572 -0.272052 +-0.488495 0.129588 0.272048 +-0.488435 -0.149128 0.252623 +-0.488382 0.141792 0.265048 +-0.487819 -0.142696 -0.264951 +-0.487772 -0.148868 0.255319 +-0.487557 0.12876 -0.273191 +-0.487526 -0.121888 -0.274107 +-0.487526 0.121888 0.274107 +-0.487248 0.1352 -0.270971 +-0.487083 -0.14982 -0.254547 +-0.487018 -0.129576 0.2736 +-0.486775 0.135616 0.271463 +-0.486635 0.141052 -0.267636 +-0.486635 -0.135976 -0.271423 +-0.486566 0.148028 0.259632 +-0.486114 -0.142532 0.267536 +-0.485971 -0.148616 0.259863 +-0.485815 0.14602 -0.263451 +-0.485432 -0.122144 0.275956 +-0.485432 0.122144 -0.275956 +-0.485174 -0.149456 -0.259544 +-0.484996 -0.137436 0.272355 +-0.484691 0.150648 -0.257584 +-0.484367 -0.129884 -0.275836 +-0.484364 0.1299 0.275832 +-0.484289 -0.16158 -0.216256 +-0.484289 0.16158 0.216256 +-0.484195 -0.15378 0.249844 +-0.484195 0.15378 -0.249844 +-0.484124 -0.17712 -0.127128 +-0.484124 -0.17712 0.127128 +-0.484124 0.17712 -0.127128 +-0.484124 0.17712 0.127128 +-0.484043 -0.185331 0 +-0.484043 0.185331 0 +-0.483971 0.147848 0.264048 +-0.483959 0.141784 0.27036 +-0.483672 -0.153276 0.253192 +-0.483454 -0.14264 -0.270172 +-0.483236 0.153092 0.254764 +-0.483114 0.129912 -0.27676 +-0.483036 -0.153028 0.255483 +-0.482731 0.135744 0.275051 +-0.482703 -0.142516 0.271103 +-0.482672 -0.154832 -0.25018 +-0.482672 0.154832 0.25018 +-0.482669 -0.14922 -0.263763 +-0.482606 -0.136088 -0.274997 +-0.482572 0.136964 -0.274419 +-0.481874 -0.148416 0.265991 +-0.481871 -0.122496 -0.278576 +-0.481871 0.122496 0.278576 +-0.481728 0.14334 -0.270767 +-0.481569 -0.15426 -0.254864 +-0.48146 0.152696 0.259124 +-0.481391 -0.152724 0.259323 +-0.481267 -0.129888 0.278123 +-0.4807 0.148716 -0.266128 +-0.480176 0.141696 0.273624 +-0.480021 0.1476 0.268624 +-0.479865 -0.15384 -0.258968 +-0.479728 -0.142512 -0.273379 +-0.479457 -0.137428 0.276636 +-0.479366 0.153656 -0.259592 +-0.479195 0.152396 0.262796 +-0.478874 -0.1489 -0.26814 +-0.478855 -0.14824 0.269047 +-0.478089 -0.165388 -0.217084 +-0.478089 0.165388 0.217084 +-0.477865 -0.180972 -0.12762 +-0.477865 -0.180972 0.12762 +-0.477865 0.180972 -0.12762 +-0.477865 0.180972 0.12762 +-0.477849 -0.157516 0.251172 +-0.477849 0.157516 -0.251172 +-0.477787 -0.152364 0.264483 +-0.477746 -0.189212 0 +-0.477746 0.189212 0 +-0.477715 -0.153504 -0.262424 +-0.477497 -0.142296 0.275072 +-0.47731 -0.157096 0.253792 +-0.477307 0.13084 -0.280132 +-0.476737 -0.156856 0.255568 +-0.476693 0.157032 0.255007 +-0.476668 0.147328 0.271444 +-0.476441 0.138376 -0.277695 +-0.475818 0.151988 0.266604 +-0.475668 -0.14858 -0.270836 +-0.475534 -0.1585 -0.251612 +-0.475534 0.1585 0.251612 +-0.475466 -0.157588 -0.255047 +-0.47535 -0.156504 0.25852 +-0.475329 0.145168 -0.273784 +-0.47522 0.156592 0.258339 +-0.475167 -0.152092 0.267063 +-0.47512 -0.122816 0.282116 +-0.47512 0.122816 -0.282116 +-0.474531 -0.153048 -0.266007 +-0.474269 -0.147812 0.272484 +-0.474089 0.150864 -0.268756 +-0.474067 -0.12282 -0.282528 +-0.474067 0.12282 0.282528 +-0.474058 -0.15714 -0.2582 +-0.473896 -0.130032 -0.281823 +-0.473892 0.130056 0.28182 +-0.473428 0.156216 0.261132 +-0.473272 -0.167396 -0.21752 +-0.473272 0.167396 0.21752 +-0.47322 -0.129772 0.282127 +-0.473008 -0.182992 -0.12788 +-0.473008 -0.182992 0.12788 +-0.473008 0.182992 -0.12788 +-0.473008 0.182992 0.12788 +-0.47298 0.151612 0.268963 +-0.472871 -0.191236 0 +-0.472871 0.191236 0 +-0.472581 0.156048 -0.261637 +-0.472534 0.135456 0.280732 +-0.472531 -0.159528 0.252152 +-0.472531 0.159528 -0.252152 +-0.47245 -0.156012 0.262456 +-0.472444 -0.13576 -0.280655 +-0.47236 -0.156748 -0.260839 +-0.472036 -0.159164 0.254171 +-0.471861 -0.15264 -0.268235 +-0.471643 -0.136876 0.280491 +-0.471628 0.159036 0.255088 +-0.471543 -0.15894 0.255531 +-0.471219 -0.151568 0.269979 +-0.471207 -0.159164 -0.2551 +-0.470799 0.155716 0.26404 +-0.470774 0.13116 -0.282592 +-0.470684 0.140948 0.278827 +-0.470444 0.1586 0.257635 +-0.470419 -0.15858 0.257775 +-0.470391 -0.15568 0.264424 +-0.470381 -0.14168 -0.278507 +-0.470151 -0.141488 0.278708 +-0.470048 -0.158728 -0.257592 +-0.46988 -0.15624 -0.263591 +-0.469543 0.13898 -0.280108 +-0.469039 0.158212 0.259775 +-0.468677 -0.15834 -0.25968 +-0.468612 0.1553 0.265856 +-0.468503 -0.160488 -0.252832 +-0.468503 0.160488 0.252832 +-0.468334 0.14624 0.276013 +-0.468257 -0.122512 0.284224 +-0.468257 0.122512 -0.284224 +-0.468154 0.146004 -0.276075 +-0.468151 -0.158056 0.260755 +-0.467833 -0.146808 0.275712 +-0.467817 -0.15582 -0.265311 +-0.467696 -0.147404 -0.275239 +-0.467316 -0.155128 0.266671 +-0.467029 -0.129456 -0.283796 +-0.467023 0.12948 0.283791 +-0.467014 0.15772 0.262008 +-0.466711 0.151872 -0.270856 +-0.466708 -0.157848 -0.261863 +-0.466562 -0.157724 0.262244 +-0.465967 0.1504 0.272863 +-0.465904 0.13466 0.282624 +-0.465836 -0.13494 -0.282544 +-0.465721 -0.15054 0.272791 +-0.465403 -0.122132 -0.284716 +-0.465403 0.122132 -0.284716 +-0.465403 0.122132 0.284716 +-0.465403 -0.122132 0.284716 +-0.465344 0.157332 0.263411 +-0.465294 -0.169264 -0.217928 +-0.465294 0.169264 0.217928 +-0.465278 -0.1514 -0.271944 +-0.465079 -0.157456 -0.263239 +-0.465029 0.157204 -0.263411 +-0.464973 -0.184839 -0.128116 +-0.464973 -0.184839 0.128116 +-0.464973 0.184839 -0.128116 +-0.464973 0.184839 0.128116 +-0.464892 -0.160976 0.253408 +-0.464892 0.160976 -0.253408 +-0.464808 -0.193076 0 +-0.464808 0.193076 0 +-0.464555 0.139932 0.280627 +-0.464531 -0.16072 0.254555 +-0.464359 -0.140624 -0.2803 +-0.46434 -0.160608 -0.255063 +-0.46434 0.160608 0.25506 +-0.464222 -0.15722 0.263951 +-0.464213 -0.160552 0.255327 +-0.464157 0.129284 0.28422 +-0.463917 -0.130532 0.283995 +-0.463898 -0.130612 -0.283979 +-0.463898 0.130612 -0.283979 +-0.46363 -0.160272 -0.256507 +-0.46363 0.160276 0.2565 +-0.463515 -0.160264 0.256584 +-0.463253 0.154152 0.268931 +-0.463076 -0.154204 0.268891 +-0.462982 0.145116 0.277704 +-0.462823 -0.159972 -0.257716 +-0.462823 0.159976 0.257705 +-0.462776 -0.154684 -0.268251 +-0.462739 0.136324 0.28238 +-0.462586 -0.146256 -0.2769 +-0.462468 -0.137572 0.281899 +-0.462396 0.137892 -0.281772 +-0.462262 -0.138484 -0.28152 +-0.4622 -0.159848 0.25824 +-0.46168 -0.159608 -0.258987 +-0.46168 0.159612 0.258976 +-0.46159 -0.161129 -0.253912 +-0.46159 0.161129 0.253912 +-0.461477 0.14932 0.274403 +-0.461303 -0.1596 0.259068 +-0.461256 0.156348 0.265835 +-0.461213 -0.142952 0.279216 +-0.461188 0.143052 0.279155 +-0.4611 -0.15648 -0.26562 +-0.461066 -0.150332 -0.273449 +-0.461019 -0.15646 0.26566 +-0.46097 0.143916 -0.27862 +-0.460748 -0.159332 -0.259799 +-0.460745 0.15934 0.259783 +-0.460555 -0.145528 -0.277524 +-0.460004 -0.15926 0.260019 +-0.459814 0.153244 0.27024 +-0.459592 -0.14902 0.274696 +-0.45954 -0.153808 -0.269516 +-0.459511 0.1493 0.27444 +-0.45929 0.150032 -0.273736 +-0.458876 -0.151396 -0.272328 +-0.45862 0.155628 0.266912 +-0.458536 -0.155772 -0.266684 +-0.458468 -0.158708 -0.261236 +-0.458462 0.15872 0.261212 +-0.458312 -0.15314 0.270296 +-0.458247 -0.158808 0.260987 +-0.458069 0.153848 0.269388 +-0.45772 0.154824 -0.26802 +-0.456988 -0.1583 -0.261903 +-0.456985 0.158312 0.261879 +-0.456969 -0.156776 -0.264851 +-0.45653 0.157784 0.262887 +-0.456514 -0.15782 0.262811 +-0.456271 0.158344 -0.261659 +-0.454972 -0.160592 -0.254859 +-0.454972 0.160592 -0.254859 +-0.454972 0.160592 0.254859 +-0.454972 -0.160592 0.254859 +-0.454726 -0.170388 -0.212715 +-0.454726 0.170388 0.212715 +-0.454383 -0.184756 -0.128108 +-0.454383 -0.184756 0.128108 +-0.454383 0.184756 -0.128108 +-0.454383 0.184756 0.128108 +-0.454197 -0.192939 0 +-0.454197 0.192939 0 +-0.407823 0.12186 -0.291647 +-0.407823 0.12186 0.291647 +-0.406527 0.128916 0.28954 +-0.406246 0.130292 -0.288948 +-0.405387 0.134304 0.286847 +-0.405091 0.135588 -0.286043 +-0.403901 0.140388 0.282324 +-0.403598 0.141488 -0.281284 +-0.402707 0.144516 0.277927 +-0.402414 0.145432 -0.276744 +-0.401013 0.149216 -0.270452 +-0.401013 0.149216 0.270452 +-0.397539 0.111812 0.293972 +-0.397539 0.111812 -0.293972 +-0.388108 -0.1504 0.26408 +-0.388108 0.1504 -0.26408 +-0.383578 -0.159856 -0.221235 +-0.383578 -0.159856 0.221235 +-0.383578 0.159856 -0.221235 +-0.383578 0.159856 0.221235 +-0.378893 -0.172355 -0.147492 +-0.378893 -0.172355 0.147492 +-0.378893 0.172355 -0.147492 +-0.378893 0.172355 0.147492 +-0.37608 -0.179856 -0.0737438 +-0.37608 -0.179856 0.0737438 +-0.37608 0.179856 -0.0737438 +-0.37608 0.179856 0.0737438 +-0.375145 -0.182356 0 +-0.375145 0.182356 0 +-0.26712 -0.147256 -0.232476 +-0.26712 -0.147256 0.232476 +-0.26712 0.147256 -0.232476 +-0.26712 0.147256 0.232476 +-0.261492 -0.0965677 0.312524 +-0.261492 -0.0965677 -0.312524 +-0.261492 0.0965677 -0.312524 +-0.261492 0.0965677 0.312524 +-0.260656 -0.105052 0.311711 +-0.260656 -0.105052 -0.311711 +-0.260656 0.105052 -0.311711 +-0.260656 0.105052 0.311711 +-0.26 -0.06 0 +-0.26 -0.0588999 0.01144 +-0.26 -0.0588999 -0.01144 +-0.26 -0.0557159 0.022268 +-0.26 -0.0557159 -0.022268 +-0.26 -0.052588 0.0288879 +-0.26 -0.050768 -0.0319758 +-0.26 -0.0474238 0.0367521 +-0.26 -0.0422279 -0.0426238 +-0.26 -0.0398639 0.0448439 +-0.26 -0.03388 -0.0495199 +-0.26 -0.0333279 0.0498919 +-0.26 -0.026544 -0.053808 +-0.26 -0.0259439 0.0540999 +-0.26 -0.018904 -0.056944 +-0.26 -0.015804 0.0578799 +-0.26 -0.00754798 -0.059524 +-0.26 -0.002308 0.0599558 +-0.26 0.00308399 -0.0599199 +-0.26 0.008572 0.0593841 +-0.26 0.01408 -0.0583239 +-0.26 0.0195399 0.0567281 +-0.26 0.024872 -0.0546 +-0.26 0.03 0.0519599 +-0.26 0.034848 -0.0488401 +-0.26 0.039356 0.0452879 +-0.26 0.0434681 -0.0413558 +-0.26 0.0471437 0.037116 +-0.26 0.050352 -0.0326319 +-0.26 0.0513119 0.031096 +-0.26 0.055324 -0.023224 +-0.26 0.055544 0.0226959 +-0.26 0.0587678 0.0121 +-0.26 0.0587678 -0.0121 +-0.26 0.06 0 +-0.259756 -0.112164 0.30954 +-0.259756 0.112164 0.30954 +-0.259556 -0.113556 -0.308939 +-0.259556 0.113556 -0.308939 +-0.25892 -0.117596 0.306799 +-0.25892 0.117596 0.306799 +-0.258696 -0.118892 -0.30598 +-0.258696 0.118892 -0.30598 +-0.257772 -0.123728 0.302212 +-0.257772 0.123728 0.302212 +-0.257743 -0.159756 -0.154984 +-0.257743 -0.159756 0.154984 +-0.257743 0.159756 -0.154984 +-0.257743 0.159756 0.154984 +-0.257533 -0.124836 -0.301156 +-0.257533 0.124836 -0.301156 +-0.256812 -0.127888 0.297764 +-0.256812 0.127888 0.297764 +-0.256568 -0.128804 -0.296568 +-0.256568 0.128804 -0.296568 +-0.25538 -0.132612 0.290228 +-0.25538 -0.132612 -0.290228 +-0.25538 0.132612 -0.290228 +-0.25538 0.132612 0.290228 +-0.254052 -0.135408 0.282243 +-0.254052 0.135408 0.282243 +-0.254052 -0.135408 -0.282243 +-0.254052 0.135408 -0.282243 +-0.25212 -0.167257 -0.0774917 +-0.25212 -0.167257 0.0774917 +-0.25212 0.167257 -0.0774917 +-0.25212 0.167257 0.0774917 +-0.250244 -0.169756 0 +-0.250244 0.169756 0 +-0.15062 -0.139692 -0.243719 +-0.15062 -0.139692 0.243719 +-0.15062 0.139692 -0.243719 +-0.15062 0.139692 0.243719 +-0.136556 -0.152192 -0.162481 +-0.136556 -0.152192 0.162481 +-0.136556 0.152192 -0.162481 +-0.136556 0.152192 0.162481 +-0.12812 -0.159692 -0.08124 +-0.12812 -0.159692 0.08124 +-0.12812 0.159692 -0.08124 +-0.12812 0.159692 0.08124 +-0.125308 -0.162191 0 +-0.125308 0.162191 0 +-0.0564879 -0.0874238 0.340479 +-0.0564879 0.0874238 0.340479 +-0.0564879 -0.0874238 -0.340479 +-0.0564879 0.0874238 -0.340479 +-0.0563278 -0.0960599 0.339548 +-0.0563278 0.0960599 0.339548 +-0.0563278 -0.0960599 -0.339548 +-0.0563278 0.0960599 -0.339548 +-0.0559839 -0.103304 0.337227 +-0.0559839 0.103304 0.337227 +-0.055892 -0.10472 -0.336591 +-0.055892 0.10472 -0.336591 +-0.0555679 -0.108828 0.334339 +-0.0555679 0.108828 0.334339 +-0.055444 -0.11014 -0.333479 +-0.055444 0.11014 -0.333479 +-0.0548878 -0.115036 0.329535 +-0.0548878 0.115036 0.329535 +-0.0547321 -0.116152 -0.328435 +-0.0547321 0.116152 -0.328435 +-0.0542398 -0.119216 0.324911 +-0.0542398 0.119216 0.324911 +-0.0540679 -0.120136 -0.323671 +-0.0540679 0.120136 -0.323671 +-0.05316 -0.123904 0.317119 +-0.05316 -0.123904 -0.317119 +-0.05316 0.123904 -0.317119 +-0.05316 0.123904 0.317119 +-0.0520319 -0.126588 0.308931 +-0.0520319 0.126588 0.308931 +-0.0520319 -0.126588 -0.308931 +-0.0520319 0.126588 -0.308931 +-0.034076 -0.137172 -0.254967 +-0.034076 -0.137172 0.254967 +-0.034076 0.137172 -0.254967 +-0.034076 0.137172 0.254967 +-0.015328 -0.149672 -0.169976 +-0.015328 -0.149672 0.169976 +-0.015328 0.149672 -0.169976 +-0.015328 0.149672 0.169976 +-0.00407599 -0.157172 -0.0849878 +-0.00407599 -0.157172 0.0849878 +-0.00407599 0.157172 -0.0849878 +-0.00407599 0.157172 0.0849878 +-0.000327999 -0.159672 0 +-0.000327999 0.159672 0 +0.0825039 -0.139692 -0.266219 +0.0825039 -0.139692 0.266219 +0.0825039 0.139692 -0.266219 +0.0825039 0.139692 0.266219 +0.105944 -0.152192 -0.17748 +0.105944 -0.152192 0.17748 +0.105944 0.152192 -0.17748 +0.105944 0.152192 0.17748 +0.120004 -0.159692 -0.0887398 +0.120004 -0.159692 0.0887398 +0.120004 0.159692 -0.0887398 +0.120004 0.159692 0.0887398 +0.124692 -0.162191 0 +0.124692 0.162191 0 +0.14804 -0.11266 -0.364188 +0.14804 0.11266 -0.364188 +0.148044 -0.116848 0.361761 +0.148044 0.116848 0.361761 +0.148056 -0.111216 0.364876 +0.148056 0.111216 0.364876 +0.148064 -0.118184 -0.360839 +0.148064 0.118184 -0.360839 +0.148256 -0.123132 0.356627 +0.148256 0.123132 0.356627 +0.148288 -0.103812 0.3674 +0.148288 0.103812 0.3674 +0.148288 -0.103812 -0.3674 +0.148288 0.103812 -0.3674 +0.148328 -0.124256 -0.355455 +0.148328 0.124256 -0.355455 +0.1486 -0.127312 0.351714 +0.1486 0.127312 0.351714 +0.148708 -0.12822 -0.350402 +0.148708 0.12822 -0.350402 +0.148824 -0.0949838 0.368478 +0.148824 0.0949838 0.368478 +0.148824 -0.0949838 -0.368478 +0.148824 0.0949838 -0.368478 +0.149364 -0.131876 0.34351 +0.149364 -0.131876 -0.34351 +0.149364 0.131876 -0.34351 +0.149364 0.131876 0.34351 +0.150336 -0.134316 0.334999 +0.150336 -0.134316 -0.334999 +0.150336 0.134316 -0.334999 +0.150336 0.134316 0.334999 +0.199129 -0.147256 -0.277475 +0.199129 -0.147256 0.277475 +0.199129 0.147256 -0.277475 +0.199129 0.147256 0.277475 +0.227255 -0.159756 -0.184984 +0.227255 -0.159756 0.184984 +0.227255 0.159756 -0.184984 +0.227255 0.159756 0.184984 +0.244127 -0.167257 -0.0924917 +0.244127 -0.167257 0.0924917 +0.244127 0.167257 -0.0924917 +0.244127 0.167257 0.0924917 +0.249755 -0.169756 0 +0.249755 0.169756 0 +0.284912 0.148592 0.352041 +0.284912 -0.148592 -0.352041 +0.28532 -0.109284 -0.38709 +0.28532 -0.109284 0.38709 +0.292052 -0.139 0.375668 +0.292068 -0.140124 -0.374435 +0.29212 -0.134024 -0.38012 +0.292168 -0.132672 0.381095 +0.292195 -0.143156 0.3705 +0.29226 -0.144048 -0.369123 +0.292391 -0.128432 -0.383672 +0.292491 -0.126964 0.384404 +0.292764 -0.14758 0.361935 +0.292764 -0.14758 -0.361935 +0.29314 -0.11944 0.387108 +0.29314 -0.11944 -0.387108 +0.315795 -0.159856 -0.288736 +0.315795 -0.159856 0.288736 +0.315795 0.159856 -0.288736 +0.315795 0.159856 0.288736 +0.3481 0.15234 -0.376562 +0.348149 -0.150804 0.378949 +0.348168 0.153492 0.37455 +0.34823 -0.15396 0.373656 +0.348237 -0.149856 -0.38026 +0.348237 0.14988 0.380236 +0.348327 -0.154436 -0.37269 +0.34848 0.148088 -0.382479 +0.348495 0.155044 -0.371378 +0.348561 0.155224 0.370964 +0.348607 -0.172355 -0.192491 +0.348607 -0.172355 0.192491 +0.348607 0.172355 -0.192491 +0.348607 0.172355 0.192491 +0.348716 -0.146748 0.383983 +0.348829 -0.146168 -0.384588 +0.348944 0.145588 0.38517 +0.3491 -0.156296 0.368275 +0.349255 0.1441 -0.386575 +0.34934 -0.156624 -0.36735 +0.34976 0.157084 -0.365942 +0.349869 0.15718 0.365621 +0.350072 -0.15412 0.374079 +0.350075 -0.155828 0.370166 +0.350097 -0.140404 0.38952 +0.350168 -0.140096 -0.389735 +0.350252 -0.157492 -0.364546 +0.350393 -0.15216 0.377647 +0.350433 0.138972 0.390482 +0.350636 -0.157332 0.365577 +0.351196 0.135652 -0.392389 +0.351355 -0.148488 0.382781 +0.351436 0.157508 0.3654 +0.351455 -0.13448 0.392959 +0.351495 0.156164 0.369883 +0.351536 -0.134124 -0.393124 +0.351707 -0.157568 0.365328 +0.351785 0.132944 0.393635 +0.351966 0.154588 0.373737 +0.351981 -0.156276 0.369764 +0.352153 0.158448 0.360484 +0.352153 -0.158448 -0.360484 +0.352153 -0.158448 0.360484 +0.352153 0.158448 -0.360484 +0.352536 0.129052 -0.394997 +0.352611 -0.154744 0.373587 +0.352692 0.15274 0.37727 +0.352735 -0.143972 0.387407 +0.352767 0.1578 0.364995 +0.352857 -0.12706 -0.395508 +0.352966 -0.126268 0.395676 +0.352966 0.126268 0.395676 +0.353038 -0.157856 0.364895 +0.353119 0.125072 -0.395897 +0.353474 -0.152928 0.377104 +0.353496 -0.119196 -0.396383 +0.353496 0.119196 -0.396383 +0.353496 -0.119196 0.396383 +0.353496 0.119196 0.396383 +0.35382 0.158028 0.364571 +0.353866 0.156704 0.369194 +0.354197 0.149192 0.382407 +0.354352 -0.156812 0.36902 +0.35438 0.126832 -0.395782 +0.354383 -0.152824 -0.377513 +0.354496 0.13788 -0.391859 +0.354527 -0.137968 0.391732 +0.354536 0.133132 -0.394028 +0.354583 -0.158192 0.364203 +0.354617 0.145932 -0.386083 +0.35467 -0.148496 -0.383363 +0.354767 -0.155556 -0.372369 +0.355119 0.150636 -0.380908 +0.355134 0.155324 0.372852 +0.355159 -0.14942 0.382223 +0.355312 -0.144424 -0.387401 +0.355327 0.158352 0.363783 +0.35567 0.126356 -0.396018 +0.355686 -0.158428 0.363555 +0.355748 0.157112 0.368453 +0.355782 -0.155464 0.372624 +0.355863 -0.132804 0.394233 +0.355932 -0.157604 -0.366973 +0.356028 0.144724 0.387096 +0.356408 0.154804 -0.374254 +0.356536 0.153632 0.376248 +0.356652 -0.129044 0.395467 +0.356708 0.125744 -0.396208 +0.35672 0.158652 0.36282 +0.356888 -0.158684 0.362686 +0.356898 -0.1358 -0.393056 +0.356957 0.1323 -0.394576 +0.357103 -0.1574 0.367789 +0.35715 -0.144964 0.386918 +0.357321 -0.1538 0.375977 +0.357652 0.155864 0.371867 +0.357792 0.136804 -0.392729 +0.357829 0.12478 -0.396402 +0.357963 -0.129096 -0.39552 +0.358247 0.138636 0.391523 +0.358402 -0.125076 -0.396336 +0.358424 0.157672 0.367029 +0.358443 0.157412 -0.36792 +0.358524 0.123964 -0.396511 +0.35887 0.158948 -0.361736 +0.35887 -0.158948 0.361736 +0.358895 0.131196 -0.395015 +0.358938 0.150256 0.381239 +0.35906 -0.1578 0.366621 +0.359462 -0.156236 0.370976 +0.359511 -0.138848 0.391364 +0.359515 0.122276 -0.396657 +0.359527 0.144576 -0.387588 +0.359583 0.154276 0.375067 +0.359789 -0.119196 -0.396744 +0.359789 0.119196 0.396744 +0.359823 0.1333 0.394102 +0.359907 -0.150456 0.380915 +0.359994 0.120988 -0.396707 +0.360184 0.120252 -0.396723 +0.36044 0.135336 -0.393433 +0.360723 0.129388 0.39537 +0.360854 -0.152328 -0.378463 +0.36087 0.158156 0.365269 +0.361001 0.129432 -0.395467 +0.361032 -0.14802 -0.383993 +0.361051 0.149188 -0.382831 +0.361128 0.158844 0.362315 +0.361128 -0.158844 -0.362315 +0.361156 -0.158212 0.365023 +0.361172 -0.133456 0.393959 +0.361216 0.15658 0.369951 +0.361231 -0.155056 -0.373575 +0.361515 -0.143976 -0.387784 +0.36154 0.145844 0.385862 +0.36178 -0.154708 0.373983 +0.361879 -0.119196 0.396638 +0.361879 0.119196 -0.396638 +0.36206 -0.15674 0.369397 +0.362113 -0.1295 0.395233 +0.362287 -0.157104 -0.368431 +0.362303 0.127928 -0.395722 +0.362664 -0.146056 0.385504 +0.362705 0.151008 0.379812 +0.36272 -0.135448 -0.393056 +0.363259 0.153324 -0.376537 +0.363303 0.132964 -0.394159 +0.363387 0.158596 -0.362967 +0.363387 -0.158596 0.362967 +0.363484 0.14256 -0.388868 +0.363496 -0.128852 -0.395311 +0.363783 -0.12492 -0.396056 +0.363892 0.155104 0.37273 +0.363967 -0.119196 -0.39643 +0.363967 0.119196 0.39643 +0.364172 0.12482 -0.39604 +0.364446 0.157176 0.367546 +0.364456 0.139628 0.390298 +0.364823 -0.15724 0.367216 +0.364901 -0.155284 0.372042 +0.365079 0.13094 -0.394576 +0.365098 0.122456 -0.396149 +0.3654 -0.1515 0.378475 +0.365481 0.121116 -0.396165 +0.365721 -0.139816 0.389915 +0.365823 0.155932 -0.370356 +0.365827 0.146896 -0.384516 +0.365898 0.146632 0.384251 +0.366425 0.134032 0.392915 +0.367403 -0.1507 -0.379323 +0.367453 -0.146536 -0.384298 +0.367503 0.129908 0.394208 +0.367627 0.126752 -0.395078 +0.367752 0.139196 -0.390227 +0.367764 -0.142656 -0.387688 +0.367764 -0.134172 0.392529 +0.367764 0.155764 0.369758 +0.367783 -0.15336 -0.374893 +0.367848 0.163779 -0.331591 +0.367852 -0.163779 0.331591 +0.367982 0.151944 0.376908 +0.36821 -0.155836 0.369347 +0.368297 -0.179856 -0.096244 +0.368297 -0.179856 0.096244 +0.368297 0.179856 -0.096244 +0.368297 0.179856 0.096244 +0.368568 -0.134536 -0.39238 +0.368696 0.157376 0.364736 +0.368696 -0.157376 -0.364736 +0.368727 -0.155392 -0.370188 +0.368768 0.150828 -0.378606 +0.36888 -0.130004 0.393816 +0.368898 0.123568 -0.39524 +0.369011 -0.147144 0.3827 +0.369045 -0.128292 -0.394373 +0.369173 -0.12458 -0.395043 +0.369216 -0.152144 0.376042 +0.36935 0.140324 0.388557 +0.369422 0.121768 -0.395258 +0.369503 -0.119196 0.395321 +0.369503 0.119196 -0.395321 +0.37021 0.156848 -0.365291 +0.37021 -0.156848 0.365291 +0.370381 0.136284 -0.391024 +0.37097 0.142984 -0.386348 +0.371213 -0.119196 -0.394813 +0.371213 0.119196 0.394813 +0.371612 0.134548 0.391121 +0.371727 0.153344 -0.37264 +0.371976 0.147604 0.380859 +0.372668 0.152668 0.373151 +0.372824 0.130268 0.392398 +0.37283 -0.140776 0.386837 +0.373204 -0.152744 0.372628 +0.373385 -0.147808 0.379843 +0.373883 -0.143872 -0.38422 +0.373986 -0.147724 -0.380005 +0.373998 -0.14032 -0.387071 +0.374129 0.130192 -0.392015 +0.374129 0.139556 -0.387445 +0.374375 -0.132972 -0.390999 +0.374388 -0.150232 -0.376207 +0.374534 -0.12402 -0.393271 +0.374556 -0.127352 -0.392685 +0.374687 0.146468 -0.380937 +0.374699 0.154764 0.367073 +0.374699 -0.154764 -0.367073 +0.374855 -0.182356 0 +0.374855 0.182356 0 +0.375058 0.162841 -0.340236 +0.375058 -0.162841 0.340236 +0.37522 -0.152196 -0.372132 +0.375294 -0.134884 0.389323 +0.375939 0.125552 -0.392339 +0.376136 0.14118 0.384765 +0.376164 -0.119196 0.392834 +0.376164 0.119196 -0.392834 +0.376597 -0.130508 0.390576 +0.376662 0.122936 -0.39238 +0.377301 0.148352 0.376419 +0.3777 -0.141364 0.383619 +0.37774 -0.119196 -0.39204 +0.37774 0.119196 0.39204 +0.377905 -0.148432 0.375796 +0.378067 0.148736 -0.375301 +0.378301 0.142592 -0.382376 +0.378572 0.132328 -0.388856 +0.378787 0.135184 0.387149 +0.378852 -0.123368 -0.391193 +0.378964 -0.126252 -0.390679 +0.378968 -0.137528 -0.386074 +0.379005 -0.131124 -0.38928 +0.37902 -0.140652 -0.38375 +0.379027 0.151864 -0.368939 +0.379027 -0.151864 0.368939 +0.379279 -0.144088 -0.380301 +0.379718 -0.14636 -0.377164 +0.380167 0.130716 0.388361 +0.380435 -0.13532 0.385937 +0.380482 -0.148192 -0.373755 +0.380669 0.126796 -0.389361 +0.381127 -0.12294 -0.389819 +0.381133 -0.150068 -0.369895 +0.381133 0.150068 0.369895 +0.381276 -0.125528 -0.389351 +0.381413 -0.1299 -0.388115 +0.381463 0.123668 -0.389442 +0.381538 -0.135664 -0.385336 +0.381678 -0.138492 -0.383323 +0.381849 -0.130816 0.387121 +0.381924 0.144604 -0.376999 +0.382018 -0.141624 -0.38032 +0.382021 0.141852 0.37974 +0.382127 0.160815 -0.343588 +0.382127 -0.160815 0.343588 +0.382479 -0.143716 -0.377584 +0.382681 -0.141924 0.379036 +0.382812 -0.119196 0.388825 +0.382812 0.119196 -0.388825 +0.383139 0.148056 -0.370839 +0.383139 -0.148056 0.370839 +0.383211 -0.145432 -0.37459 +0.383276 -0.119196 -0.388473 +0.383276 0.119196 0.388473 +0.383329 0.134336 -0.384314 +0.384725 -0.12212 -0.387183 +0.384902 -0.124136 -0.386797 +0.384971 0.135688 0.381824 +0.385036 -0.14582 -0.371758 +0.385036 0.14582 0.371758 +0.385142 -0.127536 -0.385853 +0.385488 -0.13204 -0.38379 +0.385603 0.127972 -0.385083 +0.385666 -0.135744 0.381077 +0.385741 -0.134272 -0.382307 +0.386174 -0.136768 -0.380086 +0.386417 0.124364 -0.385267 +0.386435 0.158732 -0.345479 +0.386435 -0.158732 0.345479 +0.386485 0.131072 0.382915 +0.38666 -0.138464 -0.378052 +0.387192 -0.131112 0.382148 +0.387239 0.1357 -0.379397 +0.387326 -0.139892 -0.375799 +0.387762 -0.121256 -0.384388 +0.387928 -0.122668 -0.384096 +0.387943 0.141516 -0.373216 +0.387943 -0.141516 0.373216 +0.388189 -0.125048 -0.383423 +0.388619 -0.1282 -0.382021 +0.388775 -0.119196 -0.383351 +0.388775 0.119196 0.383351 +0.388775 -0.119196 0.383351 +0.388775 0.119196 -0.383351 +0.388915 -0.129772 -0.381014 +0.389376 -0.131544 -0.379516 +0.389566 0.12878 -0.380435 +0.389834 -0.132764 -0.378129 +0.390348 0.124844 -0.380746 +0.390383 -0.136576 -0.3745 +0.390383 0.136576 0.3745 +0.390408 -0.133812 -0.376587 +0.390825 -0.12026 -0.380843 +0.390922 -0.120988 -0.380675 +0.391046 0.134856 -0.374858 +0.391046 -0.134856 0.374858 +0.391102 -0.122204 -0.380317 +0.391429 -0.123812 -0.379597 +0.391647 -0.12462 -0.379086 +0.391975 -0.125536 -0.378332 +0.392062 0.154856 -0.347748 +0.392062 -0.154856 0.347748 +0.392283 -0.12618 -0.37764 +0.392644 -0.126748 -0.376858 +0.392648 -0.129316 -0.375762 +0.392651 0.129316 0.375762 +0.393056 -0.127228 0.376005 +0.393056 0.127228 -0.376005 +0.393358 -0.125168 -0.376189 +0.393358 0.125168 0.376189 +0.393732 -0.119196 -0.376419 +0.393732 -0.119196 0.376419 +0.393732 0.119196 0.376419 +0.393732 0.119196 -0.376419 +0.396109 -0.173355 -0.271955 +0.396109 0.173355 -0.271955 +0.396109 0.173355 0.271955 +0.396109 -0.173355 0.271955 +0.39666 0.150424 -0.349371 +0.39666 -0.150424 0.349371 +0.401259 0.144232 -0.350685 +0.401259 -0.144232 0.350685 +0.40467 0.137464 -0.351268 +0.40467 -0.137464 0.351268 +0.405732 -0.173204 -0.276043 +0.405732 0.173204 -0.276043 +0.405732 0.173204 0.276043 +0.405732 -0.173204 0.276043 +0.406848 -0.130532 0.351178 +0.406848 0.130536 -0.351178 +0.409938 -0.124484 0.346526 +0.409938 0.124484 -0.346526 +0.413088 -0.171228 0.2789 +0.413088 -0.171228 -0.2789 +0.413088 0.171228 -0.2789 +0.413088 0.171228 0.2789 +0.417559 0.16916 0.280512 +0.417559 -0.16916 0.280512 +0.417559 -0.16916 -0.280512 +0.417559 0.16916 -0.280512 +0.423375 -0.165279 -0.282431 +0.423375 0.165279 -0.282431 +0.423375 0.165279 0.282431 +0.423375 -0.165279 0.282431 +0.428098 -0.160823 -0.283807 +0.428098 -0.160823 0.283807 +0.428098 0.160823 -0.283807 +0.428098 0.160823 0.283807 +0.428341 -0.184248 -0.181432 +0.428341 -0.184248 0.181432 +0.428341 0.184248 -0.181432 +0.428341 0.184248 0.181432 +0.432784 -0.154584 -0.284903 +0.432784 0.154584 -0.284903 +0.432784 0.154584 0.284903 +0.432784 -0.154584 0.284903 +0.436208 -0.147756 -0.285379 +0.436208 0.147756 -0.285379 +0.436208 0.147756 0.285379 +0.436208 -0.147756 0.285379 +0.438323 -0.14076 -0.285272 +0.438323 -0.14076 0.285272 +0.438323 0.14076 -0.285272 +0.438323 0.14076 0.285272 +0.438473 -0.184236 -0.184323 +0.438473 -0.184236 0.184323 +0.438473 0.184236 -0.184323 +0.438473 0.184236 0.184323 +0.439221 -0.133976 0.284675 +0.439221 -0.133976 -0.284675 +0.439221 0.133976 -0.284675 +0.439221 0.133976 0.284675 +0.446187 -0.182328 -0.186344 +0.446187 -0.182328 0.186344 +0.446187 0.182328 -0.186344 +0.446187 0.182328 0.186344 +0.447819 -0.190811 -0.090152 +0.447819 -0.190811 0.090152 +0.447819 0.190811 -0.090152 +0.447819 0.190811 0.090152 +0.450866 -0.18028 -0.187481 +0.450866 -0.18028 0.187481 +0.450866 0.18028 -0.187481 +0.450866 0.18028 0.187481 +0.454209 -0.192961 0 +0.454209 0.192961 0 +0.456923 0.1764 0.188836 +0.456923 -0.1764 -0.188836 +0.456923 -0.1764 0.188836 +0.456923 0.1764 -0.188836 +0.458303 -0.190904 -0.0916478 +0.458303 -0.190904 0.0916478 +0.458303 0.190904 0.0916478 +0.458303 0.190904 -0.0916478 +0.461811 0.171917 0.1898 +0.461811 -0.171917 -0.1898 +0.461811 -0.171917 0.1898 +0.461811 0.171917 -0.1898 +0.464817 -0.193092 0 +0.464817 0.193092 0 +0.466275 -0.189043 -0.0926918 +0.466275 -0.189043 0.0926918 +0.466275 0.189043 -0.0926918 +0.466275 0.189043 0.0926918 +0.466602 -0.165615 -0.190564 +0.466602 -0.165615 0.190564 +0.466602 0.165615 -0.190564 +0.466602 0.165615 0.190564 +0.470039 -0.158704 -0.19088 +0.470039 -0.158704 0.19088 +0.470039 0.158704 -0.19088 +0.470039 0.158704 0.19088 +0.471101 -0.187011 -0.09328 +0.471101 -0.187011 0.09328 +0.471101 0.187011 -0.09328 +0.471101 0.187011 0.09328 +0.472079 -0.151624 -0.190779 +0.472079 -0.151624 0.190779 +0.472079 0.151624 -0.190779 +0.472079 0.151624 0.190779 +0.472827 0.14476 0.190336 +0.472827 -0.14476 -0.190336 +0.472827 -0.14476 0.190336 +0.472827 0.14476 -0.190336 +0.47288 -0.191252 0 +0.47288 0.191252 0 +0.477332 -0.183132 -0.09398 +0.477332 -0.183132 0.09398 +0.477332 0.183132 -0.09398 +0.477332 0.183132 0.09398 +0.477756 -0.189223 0 +0.477756 0.189223 0 +0.482332 -0.178631 -0.094476 +0.482332 -0.178631 0.094476 +0.482332 0.178631 -0.094476 +0.482332 0.178631 0.094476 +0.484049 -0.185344 0 +0.484049 0.185344 0 +0.487199 -0.172283 -0.0948639 +0.487199 -0.172283 0.0948639 +0.487199 0.172283 -0.0948639 +0.487199 0.172283 0.0948639 +0.489087 -0.180835 0 +0.489087 0.180835 0 +0.490644 -0.165316 -0.0950199 +0.490644 -0.165316 0.0950199 +0.490644 0.165316 -0.0950199 +0.490644 0.165316 0.0950199 +0.492629 -0.158176 -0.0949598 +0.492629 -0.158176 0.0949598 +0.492629 0.158176 -0.0949598 +0.492629 0.158176 0.0949598 +0.493271 -0.151256 -0.094724 +0.493271 -0.151256 0.094724 +0.493271 0.151256 -0.094724 +0.493271 0.151256 0.094724 +0.493987 -0.174473 0 +0.493987 0.174473 0 +0.49743 -0.167483 0 +0.49743 0.167483 0 +0.499392 -0.160324 0 +0.499392 0.160324 0 +0.5 -0.15338 0 +0.5 0.15338 0 +3 1163 1161 1153 +3 1153 1161 1149 +3 1161 1145 1149 +3 1149 1145 1109 +3 1145 1105 1109 +3 1109 1105 1053 +3 1105 1045 1053 +3 1045 959 1053 +3 959 990 1053 +3 1053 990 1057 +3 990 1005 1057 +3 1057 1005 1061 +3 1005 1009 1061 +3 1061 1009 1070 +3 1009 1011 1070 +3 1011 1014 1070 +3 1014 1032 1070 +3 1032 1071 1070 +3 1070 1071 1122 +3 1071 1124 1122 +3 1122 1124 1153 +3 1124 1155 1153 +3 1155 1164 1153 +3 1153 1164 1163 +3 1164 1156 1163 +3 1156 1154 1163 +3 1154 1150 1163 +3 1163 1150 1161 +3 1150 1159 1161 +3 1161 1159 1145 +3 1159 1139 1145 +3 1145 1139 1105 +3 1139 1096 1105 +3 1105 1096 1045 +3 1096 1041 1045 +3 1041 933 1045 +3 1045 933 959 +3 933 952 959 +3 952 974 959 +3 959 974 990 +3 974 992 990 +3 990 992 1005 +3 992 1004 1005 +3 1005 1004 1009 +3 1004 1003 1009 +3 1009 1003 1000 +3 1000 1003 986 +3 1003 988 986 +3 986 988 966 +3 988 971 966 +3 966 971 942 +3 971 946 942 +3 942 946 926 +3 926 946 927 +3 946 952 927 +3 927 952 930 +3 952 933 930 +3 930 933 902 +3 933 897 902 +3 902 897 860 +3 897 859 860 +3 1153 1149 1122 +3 1149 1117 1122 +3 1122 1117 1070 +3 1070 1117 1061 +3 1061 1117 1057 +3 1117 1109 1057 +3 1057 1109 1053 +3 1117 1149 1109 +3 1069 1062 1123 +3 1123 1062 1118 +3 1062 1110 1118 +3 1118 1110 1146 +3 1110 1140 1146 +3 1146 1140 1157 +3 1140 1143 1157 +3 1157 1143 1133 +3 1143 1127 1133 +3 1133 1127 1088 +3 1127 1081 1088 +3 1088 1081 1039 +3 1081 1034 1039 +3 1059 1112 1055 +3 1055 1112 1108 +3 1112 1148 1108 +3 1108 1148 1142 +3 1148 1160 1142 +3 1142 1160 1158 +3 1160 1147 1158 +3 1158 1147 1141 +3 1147 1111 1141 +3 1141 1111 1107 +3 1111 1058 1107 +3 1107 1058 1054 +3 1058 1023 1054 +3 1054 1023 1021 +3 1023 995 1021 +3 1021 995 977 +3 995 973 977 +3 977 973 941 +3 973 916 941 +3 941 916 895 +3 916 875 895 +3 895 875 837 +3 875 820 837 +3 837 820 783 +3 820 767 783 +3 783 767 736 +3 767 738 736 +3 736 738 701 +3 738 715 701 +3 715 618 701 +3 701 618 606 +3 618 552 606 +3 606 552 556 +3 552 460 556 +3 556 460 500 +3 460 420 500 +3 1055 1108 1048 +3 1048 1108 1095 +3 1108 1142 1095 +3 1095 1142 1136 +3 1142 1158 1136 +3 1136 1158 1144 +3 1158 1141 1144 +3 1144 1141 1135 +3 1141 1107 1135 +3 1135 1107 1098 +3 1107 1054 1098 +3 1098 1054 1047 +3 1054 1021 1047 +3 1047 1021 1019 +3 1021 977 1019 +3 1019 977 950 +3 977 941 950 +3 950 941 915 +3 941 895 915 +3 915 895 861 +3 895 837 861 +3 861 837 797 +3 837 783 797 +3 797 783 740 +3 783 736 740 +3 740 736 689 +3 736 701 689 +3 689 701 612 +3 701 606 612 +3 606 556 612 +3 612 556 560 +3 556 500 560 +3 1048 1095 1043 +3 1043 1095 1087 +3 1095 1136 1087 +3 1087 1136 1130 +3 1136 1144 1130 +3 1130 1144 1138 +3 1144 1135 1138 +3 1138 1135 1129 +3 1135 1098 1129 +3 1129 1098 1090 +3 1098 1047 1090 +3 1090 1047 1042 +3 1047 1019 1042 +3 1042 1019 1001 +3 1019 950 1001 +3 1001 950 924 +3 950 915 924 +3 924 915 879 +3 915 861 879 +3 879 861 816 +3 861 797 816 +3 816 797 743 +3 797 740 743 +3 743 740 678 +3 740 689 678 +3 678 689 620 +3 689 612 620 +3 620 612 560 +3 1043 1087 1037 +3 1037 1087 1084 +3 1087 1130 1084 +3 1084 1130 1116 +3 1130 1138 1116 +3 1116 1138 1132 +3 1138 1129 1132 +3 1132 1129 1115 +3 1129 1090 1115 +3 1115 1090 1083 +3 1090 1042 1083 +3 1083 1042 1040 +3 1042 1001 1040 +3 1040 1001 968 +3 1001 924 968 +3 968 924 872 +3 924 879 872 +3 872 879 836 +3 879 816 836 +3 836 816 755 +3 816 743 755 +3 755 743 671 +3 743 678 671 +3 671 678 620 +3 1031 1029 1069 +3 1069 1029 1062 +3 1029 1060 1062 +3 1062 1060 1110 +3 1060 1106 1110 +3 1110 1106 1140 +3 1106 1134 1140 +3 1140 1134 1143 +3 1134 1137 1143 +3 1143 1137 1127 +3 1137 1113 1127 +3 1127 1113 1081 +3 1113 1073 1081 +3 1081 1073 1034 +3 1073 1025 1034 +3 1050 1028 1018 +3 1018 1028 901 +3 1028 945 901 +3 901 945 819 +3 945 873 819 +3 819 873 829 +3 829 873 852 +3 873 884 852 +3 852 884 867 +3 884 885 867 +3 867 885 864 +3 885 883 864 +3 864 883 835 +3 883 846 835 +3 835 846 801 +3 846 810 801 +3 801 810 757 +3 810 807 757 +3 1015 1025 1065 +3 1025 1073 1065 +3 1065 1073 1101 +3 1073 1113 1101 +3 1101 1113 1131 +3 1113 1137 1131 +3 1131 1137 1128 +3 1137 1134 1128 +3 1128 1134 1097 +3 1134 1106 1097 +3 1097 1106 1056 +3 1106 1060 1056 +3 1056 1060 1024 +3 1060 1029 1024 +3 1024 1029 1007 +3 1029 1031 1007 +3 1007 1031 1012 +3 1012 1031 1072 +3 1031 1069 1072 +3 1072 1069 1121 +3 1069 1123 1121 +3 1121 1123 1156 +3 1156 1123 1154 +3 1123 1118 1154 +3 1154 1118 1150 +3 1118 1146 1150 +3 1150 1146 1159 +3 1146 1157 1159 +3 1159 1157 1139 +3 1157 1133 1139 +3 1139 1133 1096 +3 1133 1088 1096 +3 1096 1088 1041 +3 1088 1039 1041 +3 1041 1039 897 +3 1039 1034 897 +3 897 1034 859 +3 1034 1025 859 +3 859 1025 799 +3 1025 1015 799 +3 799 1015 712 +3 1015 667 712 +3 712 667 652 +3 667 637 652 +3 652 637 634 +3 637 591 634 +3 634 591 575 +3 591 577 575 +3 577 531 575 +3 575 531 523 +3 531 450 523 +3 450 436 523 +3 436 408 523 +3 523 408 518 +3 408 404 518 +3 404 515 518 +3 518 515 567 +3 515 563 567 +3 567 563 619 +3 563 611 619 +3 619 611 657 +3 611 661 657 +3 657 661 696 +3 661 706 696 +3 696 706 761 +3 706 769 761 +3 761 769 815 +3 769 821 815 +3 815 821 857 +3 821 865 857 +3 857 865 891 +3 865 894 891 +3 891 894 922 +3 894 920 922 +3 922 920 936 +3 920 935 936 +3 936 935 961 +3 935 957 961 +3 961 957 979 +3 957 976 979 +3 979 976 997 +3 976 994 997 +3 997 994 1009 +3 994 1011 1009 +3 1003 1004 988 +3 1004 992 988 +3 988 992 971 +3 992 974 971 +3 971 974 946 +3 974 952 946 +3 998 999 980 +3 999 985 980 +3 980 985 962 +3 985 965 962 +3 962 965 938 +3 965 939 938 +3 938 939 921 +3 939 923 921 +3 921 923 888 +3 923 886 888 +3 888 886 845 +3 886 841 845 +3 845 841 804 +3 841 796 804 +3 1011 994 993 +3 993 994 975 +3 994 976 975 +3 1011 993 981 +3 993 975 981 +3 1008 989 987 +3 983 1013 982 +3 1013 1010 982 +3 975 976 956 +3 976 957 956 +3 956 957 932 +3 957 935 932 +3 932 935 919 +3 935 920 919 +3 919 920 893 +3 920 894 893 +3 893 894 866 +3 894 865 866 +3 866 865 822 +3 865 821 822 +3 822 821 771 +3 821 769 771 +3 771 769 720 +3 769 706 720 +3 720 706 666 +3 706 661 666 +3 666 661 605 +3 661 611 605 +3 605 611 559 +3 611 563 559 +3 559 563 511 +3 563 515 511 +3 511 515 393 +3 515 404 393 +3 393 404 390 +3 975 956 981 +3 981 956 953 +3 956 932 953 +3 954 970 928 +3 970 918 928 +3 928 918 878 +3 918 868 878 +3 878 868 828 +3 868 805 828 +3 828 805 754 +3 805 732 754 +3 754 732 687 +3 732 676 687 +3 687 676 614 +3 676 622 614 +3 614 622 566 +3 622 572 566 +3 566 572 520 +3 572 574 520 +3 520 574 522 +3 522 574 534 +3 574 580 534 +3 580 538 534 +3 534 538 510 +3 538 528 510 +3 510 528 447 +3 528 449 447 +3 449 419 447 +3 419 417 447 +3 447 417 443 +3 417 413 443 +3 443 413 439 +3 413 410 439 +3 439 410 522 +3 410 431 522 +3 522 431 520 +3 431 514 520 +3 520 514 566 +3 514 562 566 +3 566 562 614 +3 562 608 614 +3 614 608 687 +3 608 699 687 +3 687 699 754 +3 699 770 754 +3 754 770 828 +3 770 839 828 +3 828 839 878 +3 839 882 878 +3 878 882 928 +3 882 913 928 +3 928 913 954 +3 913 948 954 +3 953 984 981 +3 981 984 1011 +3 1011 984 1014 +3 984 989 1014 +3 989 1008 1014 +3 1014 1008 1032 +3 1008 1030 1032 +3 1032 1030 1071 +3 1030 1063 1071 +3 1071 1063 1124 +3 1063 1119 1124 +3 1124 1119 1155 +3 1119 1151 1155 +3 1155 1151 1164 +3 1151 1162 1164 +3 1164 1162 1156 +3 1162 1152 1156 +3 1156 1152 1121 +3 1152 1120 1121 +3 1121 1120 1072 +3 1120 1064 1072 +3 1064 1010 1072 +3 1010 1013 1072 +3 1072 1013 1012 +3 1013 983 1012 +3 1012 983 1007 +3 983 972 1007 +3 972 996 1007 +3 1007 996 1024 +3 996 1022 1024 +3 1024 1022 1056 +3 1022 1046 1056 +3 1056 1046 1097 +3 1046 1089 1097 +3 1097 1089 1128 +3 1089 1114 1128 +3 1128 1114 1131 +3 1114 1125 1131 +3 1131 1125 1101 +3 1125 1091 1101 +3 1101 1091 1065 +3 1091 1049 1065 +3 1065 1049 1015 +3 1049 681 1015 +3 1015 681 667 +3 681 641 667 +3 667 641 637 +3 641 595 637 +3 637 595 591 +3 595 581 591 +3 591 581 577 +3 581 535 577 +3 577 535 531 +3 535 507 531 +3 531 507 450 +3 507 440 450 +3 450 440 436 +3 440 412 436 +3 436 412 408 +3 412 373 408 +3 960 943 991 +3 991 943 958 +3 943 905 958 +3 933 1041 897 +3 967 931 963 +3 963 931 917 +3 931 889 917 +3 917 889 874 +3 889 831 874 +3 874 831 817 +3 831 795 817 +3 817 795 777 +3 795 758 777 +3 777 758 748 +3 926 927 887 +3 887 927 892 +3 927 930 892 +3 930 902 892 +3 892 902 848 +3 902 860 848 +3 932 919 953 +3 919 893 953 +3 949 912 907 +3 912 876 907 +3 907 876 871 +3 876 824 871 +3 871 824 808 +3 824 785 808 +3 808 785 727 +3 785 726 727 +3 726 653 727 +3 727 653 628 +3 653 627 628 +3 627 547 628 +3 628 547 548 +3 548 547 456 +3 547 455 456 +3 456 455 433 +3 455 327 433 +3 433 327 328 +3 934 910 960 +3 960 910 943 +3 910 880 943 +3 943 880 905 +3 880 838 905 +3 937 909 904 +3 904 909 863 +3 909 869 863 +3 863 869 832 +3 869 834 832 +3 832 834 789 +3 834 790 789 +3 887 892 840 +3 892 848 840 +3 896 881 934 +3 934 881 910 +3 881 851 910 +3 910 851 880 +3 851 814 880 +3 880 814 838 +3 814 778 838 +3 904 863 843 +3 863 826 843 +3 843 826 812 +3 826 774 812 +3 812 774 768 +3 768 774 727 +3 774 782 727 +3 727 782 789 +3 789 782 832 +3 782 826 832 +3 832 826 863 +3 854 1050 682 +3 1050 1018 682 +3 682 1018 668 +3 668 1018 850 +3 1018 901 850 +3 850 901 776 +3 901 819 776 +3 776 819 800 +3 819 829 800 +3 800 829 809 +3 829 830 809 +3 809 830 806 +3 830 833 806 +3 806 833 788 +3 833 813 788 +3 788 813 764 +3 813 781 764 +3 764 781 737 +3 781 752 737 +3 737 752 704 +3 752 757 704 +3 704 757 721 +3 757 807 721 +3 721 807 728 +3 807 786 728 +3 728 786 729 +3 786 722 729 +3 729 722 626 +3 722 616 626 +3 626 616 550 +3 616 554 550 +3 550 554 498 +3 554 502 498 +3 498 502 424 +3 502 426 424 +3 424 426 379 +3 426 391 379 +3 391 361 379 +3 379 361 345 +3 361 308 345 +3 829 852 830 +3 852 867 830 +3 830 867 833 +3 867 864 833 +3 833 864 813 +3 864 835 813 +3 813 835 781 +3 835 801 781 +3 781 801 752 +3 801 757 752 +3 858 827 847 +3 827 802 847 +3 847 802 823 +3 802 766 823 +3 823 766 784 +3 766 744 784 +3 784 744 756 +3 744 709 756 +3 799 811 859 +3 859 811 860 +3 811 803 860 +3 860 803 848 +3 803 793 848 +3 848 793 840 +3 793 796 840 +3 796 841 840 +3 840 841 887 +3 841 886 887 +3 887 886 926 +3 886 923 926 +3 926 923 942 +3 923 939 942 +3 942 939 966 +3 939 965 966 +3 966 965 986 +3 965 985 986 +3 986 985 1000 +3 985 999 1000 +3 1000 999 1009 +3 999 998 1009 +3 1009 998 997 +3 997 998 979 +3 998 980 979 +3 979 980 961 +3 980 962 961 +3 961 962 936 +3 962 938 936 +3 936 938 922 +3 938 921 922 +3 922 921 891 +3 921 888 891 +3 891 888 857 +3 888 845 857 +3 857 845 815 +3 845 804 815 +3 815 804 761 +3 761 804 746 +3 804 796 746 +3 746 796 741 +3 796 793 741 +3 741 793 735 +3 793 803 735 +3 735 803 742 +3 803 811 742 +3 742 811 753 +3 811 799 753 +3 753 799 697 +3 799 712 697 +3 712 652 697 +3 697 652 664 +3 652 634 664 +3 664 634 630 +3 634 575 630 +3 630 575 570 +3 575 523 570 +3 523 518 570 +3 518 567 570 +3 570 567 623 +3 567 619 623 +3 623 619 656 +3 619 657 656 +3 656 657 686 +3 657 696 686 +3 686 696 746 +3 696 761 746 +3 798 1017 711 +3 794 798 759 +3 798 711 759 +3 789 790 727 +3 727 790 808 +3 790 834 808 +3 808 834 871 +3 834 869 871 +3 871 869 907 +3 869 909 907 +3 907 909 949 +3 909 937 949 +3 949 937 967 +3 967 937 931 +3 937 904 931 +3 931 904 889 +3 904 843 889 +3 889 843 831 +3 843 812 831 +3 831 812 795 +3 812 768 795 +3 795 768 758 +3 768 724 758 +3 758 724 748 +3 724 734 748 +3 734 762 748 +3 748 762 777 +3 762 791 777 +3 777 791 817 +3 791 844 817 +3 817 844 874 +3 844 890 874 +3 874 890 917 +3 890 955 917 +3 917 955 963 +3 955 987 963 +3 987 989 963 +3 963 989 967 +3 989 984 967 +3 967 984 949 +3 984 953 949 +3 949 953 912 +3 953 893 912 +3 912 893 876 +3 893 866 876 +3 876 866 824 +3 866 822 824 +3 824 822 785 +3 822 771 785 +3 785 771 726 +3 771 720 726 +3 726 720 653 +3 720 666 653 +3 653 666 627 +3 666 617 627 +3 627 617 547 +3 617 551 547 +3 547 551 455 +3 551 459 455 +3 455 459 327 +3 459 354 327 +3 327 354 317 +3 354 325 317 +3 317 325 283 +3 325 298 283 +3 283 298 223 +3 298 249 223 +3 223 249 227 +3 249 259 227 +3 227 259 240 +3 259 284 240 +3 240 284 264 +3 284 300 264 +3 264 300 291 +3 300 348 291 +3 291 348 306 +3 348 373 306 +3 306 373 332 +3 373 412 332 +3 332 412 414 +3 412 440 414 +3 414 440 444 +3 440 507 444 +3 444 507 525 +3 507 535 525 +3 525 535 539 +3 535 581 539 +3 539 581 585 +3 581 595 585 +3 585 595 599 +3 595 641 599 +3 599 641 645 +3 641 681 645 +3 645 681 853 +3 681 1049 853 +3 853 1049 1077 +3 1049 1091 1077 +3 1077 1091 1099 +3 1091 1125 1099 +3 1099 1125 1102 +3 1125 1114 1102 +3 1102 1114 1082 +3 1114 1089 1082 +3 1082 1089 1044 +3 1089 1046 1044 +3 1044 1046 1020 +3 1046 1022 1020 +3 1020 1022 978 +3 1022 996 978 +3 978 996 964 +3 996 972 964 +3 964 972 940 +3 972 983 940 +3 940 983 948 +3 948 983 954 +3 983 982 954 +3 954 982 970 +3 982 1010 970 +3 970 1010 1006 +3 1010 1064 1006 +3 1006 1064 1059 +3 1064 1120 1059 +3 1059 1120 1112 +3 1120 1152 1112 +3 1112 1152 1148 +3 1152 1162 1148 +3 1148 1162 1160 +3 1162 1151 1160 +3 1160 1151 1147 +3 1151 1119 1147 +3 1147 1119 1111 +3 1119 1063 1111 +3 1111 1063 1058 +3 1063 1030 1058 +3 1058 1030 1023 +3 1030 1008 1023 +3 1023 1008 995 +3 1008 987 995 +3 995 987 973 +3 987 955 973 +3 973 955 916 +3 955 890 916 +3 916 890 875 +3 890 844 875 +3 875 844 820 +3 844 791 820 +3 820 791 767 +3 791 762 767 +3 767 762 738 +3 762 734 738 +3 738 734 715 +3 734 724 715 +3 715 724 618 +3 724 628 618 +3 618 628 552 +3 628 548 552 +3 552 548 460 +3 548 456 460 +3 460 456 420 +3 456 433 420 +3 420 433 355 +3 433 328 355 +3 355 328 310 +3 328 327 310 +3 310 327 262 +3 327 317 262 +3 262 317 265 +3 317 283 265 +3 265 283 209 +3 283 223 209 +3 209 223 200 +3 223 227 200 +3 200 227 208 +3 227 240 208 +3 208 240 222 +3 240 264 222 +3 222 264 252 +3 264 291 252 +3 252 291 250 +3 291 306 250 +3 250 306 268 +3 306 332 268 +3 268 332 337 +3 332 414 337 +3 337 414 418 +3 414 444 418 +3 418 444 448 +3 444 525 448 +3 448 525 529 +3 525 539 529 +3 529 539 543 +3 539 585 543 +3 543 585 589 +3 585 599 589 +3 589 599 603 +3 599 645 603 +3 603 645 649 +3 645 853 649 +3 649 853 898 +3 853 1077 898 +3 898 1077 1085 +3 1077 1099 1085 +3 1085 1099 1092 +3 1099 1102 1092 +3 1092 1102 1074 +3 1102 1082 1074 +3 1074 1082 1038 +3 1082 1044 1038 +3 1038 1044 1002 +3 1044 1020 1002 +3 1002 1020 951 +3 1020 978 951 +3 951 978 947 +3 978 964 947 +3 947 964 929 +3 964 940 929 +3 929 940 908 +3 940 948 908 +3 908 948 906 +3 948 913 906 +3 906 913 877 +3 913 882 877 +3 877 882 842 +3 882 839 842 +3 842 839 787 +3 839 770 787 +3 787 770 708 +3 770 699 708 +3 708 699 610 +3 699 608 610 +3 610 608 558 +3 608 562 558 +3 558 562 506 +3 562 514 506 +3 506 514 428 +3 514 431 428 +3 428 431 400 +3 431 405 400 +3 400 405 394 +3 405 403 394 +3 826 782 774 +3 759 747 794 +3 794 747 772 +3 747 730 772 +3 772 730 750 +3 730 719 750 +3 750 719 731 +3 719 703 731 +3 731 703 705 +3 746 741 686 +3 741 675 686 +3 686 675 656 +3 741 735 675 +3 730 747 711 +3 747 759 711 +3 768 727 724 +3 727 628 724 +3 721 728 654 +3 728 729 654 +3 654 729 626 +3 776 713 850 +3 713 668 850 +3 713 776 760 +3 776 800 760 +3 760 800 779 +3 800 809 779 +3 779 809 780 +3 809 806 780 +3 780 806 765 +3 806 788 765 +3 765 788 745 +3 788 764 745 +3 745 764 718 +3 764 737 718 +3 718 737 695 +3 737 704 695 +3 695 704 662 +3 704 665 662 +3 662 665 615 +3 665 625 615 +3 615 625 545 +3 625 546 545 +3 545 546 454 +3 546 457 454 +3 454 457 432 +3 457 421 432 +3 432 421 352 +3 421 365 352 +3 352 365 324 +3 365 345 324 +3 324 345 294 +3 345 308 294 +3 294 308 246 +3 308 275 246 +3 275 248 246 +3 246 248 221 +3 248 226 221 +3 221 226 197 +3 226 216 197 +3 197 216 176 +3 216 201 176 +3 176 201 160 +3 201 158 160 +3 160 158 122 +3 158 148 122 +3 122 148 114 +3 148 152 114 +3 114 152 118 +3 152 154 118 +3 118 154 120 +3 154 151 120 +3 120 151 117 +3 151 124 117 +3 117 124 94 +3 124 108 94 +3 94 108 80 +3 108 105 80 +3 80 105 79 +3 105 103 79 +3 79 103 78 +3 103 99 78 +3 78 99 75 +3 99 100 75 +3 75 100 77 +3 713 760 749 +3 760 779 749 +3 749 779 763 +3 779 780 763 +3 763 780 751 +3 780 765 751 +3 751 765 725 +3 765 745 725 +3 725 745 702 +3 745 718 702 +3 702 718 685 +3 718 695 685 +3 685 695 658 +3 695 662 658 +3 658 662 609 +3 662 615 609 +3 609 615 549 +3 615 545 549 +3 545 454 549 +3 549 454 458 +3 454 330 458 +3 458 330 353 +3 330 309 353 +3 353 309 270 +3 309 257 270 +3 270 257 218 +3 257 180 218 +3 218 180 172 +3 180 145 172 +3 172 145 141 +3 145 111 141 +3 141 111 106 +3 111 89 106 +3 106 89 76 +3 89 64 76 +3 76 64 70 +3 70 64 47 +3 64 5 47 +3 47 5 2 +3 5 22 2 +3 22 20 2 +3 20 18 2 +3 18 16 2 +3 16 14 2 +3 14 12 2 +3 12 10 2 +3 2 10 0 +3 10 8 0 +3 8 6 0 +3 6 7 0 +3 7 9 0 +3 9 11 0 +3 0 11 1 +3 11 13 1 +3 13 15 1 +3 15 17 1 +3 17 19 1 +3 19 21 1 +3 21 23 1 +3 1 23 3 +3 23 25 3 +3 3 25 41 +3 25 44 41 +3 41 44 48 +3 44 59 48 +3 48 59 69 +3 59 85 69 +3 69 85 94 +3 94 85 117 +3 85 88 117 +3 117 88 120 +3 88 86 120 +3 120 86 118 +3 86 82 118 +3 118 82 114 +3 82 92 114 +3 114 92 122 +3 92 127 122 +3 122 127 160 +3 127 139 160 +3 160 139 176 +3 139 164 176 +3 176 164 197 +3 164 198 197 +3 197 198 221 +3 198 220 221 +3 221 220 246 +3 246 220 294 +3 220 279 294 +3 294 279 324 +3 279 318 324 +3 324 318 352 +3 318 329 352 +3 352 329 432 +3 329 330 432 +3 432 330 454 +3 713 749 739 +3 749 763 739 +3 739 763 733 +3 763 751 733 +3 733 751 716 +3 751 725 716 +3 716 725 698 +3 725 702 698 +3 698 702 672 +3 702 685 672 +3 672 685 655 +3 685 658 655 +3 655 658 607 +3 658 609 607 +3 607 609 553 +3 609 549 553 +3 553 549 458 +3 713 739 723 +3 739 733 723 +3 723 733 710 +3 733 716 710 +3 710 716 693 +3 716 698 693 +3 693 698 674 +3 698 672 674 +3 674 672 659 +3 672 655 659 +3 659 655 613 +3 655 607 613 +3 613 607 557 +3 607 553 557 +3 557 553 497 +3 553 458 497 +3 497 458 367 +3 458 353 367 +3 367 353 287 +3 353 270 287 +3 270 218 287 +3 287 218 224 +3 218 172 224 +3 224 172 183 +3 172 141 183 +3 183 141 159 +3 141 106 159 +3 159 106 125 +3 106 76 125 +3 125 76 107 +3 76 70 107 +3 713 723 707 +3 723 710 707 +3 707 710 694 +3 710 693 694 +3 693 674 694 +3 694 674 688 +3 674 663 688 +3 688 663 713 +3 663 633 713 +3 713 633 668 +3 633 638 668 +3 668 638 682 +3 638 642 682 +3 682 642 854 +3 642 646 854 +3 854 646 898 +3 898 646 649 +3 646 600 649 +3 649 600 603 +3 600 586 603 +3 603 586 589 +3 586 540 589 +3 589 540 543 +3 540 526 543 +3 543 526 529 +3 526 445 529 +3 529 445 448 +3 448 445 418 +3 445 415 418 +3 418 415 343 +3 415 338 343 +3 343 338 276 +3 338 272 276 +3 276 272 238 +3 272 232 238 +3 232 195 238 +3 238 195 191 +3 195 149 191 +3 191 149 147 +3 149 113 147 +3 147 113 121 +3 113 91 121 +3 91 98 121 +3 121 98 130 +3 98 110 130 +3 130 110 143 +3 110 136 143 +3 143 136 165 +3 136 175 165 +3 165 175 200 +3 200 175 209 +3 175 185 209 +3 209 185 265 +3 185 212 265 +3 265 212 262 +3 212 258 262 +3 262 258 310 +3 258 293 310 +3 310 293 355 +3 293 368 355 +3 355 368 420 +3 368 423 420 +3 420 423 500 +3 423 504 500 +3 500 504 560 +3 504 564 560 +3 560 564 620 +3 564 624 620 +3 620 624 671 +3 624 679 671 +3 671 679 755 +3 679 773 755 +3 755 773 836 +3 773 818 836 +3 836 818 872 +3 818 944 872 +3 872 944 968 +3 944 1035 968 +3 968 1035 1040 +3 1035 1075 1040 +3 1040 1075 1083 +3 1075 1103 1083 +3 1083 1103 1115 +3 1103 1126 1115 +3 1115 1126 1132 +3 1126 1104 1132 +3 1132 1104 1116 +3 1104 1076 1116 +3 1116 1076 1084 +3 1076 1036 1084 +3 1084 1036 1037 +3 1036 896 1037 +3 1037 896 1043 +3 896 934 1043 +3 1043 934 1048 +3 934 960 1048 +3 1048 960 1055 +3 960 991 1055 +3 1055 991 1059 +3 1059 991 1006 +3 1006 991 970 +3 991 958 970 +3 970 958 918 +3 958 905 918 +3 918 905 868 +3 905 838 868 +3 868 838 805 +3 838 778 805 +3 805 778 732 +3 778 717 732 +3 732 717 676 +3 717 673 676 +3 676 673 622 +3 673 632 622 +3 622 632 572 +3 632 636 572 +3 572 636 574 +3 636 594 574 +3 574 594 580 +3 594 584 580 +3 580 584 538 +3 584 542 538 +3 538 542 528 +3 542 530 528 +3 528 530 449 +3 530 446 449 +3 449 446 419 +3 446 416 419 +3 419 416 344 +3 416 339 344 +3 344 339 277 +3 339 273 277 +3 277 273 239 +3 273 233 239 +3 239 233 196 +3 196 233 193 +3 233 190 193 +3 193 190 156 +3 156 190 144 +3 190 184 144 +3 144 184 179 +3 184 219 179 +3 179 219 214 +3 219 254 214 +3 214 254 247 +3 254 302 247 +3 247 302 293 +3 293 302 368 +3 302 383 368 +3 368 383 423 +3 383 425 423 +3 423 425 504 +3 425 512 504 +3 504 512 564 +3 512 568 564 +3 564 568 624 +3 568 631 624 +3 624 631 679 +3 631 691 679 +3 679 691 773 +3 691 775 773 +3 773 775 818 +3 775 900 818 +3 818 900 944 +3 900 1026 944 +3 944 1026 1035 +3 1026 1067 1035 +3 1035 1067 1075 +3 1067 1094 1075 +3 1075 1094 1103 +3 1094 1100 1103 +3 1103 1100 1126 +3 1100 1093 1126 +3 1126 1093 1104 +3 1093 1068 1104 +3 1104 1068 1076 +3 1068 1027 1076 +3 1076 1027 1036 +3 1027 858 1036 +3 1036 858 896 +3 858 847 896 +3 896 847 881 +3 847 823 881 +3 881 823 851 +3 823 784 851 +3 851 784 814 +3 784 756 814 +3 814 756 778 +3 778 756 717 +3 756 709 717 +3 717 709 673 +3 709 680 673 +3 673 680 632 +3 680 651 632 +3 632 651 636 +3 651 640 636 +3 636 640 594 +3 640 598 594 +3 594 598 584 +3 598 588 584 +3 584 588 542 +3 588 544 542 +3 542 544 530 +3 544 527 530 +3 530 527 446 +3 527 442 446 +3 446 442 416 +3 442 438 416 +3 416 438 409 +3 438 435 409 +3 409 435 407 +3 435 430 407 +3 407 430 401 +3 430 429 401 +3 401 429 392 +3 429 427 392 +3 392 427 425 +3 425 427 512 +3 427 516 512 +3 512 516 568 +3 516 571 568 +3 568 571 631 +3 571 635 631 +3 631 635 691 +3 635 714 691 +3 691 714 775 +3 714 849 775 +3 775 849 900 +3 849 1016 900 +3 900 1016 1026 +3 1016 1051 1026 +3 1026 1051 1067 +3 1051 1079 1067 +3 1067 1079 1094 +3 1079 1086 1094 +3 1094 1086 1100 +3 1086 1080 1100 +3 1100 1080 1093 +3 1080 1052 1093 +3 1093 1052 1068 +3 1052 1017 1068 +3 1068 1017 1027 +3 1017 798 1027 +3 1027 798 858 +3 798 794 858 +3 858 794 827 +3 794 772 827 +3 827 772 802 +3 772 750 802 +3 802 750 766 +3 750 731 766 +3 766 731 744 +3 731 705 744 +3 744 705 709 +3 709 705 680 +3 705 692 680 +3 680 692 651 +3 692 711 651 +3 651 711 670 +3 711 1017 670 +3 670 1017 684 +3 1017 1052 684 +3 684 1052 856 +3 1052 1080 856 +3 856 1080 899 +3 1080 1086 899 +3 1086 1079 899 +3 899 1079 855 +3 1079 1051 855 +3 855 1051 683 +3 1051 1016 683 +3 683 1016 669 +3 1016 849 669 +3 849 714 669 +3 714 635 669 +3 669 635 639 +3 635 593 639 +3 639 593 643 +3 593 597 643 +3 643 597 647 +3 597 601 647 +3 647 601 650 +3 601 604 650 +3 650 604 648 +3 604 602 648 +3 648 602 644 +3 602 598 644 +3 598 640 644 +3 644 640 670 +3 640 651 670 +3 730 711 719 +3 711 692 719 +3 719 692 703 +3 692 705 703 +3 708 792 787 +3 787 792 842 +3 792 825 842 +3 842 825 877 +3 825 870 877 +3 877 870 906 +3 870 862 906 +3 906 862 908 +3 862 903 908 +3 908 903 929 +3 903 911 929 +3 929 911 947 +3 911 914 947 +3 947 914 951 +3 914 925 951 +3 951 925 1002 +3 925 969 1002 +3 1002 969 1038 +3 969 1033 1038 +3 1038 1033 1074 +3 1033 1066 1074 +3 1074 1066 1092 +3 1066 1078 1092 +3 1092 1078 1085 +3 1085 1078 898 +3 898 1078 854 +3 854 1078 1050 +3 1078 1066 1050 +3 1050 1066 1028 +3 1066 1033 1028 +3 1028 1033 945 +3 1033 969 945 +3 945 969 873 +3 969 925 873 +3 873 925 884 +3 925 914 884 +3 884 914 885 +3 914 911 885 +3 885 911 883 +3 911 903 883 +3 883 903 846 +3 903 862 846 +3 846 862 810 +3 862 870 810 +3 810 870 807 +3 870 825 807 +3 807 825 786 +3 825 792 786 +3 786 792 722 +3 792 708 722 +3 722 708 616 +3 708 610 616 +3 616 610 554 +3 610 558 554 +3 554 558 502 +3 558 506 502 +3 502 506 426 +3 506 428 426 +3 426 428 391 +3 428 400 391 +3 400 375 391 +3 391 375 361 +3 375 323 361 +3 361 323 308 +3 323 275 308 +3 704 721 665 +3 721 654 665 +3 665 654 625 +3 654 626 625 +3 625 626 546 +3 626 550 546 +3 546 550 461 +3 550 498 461 +3 461 498 422 +3 498 424 422 +3 424 379 422 +3 422 379 365 +3 379 345 365 +3 707 700 713 +3 700 688 713 +3 707 694 700 +3 694 688 700 +3 742 677 735 +3 735 677 675 +3 677 660 675 +3 675 660 656 +3 660 623 656 +3 670 684 644 +3 644 684 648 +3 684 856 648 +3 648 856 650 +3 856 899 650 +3 650 899 647 +3 899 855 647 +3 647 855 643 +3 855 683 643 +3 643 683 639 +3 683 669 639 +3 664 690 697 +3 697 690 753 +3 753 690 742 +3 742 690 677 +3 690 664 677 +3 677 664 660 +3 664 630 660 +3 660 630 623 +3 630 570 623 +3 674 659 663 +3 663 659 621 +3 659 613 621 +3 621 613 561 +3 613 557 561 +3 561 557 501 +3 557 497 501 +3 501 497 378 +3 497 367 378 +3 378 367 299 +3 367 287 299 +3 299 287 224 +3 633 663 629 +3 663 621 629 +3 629 621 565 +3 621 561 565 +3 565 561 505 +3 561 501 505 +3 505 501 389 +3 501 378 389 +3 389 378 313 +3 378 299 313 +3 313 299 241 +3 299 224 241 +3 224 183 241 +3 241 183 205 +3 183 159 205 +3 666 605 617 +3 605 555 617 +3 617 555 551 +3 555 499 551 +3 551 499 459 +3 499 369 459 +3 459 369 354 +3 354 369 325 +3 369 347 325 +3 325 347 298 +3 347 315 298 +3 298 315 249 +3 315 286 249 +3 249 286 259 +3 286 301 259 +3 259 301 284 +3 301 304 284 +3 284 304 300 +3 304 356 300 +3 300 356 348 +3 348 356 373 +3 356 362 373 +3 373 362 371 +3 362 321 371 +3 371 321 335 +3 321 314 335 +3 335 314 364 +3 314 334 364 +3 364 334 381 +3 334 366 381 +3 381 366 386 +3 366 347 386 +3 347 369 386 +3 386 369 503 +3 369 499 503 +3 499 555 503 +3 503 555 559 +3 555 605 559 +3 602 604 590 +3 604 587 590 +3 590 587 541 +3 587 537 541 +3 541 537 509 +3 509 537 452 +3 537 533 452 +3 452 533 524 +3 533 576 524 +3 524 576 519 +3 576 571 519 +3 519 571 516 +3 604 601 587 +3 601 583 587 +3 587 583 537 +3 537 583 533 +3 583 579 533 +3 533 579 576 +3 579 593 576 +3 593 635 576 +3 576 635 571 +3 598 602 588 +3 602 590 588 +3 588 590 544 +3 590 541 544 +3 544 541 527 +3 541 509 527 +3 527 509 442 +3 442 509 438 +3 509 452 438 +3 438 452 435 +3 452 524 435 +3 435 524 430 +3 524 519 430 +3 430 519 429 +3 519 516 429 +3 429 516 427 +3 601 597 583 +3 583 597 579 +3 597 593 579 +3 573 578 592 +3 592 578 596 +3 596 578 582 +3 582 578 532 +3 578 573 532 +3 532 573 521 +3 573 569 521 +3 521 569 517 +3 569 513 517 +3 517 513 406 +3 513 398 406 +3 406 398 382 +3 398 360 382 +3 382 360 316 +3 360 290 316 +3 316 290 256 +3 290 228 256 +3 256 228 211 +3 228 177 211 +3 211 177 142 +3 582 532 536 +3 532 451 536 +3 536 451 508 +3 508 451 437 +3 451 434 437 +3 437 434 411 +3 411 434 406 +3 406 434 517 +3 517 434 521 +3 434 451 521 +3 521 451 532 +3 559 511 503 +3 503 511 386 +3 511 393 386 +3 386 393 381 +3 496 495 494 +3 495 492 494 +3 494 492 493 +3 492 490 493 +3 493 490 491 +3 490 488 491 +3 491 488 489 +3 488 486 489 +3 489 486 487 +3 486 484 487 +3 487 484 485 +3 484 482 485 +3 485 482 483 +3 482 480 483 +3 483 480 481 +3 480 478 481 +3 481 478 479 +3 478 476 479 +3 479 476 477 +3 476 474 477 +3 477 474 475 +3 474 472 475 +3 475 472 473 +3 472 470 473 +3 473 470 471 +3 470 468 471 +3 471 468 469 +3 468 466 469 +3 469 466 467 +3 466 464 467 +3 467 464 465 +3 464 462 465 +3 465 462 463 +3 546 461 457 +3 457 461 421 +3 461 422 421 +3 421 422 365 +3 447 443 510 +3 443 453 510 +3 510 453 534 +3 534 453 522 +3 522 453 439 +3 453 443 439 +3 526 441 445 +3 441 415 445 +3 417 419 340 +3 419 344 340 +3 340 344 274 +3 344 277 274 +3 413 417 333 +3 417 340 333 +3 333 340 269 +3 340 274 269 +3 269 274 230 +3 230 274 234 +3 274 277 234 +3 234 277 239 +3 431 410 405 +3 410 403 405 +3 410 413 374 +3 413 333 374 +3 374 333 307 +3 333 269 307 +3 307 269 251 +3 269 230 251 +3 251 230 207 +3 207 230 188 +3 230 234 188 +3 188 234 194 +3 234 239 194 +3 194 239 196 +3 416 409 339 +3 409 342 339 +3 339 342 281 +3 342 278 281 +3 281 278 225 +3 278 261 225 +3 225 261 219 +3 219 261 254 +3 261 311 254 +3 254 311 302 +3 302 311 383 +3 311 392 383 +3 383 392 425 +3 409 407 342 +3 407 336 342 +3 342 336 278 +3 336 320 278 +3 278 320 261 +3 261 320 311 +3 311 320 392 +3 392 320 401 +3 320 336 401 +3 401 336 407 +3 411 406 399 +3 406 382 399 +3 399 382 350 +3 382 316 350 +3 350 316 297 +3 316 256 297 +3 297 256 237 +3 256 211 237 +3 237 211 178 +3 211 142 178 +3 178 142 131 +3 142 107 131 +3 131 107 104 +3 107 70 104 +3 104 70 68 +3 70 47 68 +3 68 47 58 +3 47 2 58 +3 58 2 61 +3 2 0 61 +3 61 0 57 +3 0 1 57 +3 57 1 55 +3 1 3 55 +3 55 3 66 +3 3 4 66 +3 66 4 49 +3 4 41 49 +3 41 65 49 +3 49 65 71 +3 71 65 90 +3 90 65 100 +3 65 77 100 +3 408 402 404 +3 402 395 404 +3 411 399 387 +3 399 350 387 +3 387 350 322 +3 350 297 322 +3 322 297 282 +3 297 237 282 +3 282 237 217 +3 237 178 217 +3 217 178 166 +3 178 131 166 +3 166 131 126 +3 131 104 126 +3 126 104 93 +3 104 68 93 +3 93 68 84 +3 68 58 84 +3 58 61 84 +3 84 61 87 +3 61 57 87 +3 87 57 83 +3 57 55 83 +3 83 55 81 +3 55 66 81 +3 404 395 390 +3 400 394 388 +3 393 390 381 +3 381 390 364 +3 364 390 380 +3 390 395 380 +3 380 395 396 +3 395 402 396 +3 396 402 373 +3 402 408 373 +3 400 388 375 +3 388 359 375 +3 375 359 323 +3 359 305 323 +3 323 305 275 +3 305 292 275 +3 275 292 248 +3 292 267 248 +3 248 267 226 +3 267 255 226 +3 226 255 216 +3 255 245 216 +3 216 245 201 +3 245 207 201 +3 201 207 158 +3 207 188 158 +3 158 188 148 +3 188 194 148 +3 148 194 152 +3 194 196 152 +3 152 196 154 +3 196 193 154 +3 154 193 151 +3 193 156 151 +3 151 156 124 +3 156 144 124 +3 124 144 108 +3 144 140 108 +3 108 140 105 +3 140 134 105 +3 105 134 103 +3 134 133 103 +3 103 133 99 +3 133 132 99 +3 99 132 100 +3 132 112 100 +3 100 112 90 +3 112 96 90 +3 90 96 71 +3 96 101 71 +3 71 101 73 +3 101 98 73 +3 73 98 66 +3 98 91 66 +3 66 91 81 +3 91 113 81 +3 81 113 115 +3 113 149 115 +3 115 149 153 +3 149 195 153 +3 153 195 192 +3 195 232 192 +3 192 232 189 +3 232 235 189 +3 189 235 242 +3 235 280 242 +3 242 280 285 +3 280 346 285 +3 285 346 351 +3 346 411 351 +3 411 387 376 +3 387 322 376 +3 376 322 312 +3 322 282 312 +3 312 282 253 +3 282 217 253 +3 253 217 203 +3 217 166 203 +3 203 166 163 +3 166 126 163 +3 163 126 123 +3 126 93 123 +3 123 93 116 +3 93 84 116 +3 84 87 116 +3 116 87 119 +3 87 83 119 +3 119 83 115 +3 83 81 115 +3 380 396 384 +3 396 373 384 +3 373 371 384 +3 371 335 384 +3 384 335 380 +3 335 364 380 +3 411 376 370 +3 376 312 370 +3 370 312 296 +3 312 253 296 +3 296 253 244 +3 253 203 244 +3 244 203 199 +3 203 163 199 +3 199 163 155 +3 163 123 155 +3 155 123 150 +3 123 116 150 +3 116 119 150 +3 150 119 153 +3 119 115 153 +3 410 374 403 +3 374 397 403 +3 403 397 394 +3 397 377 394 +3 394 377 388 +3 388 377 359 +3 377 331 359 +3 359 331 305 +3 331 319 305 +3 305 319 292 +3 319 303 292 +3 292 303 267 +3 303 295 267 +3 267 295 255 +3 295 288 255 +3 255 288 245 +3 288 251 245 +3 245 251 207 +3 411 370 358 +3 370 296 358 +3 358 296 289 +3 296 244 289 +3 289 244 242 +3 244 199 242 +3 242 199 189 +3 199 155 189 +3 189 155 192 +3 155 150 192 +3 192 150 153 +3 363 372 374 +3 372 385 374 +3 374 385 397 +3 397 385 377 +3 377 385 331 +3 385 372 331 +3 331 372 319 +3 372 363 319 +3 319 363 303 +3 303 363 357 +3 363 374 357 +3 357 374 349 +3 374 307 349 +3 349 307 288 +3 307 251 288 +3 411 358 351 +3 358 289 351 +3 351 289 285 +3 289 242 285 +3 347 366 315 +3 366 334 315 +3 315 334 286 +3 334 314 286 +3 286 314 301 +3 314 321 301 +3 301 321 304 +3 321 362 304 +3 304 362 356 +3 411 346 341 +3 346 280 341 +3 418 343 337 +3 343 271 337 +3 337 271 268 +3 271 229 268 +3 268 229 250 +3 229 206 250 +3 250 206 252 +3 206 215 252 +3 252 215 222 +3 215 182 222 +3 222 182 208 +3 182 165 208 +3 208 165 200 +3 330 329 309 +3 329 263 309 +3 309 263 257 +3 263 213 257 +3 257 213 180 +3 213 169 180 +3 180 169 145 +3 169 138 145 +3 145 138 111 +3 138 97 111 +3 111 97 89 +3 97 72 89 +3 89 72 64 +3 72 50 64 +3 64 50 5 +3 50 42 5 +3 5 42 43 +3 42 67 43 +3 43 67 56 +3 67 82 56 +3 82 86 56 +3 56 86 60 +3 86 88 60 +3 60 88 62 +3 88 85 62 +3 85 59 62 +3 59 44 62 +3 62 44 46 +3 44 37 46 +3 37 38 46 +3 38 40 46 +3 40 39 46 +3 39 36 46 +3 46 36 45 +3 36 34 45 +3 34 32 45 +3 32 30 45 +3 30 28 45 +3 28 26 45 +3 26 24 45 +3 45 24 43 +3 24 22 43 +3 43 22 5 +3 329 318 263 +3 263 318 266 +3 318 279 266 +3 279 204 266 +3 266 204 186 +3 204 173 186 +3 186 173 162 +3 173 135 162 +3 162 135 129 +3 135 109 129 +3 129 109 102 +3 109 95 102 +3 102 95 74 +3 95 67 74 +3 74 67 50 +3 67 42 50 +3 389 313 326 +3 326 313 260 +3 313 241 260 +3 260 241 205 +3 303 357 295 +3 357 349 295 +3 295 349 288 +3 339 281 273 +3 281 236 273 +3 273 236 233 +3 233 236 190 +3 190 236 184 +3 236 225 184 +3 184 225 219 +3 343 276 271 +3 276 231 271 +3 271 231 229 +3 231 187 229 +3 229 187 206 +3 187 157 206 +3 206 157 171 +3 157 130 171 +3 130 143 171 +3 171 143 182 +3 143 165 182 +3 263 266 213 +3 266 186 213 +3 213 186 169 +3 186 162 169 +3 169 162 138 +3 162 129 138 +3 138 129 97 +3 129 102 97 +3 97 102 72 +3 102 74 72 +3 72 74 50 +3 276 238 231 +3 238 191 231 +3 231 191 187 +3 191 147 187 +3 187 147 157 +3 147 121 157 +3 157 121 130 +3 236 281 225 +3 232 272 235 +3 235 272 280 +3 272 338 280 +3 280 338 341 +3 341 338 411 +3 338 415 411 +3 411 415 437 +3 415 441 437 +3 437 441 508 +3 441 526 508 +3 526 540 508 +3 508 540 536 +3 540 586 536 +3 536 586 582 +3 586 600 582 +3 582 600 596 +3 600 646 596 +3 646 642 596 +3 596 642 592 +3 642 638 592 +3 638 633 592 +3 592 633 573 +3 633 629 573 +3 573 629 569 +3 629 565 569 +3 569 565 513 +3 565 505 513 +3 513 505 398 +3 505 389 398 +3 398 389 360 +3 389 326 360 +3 360 326 290 +3 326 260 290 +3 290 260 228 +3 260 205 228 +3 228 205 177 +3 205 159 177 +3 159 125 177 +3 177 125 142 +3 125 107 142 +3 279 220 204 +3 220 198 204 +3 204 198 173 +3 198 164 173 +3 173 164 135 +3 164 139 135 +3 135 139 109 +3 139 127 109 +3 109 127 95 +3 127 92 95 +3 95 92 67 +3 92 82 67 +3 210 243 202 +3 243 181 202 +3 182 215 171 +3 215 206 171 +3 144 179 140 +3 140 179 174 +3 179 214 174 +3 174 214 210 +3 214 247 210 +3 210 247 243 +3 247 293 243 +3 293 258 243 +3 243 258 181 +3 258 212 181 +3 181 212 168 +3 212 185 168 +3 168 185 161 +3 185 175 161 +3 175 136 161 +3 161 136 128 +3 136 110 128 +3 128 110 101 +3 110 98 101 +3 140 174 134 +3 134 174 170 +3 174 210 170 +3 210 202 170 +3 170 202 167 +3 202 181 167 +3 167 181 146 +3 181 168 146 +3 146 168 137 +3 168 161 137 +3 161 128 137 +3 137 128 96 +3 128 101 96 +3 134 170 133 +3 170 167 133 +3 133 167 132 +3 167 146 132 +3 132 146 112 +3 146 137 112 +3 112 137 96 +3 94 80 69 +3 69 80 63 +3 80 79 63 +3 79 54 63 +3 63 54 48 +3 54 41 48 +3 79 78 54 +3 78 53 54 +3 54 53 41 +3 78 75 53 +3 75 51 53 +3 53 51 41 +3 75 77 51 +3 71 73 49 +3 73 66 49 +3 77 65 52 +3 65 41 52 +3 69 63 48 +3 77 52 51 +3 52 41 51 +3 62 46 60 +3 46 45 60 +3 60 45 56 +3 45 43 56 +3 39 493 36 +3 493 491 36 +3 36 491 34 +3 491 489 34 +3 34 489 32 +3 489 487 32 +3 32 487 30 +3 487 485 30 +3 30 485 28 +3 485 483 28 +3 28 483 26 +3 483 481 26 +3 26 481 24 +3 481 479 24 +3 24 479 22 +3 479 477 22 +3 22 477 20 +3 477 475 20 +3 20 475 18 +3 475 473 18 +3 18 473 16 +3 473 471 16 +3 16 471 14 +3 471 469 14 +3 14 469 12 +3 469 467 12 +3 12 467 10 +3 467 465 10 +3 10 465 8 +3 465 463 8 +3 8 463 6 +3 463 462 6 +3 6 462 7 +3 462 464 7 +3 7 464 9 +3 464 466 9 +3 9 466 11 +3 466 468 11 +3 11 468 13 +3 468 470 13 +3 13 470 15 +3 470 472 15 +3 15 472 17 +3 472 474 17 +3 17 474 19 +3 474 476 19 +3 19 476 21 +3 476 478 21 +3 21 478 23 +3 478 480 23 +3 23 480 25 +3 480 482 25 +3 25 482 27 +3 482 484 27 +3 27 484 29 +3 484 486 29 +3 29 486 31 +3 486 488 31 +3 31 488 33 +3 488 490 33 +3 33 490 35 +3 490 492 35 +3 35 492 37 +3 492 495 37 +3 37 495 38 +3 38 495 40 +3 495 496 40 +3 40 496 39 +3 496 494 39 +3 39 494 493 +3 37 44 35 +3 35 44 33 +3 33 44 31 +3 31 44 29 +3 29 44 27 +3 44 25 27 +3 41 4 3 + diff --git a/AABB_tree/benchmark/AABB_tree/test.cpp b/AABB_tree/benchmark/AABB_tree/test.cpp new file mode 100644 index 00000000000..22ebbbb08e5 --- /dev/null +++ b/AABB_tree/benchmark/AABB_tree/test.cpp @@ -0,0 +1,176 @@ +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include + +typedef CGAL::Exact_predicates_inexact_constructions_kernel K; +typedef CGAL::Surface_mesh Surface_mesh; + +typedef CGAL::AABB_face_graph_triangle_primitive Primitive; +typedef CGAL::AABB_do_intersect_transform_traits Traits; +typedef CGAL::AABB_tree Tree; + +namespace PMP = CGAL::Polygon_mesh_processing; + +void naive_test(int k, const char* fname, + int& nb_inter, int& nb_no_inter, int& nb_include) +{ + std::ifstream input(fname); + Surface_mesh tm, tm2; + input >> tm; + copy_face_graph(tm, tm2); + CGAL::Aff_transformation_3 init1(CGAL::SCALING, 6.0); + PMP::transform(init1, tm); + CGAL::Bbox_3 box = PMP::bbox(tm); + typedef CGAL::AABB_tree > Tree; + Tree tmTree(tm.faces_begin(), tm.faces_end(), tm); + Tree tmTree2(tm2.faces_begin(), tm2.faces_end(), tm2); + CGAL::Aff_transformation_3 init2(CGAL::TRANSLATION, - K::Vector_3( + (box.xmax()-box.xmin()),0,0)); + PMP::transform(init2, tm2); + + tmTree.build(); + K::Vector_3 unit_vec = (2.0/k * K::Vector_3((box.xmax()-box.xmin()), + 0, + 0)); + CGAL::Aff_transformation_3 T0(CGAL::IDENTITY); + K::FT rot[9]; + rot[0] = 1.0; + rot[1] = 0.0; + rot[2] = 0.0; + rot[3] = 0.0; + rot[4] = std::cos(CGAL_PI/4.0); + rot[5] = -std::sin(CGAL_PI/4.0); + rot[6] = 0.0; + rot[7] = std::sin(CGAL_PI/4.0); + rot[8] = std::cos(CGAL_PI/4.0); + CGAL::Aff_transformation_3 R(rot[0], rot[1], rot[2], + rot[3], rot[4], rot[5], + rot[6], rot[7], rot[8]); + + CGAL::Side_of_triangle_mesh sotm1(tm); + for(int i=1; i T1 = CGAL::Aff_transformation_3(CGAL::TRANSLATION, i*unit_vec); + CGAL::Aff_transformation_3 transfo = T0*R*T1; + PMP::transform(transfo, tm2); + tmTree2.build(); + if(tmTree2.do_intersect(tmTree)) + ++nb_inter; + else + { + if(sotm1(tm2.point(*tm2.vertices().begin())) != CGAL::ON_UNBOUNDED_SIDE) + { + ++nb_include; + } + else + { + CGAL::Side_of_triangle_mesh sotm2(tm2); + if(sotm2(tm.point(*tm.vertices().begin())) != CGAL::ON_UNBOUNDED_SIDE) + ++nb_include; + else + ++nb_no_inter; + } + } + T0 = CGAL::Aff_transformation_3(CGAL::TRANSLATION, -i*unit_vec); + } +} +void test_no_collision(int k, const char* fname, + int& nb_inter, int& nb_no_inter, int& nb_include) +{ + std::ifstream input(fname); + Surface_mesh tm, tm2; + input >> tm; + copy_face_graph(tm, tm2); + CGAL::Aff_transformation_3 init1(CGAL::SCALING, 6.0); + PMP::transform(init1, tm); + CGAL::Bbox_3 box = PMP::bbox(tm); + Tree tmTree(tm.faces_begin(), tm.faces_end(), tm); + Tree tmTree2(tm2.faces_begin(), tm2.faces_end(), tm2); + CGAL::Aff_transformation_3 init2(CGAL::TRANSLATION, - K::Vector_3( + (box.xmax()-box.xmin()),0,0)); + PMP::transform(init2, tm2); + + tmTree.build(); + tmTree2.build(); + typedef boost::property_map::type VPM; + VPM vpm2 = get(CGAL::vertex_point, tm2); + + K::Vector_3 unit_vec = (2.0/k * K::Vector_3((box.xmax()-box.xmin()), + 0, + 0)); + + CGAL::Side_of_triangle_mesh sotm1(tmTree); + for(int i=1; i R(rot[0], rot[1], rot[2], + rot[3], rot[4], rot[5], + rot[6], rot[7], rot[8]); + CGAL::Aff_transformation_3 T1 = CGAL::Aff_transformation_3(CGAL::TRANSLATION, i*unit_vec); + CGAL::Aff_transformation_3 transfo = R*T1; + tmTree2.traits().set_transformation(transfo); + CGAL::Interval_nt_advanced::Protector protector; + if(tmTree2.do_intersect(tmTree)) + ++nb_inter; + else + { + if(sotm1(transfo.transform(vpm2[*tm2.vertices().begin()])) != CGAL::ON_UNBOUNDED_SIDE) + { + ++nb_include; + } + else + { + CGAL::Side_of_triangle_mesh sotm2(tmTree2); + if(sotm2(tm.point(*tm.vertices().begin())) != CGAL::ON_UNBOUNDED_SIDE) + ++nb_include; + else + ++nb_no_inter; + } + } + } +} + +int main(int argc, const char** argv) +{ + int k = (argc>1) ? atoi(argv[1]) : 10; + const char* path = (argc>2)?argv[2]:"data/handle" + ".off"; + + std::cout<< k<<" steps in "<(end - start).count() << "μs." << std::endl; + start = std::chrono::steady_clock::now(); + test_no_collision(k, path,nb_inter, nb_no_inter, nb_include); + end = std::chrono::steady_clock::now(); + std::cout<<"With transform_traits: "<(end - start).count() << "μs." << std::endl; + return 0; +} diff --git a/AABB_tree/demo/AABB_tree/CMakeLists.txt b/AABB_tree/demo/AABB_tree/CMakeLists.txt index 67d82685b54..11a5922ccf6 100644 --- a/AABB_tree/demo/AABB_tree/CMakeLists.txt +++ b/AABB_tree/demo/AABB_tree/CMakeLists.txt @@ -17,7 +17,7 @@ if(POLICY CMP0071) endif() # Include this package's headers first -include_directories( BEFORE ./ ./include ../../include ) +include_directories( BEFORE ./ ./include ) # Find CGAL and CGAL Qt5 find_package(CGAL COMPONENTS Qt5) @@ -25,9 +25,6 @@ find_package(CGAL COMPONENTS Qt5) # Find Qt5 itself find_package(Qt5 QUIET COMPONENTS Xml Script OpenGL Gui Svg) -include( ${CGAL_USE_FILE} ) - - if(CGAL_FOUND AND CGAL_Qt5_FOUND AND Qt5_FOUND) qt5_wrap_ui( UI_FILES MainWindow.ui ) diff --git a/AABB_tree/doc/AABB_tree/Concepts/AABBGeomTraits.h b/AABB_tree/doc/AABB_tree/Concepts/AABBGeomTraits.h index ec017f1efe3..c5b4eb97f1b 100644 --- a/AABB_tree/doc/AABB_tree/Concepts/AABBGeomTraits.h +++ b/AABB_tree/doc/AABB_tree/Concepts/AABBGeomTraits.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAABB_treeConcepts +\ingroup PkgAABBTreeConcepts \cgalConcept The concept `AABBGeomTraits` defines the requirements for the first template parameter of the class `CGAL::AABB_traits`. It provides predicates and constructors to detect and compute intersections between query objects and the primitives stored in the AABB tree. In addition, it contains predicates and constructors to compute distances between a point query and the primitives stored in the AABB tree. diff --git a/AABB_tree/doc/AABB_tree/Concepts/AABBPrimitive.h b/AABB_tree/doc/AABB_tree/Concepts/AABBPrimitive.h index 93a4b42efee..64962d12741 100644 --- a/AABB_tree/doc/AABB_tree/Concepts/AABBPrimitive.h +++ b/AABB_tree/doc/AABB_tree/Concepts/AABBPrimitive.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAABB_treeConcepts +\ingroup PkgAABBTreeConcepts \cgalConcept The concept `AABBPrimitive` describes the requirements for the primitives stored in the AABB tree data structure. The concept encapsulates a type for the input datum (a geometric object) and an identifier (id) type through which those primitives are referred to. The concept `AABBPrimitive` also refines the concepts DefaultConstructible and Assignable. diff --git a/AABB_tree/doc/AABB_tree/Concepts/AABBPrimitiveWithSharedData.h b/AABB_tree/doc/AABB_tree/Concepts/AABBPrimitiveWithSharedData.h index 406c581c415..fb740edf212 100644 --- a/AABB_tree/doc/AABB_tree/Concepts/AABBPrimitiveWithSharedData.h +++ b/AABB_tree/doc/AABB_tree/Concepts/AABBPrimitiveWithSharedData.h @@ -1,5 +1,5 @@ /*! -\ingroup PkgAABB_treeConcepts +\ingroup PkgAABBTreeConcepts \cgalConcept The concept `AABBPrimitiveWithSharedData` describes the requirements for the primitives diff --git a/AABB_tree/doc/AABB_tree/Concepts/AABBRayIntersectionGeomTraits.h b/AABB_tree/doc/AABB_tree/Concepts/AABBRayIntersectionGeomTraits.h index 9cbf77a1183..22ce34118d3 100644 --- a/AABB_tree/doc/AABB_tree/Concepts/AABBRayIntersectionGeomTraits.h +++ b/AABB_tree/doc/AABB_tree/Concepts/AABBRayIntersectionGeomTraits.h @@ -1,5 +1,5 @@ /*! -\ingroup PkgAABB_treeConcepts +\ingroup PkgAABBTreeConcepts \cgalConcept The concept `AABBRayIntersectionGeomTraits` is a refinement of the diff --git a/AABB_tree/doc/AABB_tree/Concepts/AABBRayIntersectionTraits.h b/AABB_tree/doc/AABB_tree/Concepts/AABBRayIntersectionTraits.h index 68d3d4d3a68..dfe82f27d01 100644 --- a/AABB_tree/doc/AABB_tree/Concepts/AABBRayIntersectionTraits.h +++ b/AABB_tree/doc/AABB_tree/Concepts/AABBRayIntersectionTraits.h @@ -1,5 +1,5 @@ /*! -\ingroup PkgAABB_treeConcepts +\ingroup PkgAABBTreeConcepts \cgalConcept The concept `AABBRayIntersectionTraits` is a refinement of the concept diff --git a/AABB_tree/doc/AABB_tree/Concepts/AABBTraits.h b/AABB_tree/doc/AABB_tree/Concepts/AABBTraits.h index 123bda80c47..3f9cc9a9be3 100644 --- a/AABB_tree/doc/AABB_tree/Concepts/AABBTraits.h +++ b/AABB_tree/doc/AABB_tree/Concepts/AABBTraits.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAABB_treeConcepts +\ingroup PkgAABBTreeConcepts \cgalConcept The concept `AABBTraits` provides the geometric primitive types and methods for the class `CGAL::AABB_tree`. @@ -75,25 +75,17 @@ using Intersection_and_primitive_id = unspecified_type; /// \name Splitting /// During the construction of the AABB tree, the primitives are -/// sorted according to some comparison functions related to the \f$x\f$, -/// \f$ y\f$ or \f$ z\f$ coordinate axis: +/// splitted according to some comparison functions related to the longest axis: /// @{ /*! -A functor object to split a range of primitives into two sub-ranges along the X-axis. Provides the operator: -`void operator()(InputIterator first, InputIterator beyond);` %Iterator type `InputIterator` must be a model of RandomAccessIterator and have `Primitive` as value type. The operator is used for determining the primitives assigned to the two children nodes of a given node, assuming that the goal is to split the X-dimension of the bounding box of the node. The primitives assigned to this node are passed as argument to the operator. It should modify the iterator range in such a way that its first half and its second half correspond to the two children nodes. +A functor object to split a range of primitives into two sub-ranges along the longest axis. Provides the operator: + `void operator()(InputIterator first, InputIterator beyond);` %Iterator type `InputIterator` must be a model of RandomAccessIterator + and have `Primitive` as value type. The operator is used for determining the primitives assigned to the two children nodes of a given node, + assuming that the goal is to split the chosen axis dimension of the bounding box of the node. The primitives assigned to this node are passed as argument + to the operator. It should modify the iterator range in such a way that its first half and its second half correspond to the two children nodes. */ -typedef unspecified_type Split_primitives_along_x_axis; - -/*! -A functor object to split a range of primitives into two sub-ranges along the Y-axis. See `Split_primitives_along_x_axis` for the detailed description. -*/ -typedef unspecified_type Split_primitives_along_y_axis; - -/*! -A functor object to split a range of primitives into two sub-ranges along the Z-axis. See `Split_primitives_along_x_axis` for the detailed description. -*/ -typedef unspecified_type Split_primitives_along_z_axis; +typedef unspecified_type Split_primitives; /*! A functor object to compute the bounding box of a set of primitives. Provides the operator: @@ -132,7 +124,7 @@ A functor object to compute the intersection of a query and a primitive. Provide \cgalHeading{Note on Backward Compatibility} Before the release 4.3 of \cgal, the return type of this function used to be `boost::optional`. */ -typedef unspecified_type Intersect; +typedef unspecified_type Intersection; /// \name Distance Queries /// The following predicates are required for each @@ -170,19 +162,9 @@ typedef unspecified_type Equal_3; /// @{ /*! -Returns the primitive splitting functor for the X axis. +Returns the primitive splitting functor. */ -Split_primitives_along_x_axis split_primitives_along_x_axis_object(); - -/*! -Returns the primitive splitting functor for the Y axis. -*/ -Split_primitives_along_y_axis split_primitives_along_y_axis_object(); - -/*! -Returns the primitive splitting functor for the Z axis. -*/ -Split_primitives_along_z_axis split_primitives_along_z_axis_object(); +Split_primitives split_primitives_object(); /*! Returns the bounding box constructor. @@ -197,7 +179,7 @@ Do_intersect do_intersect_object(); /*! Returns the intersection constructor. */ -Intersect intersect_object(); +Intersection intersection_object(); /*! Returns the distance comparison functor. diff --git a/AABB_tree/doc/AABB_tree/PackageDescription.txt b/AABB_tree/doc/AABB_tree/PackageDescription.txt index e94a561f00a..7df50a91fd1 100644 --- a/AABB_tree/doc/AABB_tree/PackageDescription.txt +++ b/AABB_tree/doc/AABB_tree/PackageDescription.txt @@ -1,16 +1,16 @@ -/// \defgroup PkgAABB_tree AABB Tree Reference +/// \defgroup PkgAABBTreeRef AABB Tree Reference -/// \defgroup PkgAABB_treeConcepts Concepts -/// \ingroup PkgAABB_tree +/// \defgroup PkgAABBTreeConcepts Concepts +/// \ingroup PkgAABBTreeRef /*! -\addtogroup PkgAABB_tree -\cgalPkgDescriptionBegin{3D Fast Intersection and Distance Computation,PkgAABB_treeSummary} +\addtogroup PkgAABBTreeRef +\cgalPkgDescriptionBegin{3D Fast Intersection and Distance Computation,PkgAABBTree} \cgalPkgPicture{aabb-teaser-thumb.png} \cgalPkgSummaryBegin \cgalPkgAuthors{Pierre Alliez, Stéphane Tayeb, Camille Wormser} \cgalPkgDesc{The AABB (axis-aligned bounding box) tree component offers a static data structure and algorithms to perform efficient intersection and distance queries on sets of finite 3D geometric objects.} -\cgalPkgManuals{Chapter_3D_Fast_Intersection_and_Distance_Computation,PkgAABB_tree} +\cgalPkgManuals{Chapter_3D_Fast_Intersection_and_Distance_Computation,PkgAABBTreeRef} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{3.5} diff --git a/AABB_tree/examples/AABB_tree/CMakeLists.txt b/AABB_tree/examples/AABB_tree/CMakeLists.txt index 4119933bf05..c3317a79f65 100644 --- a/AABB_tree/examples/AABB_tree/CMakeLists.txt +++ b/AABB_tree/examples/AABB_tree/CMakeLists.txt @@ -4,18 +4,12 @@ project( AABB_tree_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/AABB_tree/include/CGAL/AABB_face_graph_triangle_primitive.h b/AABB_tree/include/CGAL/AABB_face_graph_triangle_primitive.h index 83e01c72d6c..7663d0d78c7 100644 --- a/AABB_tree/include/CGAL/AABB_face_graph_triangle_primitive.h +++ b/AABB_tree/include/CGAL/AABB_face_graph_triangle_primitive.h @@ -30,11 +30,12 @@ #include #include #include +#include namespace CGAL { /*! - * \ingroup PkgAABB_tree + * \ingroup PkgAABBTreeRef * Primitive type for a facet of a polyhedral surface. * It wraps a handle to a facet of a polyhedron to a 3D triangle. * The polyhedron from which the primitive is built should not be deleted @@ -65,24 +66,27 @@ template < class FaceGraph, class CacheDatum=Tag_false > class AABB_face_graph_triangle_primitive #ifndef DOXYGEN_RUNNING - : public AABB_primitive::face_descriptor, + : public AABB_primitive::face_descriptor, + std::pair::face_descriptor, const FaceGraph*> >::type, Triangle_from_face_descriptor_map< FaceGraph, typename Default::Get::type >::type>, + vertex_point_t>::const_type >::type>, One_point_from_face_descriptor_map< FaceGraph, typename Default::Get::type >::type>, + vertex_point_t>::const_type >::type>, OneFaceGraphPerTree, CacheDatum > #endif { - typedef typename Default::Get::type >::type VertexPointPMap_; + typedef typename Default::Get::const_type >::type VertexPointPMap_; + typedef typename boost::graph_traits::face_descriptor FD; + typedef typename boost::mpl::if_ >::type Id_; - typedef typename boost::graph_traits::face_descriptor Id_; typedef Triangle_from_face_descriptor_map Triangle_property_map; typedef One_point_from_face_descriptor_map Point_property_map; @@ -92,6 +96,16 @@ class AABB_face_graph_triangle_primitive OneFaceGraphPerTree, CacheDatum > Base; + FD make_id(FD fd, const FaceGraph&, Tag_true) + { + return fd; + } + + std::pair make_id(FD fd, const FaceGraph& fg, Tag_false) + { + return std::make_pair(fd, &fg); + } + public: #ifdef DOXYGEN_RUNNING /// \name Types @@ -105,9 +119,12 @@ public: */ typedef Kernel_traits::Kernel::Triangle_3 Datum; /*! - Id type. + Id type: + - `boost::graph_traits::%face_descriptor` if `OneFaceGraphPerTree` is `CGAL::Tag_true` + - `std::pair::%face_descriptor, FaceGraph>` if `OneFaceGraphPerTree` is `CGAL::Tag_false` */ - typedef boost::graph_traits::face_descriptor Id; + unspecified_type Id; + /// @} /*! @@ -117,6 +134,7 @@ public: #else typedef typename Base::Id Id; #endif + typedef typename boost::graph_traits::face_descriptor face_descriptor; // constructors /*! @@ -127,7 +145,7 @@ public: */ template AABB_face_graph_triangle_primitive(Iterator it, const FaceGraph& graph, VertexPointPMap_ vppm) - : Base( Id_(*it), + : Base( Id_(make_id(*it, graph, OneFaceGraphPerTree())), Triangle_property_map(const_cast(&graph),vppm), Point_property_map(const_cast(&graph),vppm) ) {} @@ -137,8 +155,8 @@ public: If `VertexPointPMap` is the default of the class, an additional constructor is available with `vppm` set to `get(vertex_point, graph)`. */ - AABB_face_graph_triangle_primitive(Id id, const FaceGraph& graph, VertexPointPMap_ vppm) - : Base( Id_(id), + AABB_face_graph_triangle_primitive(face_descriptor fd, const FaceGraph& graph, VertexPointPMap_ vppm) + : Base( Id_(make_id(fd, graph, OneFaceGraphPerTree())), Triangle_property_map(const_cast(&graph),vppm), Point_property_map(const_cast(&graph),vppm) ) {} @@ -146,13 +164,13 @@ public: #ifndef DOXYGEN_RUNNING template AABB_face_graph_triangle_primitive(Iterator it, const FaceGraph& graph) - : Base( Id_(*it), + : Base( Id_(make_id(*it, graph, OneFaceGraphPerTree())), Triangle_property_map(const_cast(&graph)), Point_property_map(const_cast(&graph)) ) {} - AABB_face_graph_triangle_primitive(Id id, const FaceGraph& graph) - : Base( Id_(id), + AABB_face_graph_triangle_primitive(face_descriptor fd, const FaceGraph& graph) + : Base( Id_(make_id(fd, graph, OneFaceGraphPerTree())), Triangle_property_map(const_cast(&graph)), Point_property_map(const_cast(&graph)) ) {} diff --git a/AABB_tree/include/CGAL/AABB_halfedge_graph_segment_primitive.h b/AABB_tree/include/CGAL/AABB_halfedge_graph_segment_primitive.h index 1a0dc4eb616..1eb27965e6c 100644 --- a/AABB_tree/include/CGAL/AABB_halfedge_graph_segment_primitive.h +++ b/AABB_tree/include/CGAL/AABB_halfedge_graph_segment_primitive.h @@ -35,6 +35,7 @@ #include #include #include +#include #include @@ -42,7 +43,7 @@ namespace CGAL { /*! - * \ingroup PkgAABB_tree + * \ingroup PkgAABBTreeRef * Primitive type for a edge of a polyhedral surface. * It wraps an `edge_descriptor` into a 3D segment. * The class model of `HalfedgeGraph` from which the primitive is built should not be deleted @@ -78,7 +79,9 @@ template < class HalfedgeGraph, class CacheDatum = Tag_false > class AABB_halfedge_graph_segment_primitive #ifndef DOXYGEN_RUNNING - : public AABB_primitive< typename boost::graph_traits::edge_descriptor, + : public AABB_primitive< typename boost::mpl::if_::edge_descriptor, + std::pair::edge_descriptor, const HalfedgeGraph*> >::type, Segment_from_edge_descriptor_map< HalfedgeGraph, typename Default::Get::type >::type VertexPointPMap_; + typedef typename boost::graph_traits::edge_descriptor ED; + typedef typename boost::mpl::if_ >::type Id_; - typedef typename boost::graph_traits::edge_descriptor Id_; typedef Segment_from_edge_descriptor_map Segment_property_map; typedef Source_point_from_edge_descriptor_map Point_property_map; @@ -105,6 +109,16 @@ class AABB_halfedge_graph_segment_primitive OneHalfedgeGraphPerTree, CacheDatum > Base; + ED make_id(ED ed, const HalfedgeGraph&, Tag_true) + { + return ed; + } + + std::pair make_id(ED ed, const HalfedgeGraph& fg, Tag_false) + { + return std::make_pair(ed, &fg); + } + public: #ifdef DOXYGEN_RUNNING @@ -119,18 +133,21 @@ public: */ typedef Kernel_traits::Kernel::Segment_3 Datum; /*! - Id type. + Id type: + - `boost::graph_traits::%edge_descriptor if `OneHalfedgeGraphPerTree` is `Tag_true` + - `std::pair::edge_descriptor, HalfedgeGraph>` if `OneHalfedgeGraphPerTree` is `Tag_false` */ - typedef boost::graph_traits::edge_descriptor Id; + unspecified_type Id; /// @} /*! - If `OneHalfedgeGraphPerTreeGraphPerTree` is CGAL::Tag_true, constructs a `Shared_data` object from a reference to the halfedge graph. + If `OneHalfedgeGraphPerTree` is CGAL::Tag_true, constructs a `Shared_data` object from a reference to the halfedge graph. */ static unspecified_type construct_shared_data( HalfedgeGraph& graph ); #else typedef typename Base::Id Id; #endif + typedef typename boost::graph_traits::edge_descriptor edge_descriptor; /*! Constructs a primitive. @@ -142,7 +159,7 @@ public: */ template AABB_halfedge_graph_segment_primitive(Iterator it, const HalfedgeGraph& graph, VertexPointPMap_ vppm) - : Base( Id_(*it), + : Base( Id_(make_id(*it, graph, OneHalfedgeGraphPerTree())), Segment_property_map(const_cast(&graph), vppm), Point_property_map(const_cast(&graph), vppm) ) {} @@ -152,8 +169,8 @@ public: If `VertexPointPMap` is the default of the class, an additional constructor is available with `vppm` set to `boost::get(vertex_point, graph)`. */ - AABB_halfedge_graph_segment_primitive(Id id, const HalfedgeGraph& graph, VertexPointPMap_ vppm) - : Base( Id_(id), + AABB_halfedge_graph_segment_primitive(edge_descriptor ed, const HalfedgeGraph& graph, VertexPointPMap_ vppm) + : Base( Id_(make_id(ed, graph, OneHalfedgeGraphPerTree())), Segment_property_map(const_cast(&graph), vppm), Point_property_map(const_cast(&graph), vppm) ) {} @@ -161,12 +178,12 @@ public: #ifndef DOXYGEN_RUNNING template AABB_halfedge_graph_segment_primitive(Iterator it, const HalfedgeGraph& graph) - : Base( Id_(*it), + : Base( Id_(make_id(*it, graph, OneHalfedgeGraphPerTree())), Segment_property_map(const_cast(&graph)), Point_property_map(const_cast(&graph)) ){} - AABB_halfedge_graph_segment_primitive(Id id, const HalfedgeGraph& graph) - : Base( Id_(id), + AABB_halfedge_graph_segment_primitive(edge_descriptor ed, const HalfedgeGraph& graph) + : Base( Id_(make_id(ed, graph, OneHalfedgeGraphPerTree())), Segment_property_map(const_cast(&graph)), Point_property_map(const_cast(&graph)) ){} #endif diff --git a/AABB_tree/include/CGAL/AABB_polyhedron_segment_primitive.h b/AABB_tree/include/CGAL/AABB_polyhedron_segment_primitive.h index 85798d83374..4db0f6eae75 100644 --- a/AABB_tree/include/CGAL/AABB_polyhedron_segment_primitive.h +++ b/AABB_tree/include/CGAL/AABB_polyhedron_segment_primitive.h @@ -40,7 +40,7 @@ namespace CGAL { -/// \addtogroup PkgAABB_tree +/// \addtogroup PkgAABBTreeRef /// @{ /// \deprecated This class is deprecated since \cgal 4.3, the class /// `AABB_halfedge_graph_segment_primitive` should be used instead. diff --git a/AABB_tree/include/CGAL/AABB_polyhedron_triangle_primitive.h b/AABB_tree/include/CGAL/AABB_polyhedron_triangle_primitive.h index 363a718c03f..92cc3e165ab 100644 --- a/AABB_tree/include/CGAL/AABB_polyhedron_triangle_primitive.h +++ b/AABB_tree/include/CGAL/AABB_polyhedron_triangle_primitive.h @@ -35,7 +35,7 @@ #include namespace CGAL { - /// \ingroup PkgAABB_tree + /// \ingroup PkgAABBTreeRef /// \deprecated This class is deprecated since \cgal 4.3, the class /// `AABB_face_graph_triangle_primitive` should be used instead. /// diff --git a/AABB_tree/include/CGAL/AABB_primitive.h b/AABB_tree/include/CGAL/AABB_primitive.h index 205dad36754..6e08c8800a2 100644 --- a/AABB_tree/include/CGAL/AABB_primitive.h +++ b/AABB_tree/include/CGAL/AABB_primitive.h @@ -57,7 +57,7 @@ public: #ifdef DOXYGEN_RUNNING /*! - * \ingroup PkgAABB_tree + * \ingroup PkgAABBTreeRef * Generic primitive type. * The two property maps which are template parameters of the class enable to get the datum and the reference point of * the primitive from the identifier. The last template parameter controls whether the primitive class holds a copy of the datum. diff --git a/AABB_tree/include/CGAL/AABB_segment_primitive.h b/AABB_tree/include/CGAL/AABB_segment_primitive.h index 00618eafd34..872fa2f5b46 100644 --- a/AABB_tree/include/CGAL/AABB_segment_primitive.h +++ b/AABB_tree/include/CGAL/AABB_segment_primitive.h @@ -56,7 +56,7 @@ namespace internal { /*! - * \ingroup PkgAABB_tree + * \ingroup PkgAABBTreeRef * Primitive type that uses as identifier an iterator with a 3D segment as `value_type`. * The iterator from which the primitive is built should not be invalided * while the AABB tree holding the primitive is in use. diff --git a/AABB_tree/include/CGAL/AABB_traits.h b/AABB_tree/include/CGAL/AABB_traits.h index 632f2256d4b..a3e20752516 100644 --- a/AABB_tree/include/CGAL/AABB_traits.h +++ b/AABB_tree/include/CGAL/AABB_traits.h @@ -173,9 +173,13 @@ struct AABB_traits_base_2{ } } //end of namespace internal::AABB_tree -/// \addtogroup PkgAABB_tree +/// \addtogroup PkgAABBTreeRef /// @{ +// forward declaration +template< typename AABBTraits> +class AABB_tree; + /// This traits class handles any type of 3D geometric /// primitives provided that the proper intersection tests and /// constructions are implemented. It handles points, rays, lines and @@ -289,14 +293,15 @@ public: * Sorts the range defined by [first,beyond[. Sort is achieved on bbox longuest * axis, using the comparison function `_less_than` (dim in {x,y,z}) */ - class Sort_primitives + class Split_primitives { typedef AABB_traits Traits; const Traits& m_traits; public: - Sort_primitives(const AABB_traits& traits) + Split_primitives(const AABB_traits& traits) : m_traits(traits) {} + typedef void result_type; template void operator()(PrimitiveIterator first, PrimitiveIterator beyond, @@ -320,7 +325,7 @@ public: } }; - Sort_primitives sort_primitives_object() const {return Sort_primitives(*this);} + Split_primitives split_primitives_object() const {return Split_primitives(*this);} /* @@ -369,6 +374,19 @@ public: { return GeomTraits().do_intersect_3_object()(q, internal::Primitive_helper::get_datum(pr,m_traits)); } + + // intersection with AABB-tree + template + bool operator()(const CGAL::AABB_tree& other_tree, const Primitive& pr) const + { + return other_tree.do_intersect( internal::Primitive_helper::get_datum(pr,m_traits) ); + } + + template + bool operator()(const CGAL::AABB_tree& other_tree, const Bounding_box& bbox) const + { + return other_tree.do_intersect(bbox); + } }; Do_intersect do_intersect_object() const {return Do_intersect(*this);} diff --git a/AABB_tree/include/CGAL/AABB_tree.h b/AABB_tree/include/CGAL/AABB_tree.h index d4275852147..e2a2eee3a67 100644 --- a/AABB_tree/include/CGAL/AABB_tree.h +++ b/AABB_tree/include/CGAL/AABB_tree.h @@ -44,7 +44,7 @@ namespace CGAL { -/// \addtogroup PkgAABB_tree +/// \addtogroup PkgAABBTreeRef /// @{ /** @@ -156,7 +156,29 @@ namespace CGAL { /// `build()` explicitly to ensure that the next call to /// query functions will not trigger the reconstruction of the /// data structure. + /// A call to `AABBTraits::set_shared_data(t...)` + /// is made using the internally stored traits. + /// For compilers that do not support variadic templates, + /// overloads up to 5 template arguments are provided. +#if !defined(CGAL_CFG_NO_CPP0X_VARIADIC_TEMPLATES) && !defined(CGAL_CFG_NO_CPP0X_RVALUE_REFERENCE) + template + void build(T&& ...); +#ifndef DOXYGEN_RUNNING void build(); +#endif +#else + void build(); + template + void build(T1& t1); + template + void build(T1& t1, T2& t2); + template + void build(T1& t1, T2& t2, T3& t3); + template + void build(T1& t1, T2& t2, T3& t3, T4& t4); + template + void build(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5); +#endif ///@} /// \name Operations @@ -646,6 +668,18 @@ public: else return this->any_reference_point_and_id(); } + + //! Returns the datum (geometric object) represented `p`. +#ifndef DOXYGEN_RUNNING + typename internal::Primitive_helper::Datum_type +#else + typename AABBTraits::Primitive::Datum_reference +#endif + datum(Primitive& p)const + { + return internal::Primitive_helper:: + get_datum(p, this->traits()); + } private: //Traits class @@ -728,7 +762,7 @@ public: ConstPrimitiveIterator beyond, T&& ... t) { - set_shared_data(std::forward(t)...); + set_shared_data(std::forward(t)...); while(first != beyond) { m_primitives.push_back(Primitive(first,std::forward(t)...)); @@ -752,6 +786,14 @@ public: build(); } + + template + template + void AABB_tree::build(T&& ... t) + { + set_shared_data(std::forward(t)...); + build(); + } #else //=============constructor====================== template @@ -1033,7 +1075,43 @@ public: build(); } - #endif + //overloads calling set_shared_data() + template + template + void AABB_tree::build(T1& t1) + { + set_shared_data(t1); + build(); + } + template + template + void AABB_tree::build(T1& t1, T2& t2) + { + set_shared_data(t1, t2); + build(); + } + template + template + void AABB_tree::build(T1& t1, T2& t2, T3& t3) + { + set_shared_data(t1, t2, t3); + build(); + } + template + template + void AABB_tree::build(T1& t1, T2& t2, T3& t3, T4& t4) + { + set_shared_data(t1, t2, t3, t4); + build(); + } + template + template + void AABB_tree::build(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5) + { + set_shared_data(t1, t2, t3, t4, t5); + build(); + } +#endif template void AABB_tree::insert(const Primitive& p) @@ -1062,7 +1140,7 @@ public: // constructs the tree m_p_root_node->expand(m_primitives.begin(), m_primitives.end(), - m_primitives.size(), m_traits); + m_primitives.size(), m_traits); } diff --git a/AABB_tree/include/CGAL/AABB_triangle_primitive.h b/AABB_tree/include/CGAL/AABB_triangle_primitive.h index 4b2035e00f4..639a7dab307 100644 --- a/AABB_tree/include/CGAL/AABB_triangle_primitive.h +++ b/AABB_tree/include/CGAL/AABB_triangle_primitive.h @@ -56,7 +56,7 @@ namespace internal { /*! - * \ingroup PkgAABB_tree + * \ingroup PkgAABBTreeRef * Primitive type that uses as identifier an iterator with a 3D triangle as `value_type`. * The iterator from which the primitive is built should not be invalided * while the AABB tree holding the primitive is in use. diff --git a/AABB_tree/include/CGAL/AABB_triangulation_3_triangle_primitive.h b/AABB_tree/include/CGAL/AABB_triangulation_3_triangle_primitive.h index 96f4b305f28..6cd04d5aca8 100644 --- a/AABB_tree/include/CGAL/AABB_triangulation_3_triangle_primitive.h +++ b/AABB_tree/include/CGAL/AABB_triangulation_3_triangle_primitive.h @@ -31,7 +31,7 @@ #include namespace CGAL { - // \ingroup PkgAABB_tree + // \ingroup PkgAABBTreeRef // Primitive type that wraps a facet handle of a CGAL::Triangulation_3, // which is used as id, and allows the construction of the datum on // the fly. Since only the facet handle is stored in this primitive, diff --git a/AABB_tree/include/CGAL/internal/AABB_tree/AABB_node.h b/AABB_tree/include/CGAL/internal/AABB_tree/AABB_node.h index e3504a615ab..5d0cf5ce4d2 100644 --- a/AABB_tree/include/CGAL/internal/AABB_tree/AABB_node.h +++ b/AABB_tree/include/CGAL/internal/AABB_tree/AABB_node.h @@ -138,7 +138,7 @@ AABB_node::expand(ConstPrimitiveIterator first, m_bbox = traits.compute_bbox_object()(first, beyond); // sort primitives along longest axis aabb - traits.sort_primitives_object()(first, beyond, m_bbox); + traits.split_primitives_object()(first, beyond, m_bbox); switch(range) { diff --git a/AABB_tree/test/AABB_tree/CMakeLists.txt b/AABB_tree/test/AABB_tree/CMakeLists.txt index b5f7d28e57a..38a39723ead 100644 --- a/AABB_tree/test/AABB_tree/CMakeLists.txt +++ b/AABB_tree/test/AABB_tree/CMakeLists.txt @@ -4,17 +4,13 @@ project( AABB_tree_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") + include( ${CGAL_USE_FILE} ) # Kept to test the old behaviour. # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) diff --git a/AABB_tree/test/AABB_tree/aabb_test_datum.cpp b/AABB_tree/test/AABB_tree/aabb_test_datum.cpp new file mode 100644 index 00000000000..dac02e5349b --- /dev/null +++ b/AABB_tree/test/AABB_tree/aabb_test_datum.cpp @@ -0,0 +1,74 @@ + +#include +#include +#include + +#include + +#include +#include +#include +#include + +typedef CGAL::Epick K; +typedef K::Point_3 Point; +typedef K::Triangle_3 Triangle; +typedef CGAL::Surface_mesh Mesh; +typedef CGAL::AABB_face_graph_triangle_primitive Primitive; +typedef CGAL::AABB_traits Traits; +typedef CGAL::AABB_tree Tree; + +typedef CGAL::AABB_face_graph_triangle_primitive Primitive2; +typedef CGAL::AABB_traits Traits2; +typedef CGAL::AABB_tree Tree2; + +typedef CGAL::AABB_face_graph_triangle_primitive Primitive3; +typedef CGAL::AABB_traits Traits3; +typedef CGAL::AABB_tree Tree3; + +typedef CGAL::AABB_face_graph_triangle_primitive Primitive4; +typedef CGAL::AABB_traits Traits4; +typedef CGAL::AABB_tree Tree4; + +int main(void) +{ + Mesh m; + std::ifstream in("data/cube.off"); + if(in) + in >> m; + else{ + std::cout << "error reading bunny" << std::endl; + return 1; + } + + Tree t1(faces(m).begin(), faces(m).end(), m); + Tree2 t2(faces(m).begin(), faces(m).end(), m); + Tree3 t3(faces(m).begin(), faces(m).end(), m); + Tree4 t4(faces(m).begin(), faces(m).end(), m); + + t1.build(); + t2.build(); + t3.build(); + t4.build(); + + Primitive p1(faces(m).begin(), m); + Primitive2 p2(faces(m).begin(), m); + Primitive3 p3(faces(m).begin(), m); + Primitive4 p4(faces(m).begin(), m); + Triangle tr1 = t1.datum(p1); + Triangle tr2 = t2.datum(p2); + Triangle tr3 = t3.datum(p3); + Triangle tr4 = t4.datum(p4); + if(tr1 != tr2 + || tr1 != tr3 + || tr1 != tr4 + || tr2 != tr3 + || tr2 != tr4 + || tr3 != tr4) + return 1; + return 0; +} + diff --git a/AABB_tree/test/AABB_tree/aabb_test_multi_mesh.cpp b/AABB_tree/test/AABB_tree/aabb_test_multi_mesh.cpp new file mode 100644 index 00000000000..21d201a0062 --- /dev/null +++ b/AABB_tree/test/AABB_tree/aabb_test_multi_mesh.cpp @@ -0,0 +1,82 @@ +#include +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +typedef CGAL::Epick K; +typedef K::FT FT; +typedef K::Point_3 Point; +typedef K::Vector_3 Vector; +typedef K::Segment_3 Segment; +typedef K::Ray_3 Ray; +typedef CGAL::Surface_mesh > Mesh; +typedef CGAL::AABB_face_graph_triangle_primitive T_Primitive; +typedef CGAL::AABB_traits T_Traits; +typedef CGAL::AABB_tree T_Tree; +typedef T_Tree::Primitive_id T_Primitive_id; + +typedef CGAL::AABB_halfedge_graph_segment_primitive E_Primitive; +typedef CGAL::AABB_traits E_Traits; +typedef CGAL::AABB_tree E_Tree; +typedef E_Tree::Primitive_id E_Primitive_id; + +int main() +{ + CGAL::Surface_mesh > m1, m2; + std::ifstream in("data/cube.off"); + if(in) + in >> m1; + else{ + std::cout << "error reading cube" << std::endl; + return 1; + } + in.close(); + in.open("data/tetrahedron.off"); + if(in) + in >> m2; + else{ + std::cout << "error reading tetrahedron" << std::endl; + return 1; + } + in.close(); + T_Tree tree(faces(m1).first, faces(m1).second, m1); + tree.insert(faces(m2).first, faces(m2).second, m2); + tree.build(); + T_Tree::Bounding_box bbox = tree.bbox(); + Point bbox_center((bbox.xmin() + bbox.xmax()) / 2, + (bbox.ymin() + bbox.ymax()) / 2, + (bbox.zmin() + bbox.zmax()) / 2); + std::vector< T_Primitive_id > intersections; + Ray ray(bbox_center+Vector(3,-0.25,0),bbox_center+Vector(-3,+0.25,0)); + tree.all_intersected_primitives(ray, + std::back_inserter(intersections)); + E_Tree e_tree(edges(m1).first, edges(m1).second, m1); + e_tree.insert(edges(m2).first, edges(m2).second, m2); + e_tree.build(); + std::vector< E_Primitive_id > e_intersections; + Ray e_ray(Point(0,0,0),Point(0,1,1)); + e_tree.all_intersected_primitives(e_ray, + std::back_inserter(e_intersections)); + + + + return 0; +} diff --git a/Advancing_front_surface_reconstruction/doc/Advancing_front_surface_reconstruction/PackageDescription.txt b/Advancing_front_surface_reconstruction/doc/Advancing_front_surface_reconstruction/PackageDescription.txt index 8e104c34c35..d944d7fbbbf 100644 --- a/Advancing_front_surface_reconstruction/doc/Advancing_front_surface_reconstruction/PackageDescription.txt +++ b/Advancing_front_surface_reconstruction/doc/Advancing_front_surface_reconstruction/PackageDescription.txt @@ -1,9 +1,9 @@ -/// \defgroup PkgAdvancingFrontSurfaceReconstruction Advancing Front Surface Reconstruction Reference +/// \defgroup PkgAdvancingFrontSurfaceReconstructionRef Advancing Front Surface Reconstruction Reference /*! -\addtogroup PkgAdvancingFrontSurfaceReconstruction +\addtogroup PkgAdvancingFrontSurfaceReconstructionRef -\cgalPkgDescriptionBegin{Advancing Front Surface Reconstruction,PkgAdvancingFrontSurfaceReconstructionSummary} +\cgalPkgDescriptionBegin{Advancing Front Surface Reconstruction,PkgAdvancingFrontSurfaceReconstruction} \cgalPkgPicture{afsr-detail.png} \cgalPkgSummaryBegin \cgalPkgAuthors{Tran Kai Frank Da, David Cohen-Steiner} @@ -12,11 +12,11 @@ unorganized point set. Starting from a seed facet, a piecewise linear surface is grown by adding Delaunay triangles one by one. The most plausible triangles are added first, in a way that avoids the appearance of topological singularities. } -\cgalPkgManuals{Chapter_Advancing_Front_Surface_Reconstruction,PkgAdvancingFrontSurfaceReconstruction} +\cgalPkgManuals{Chapter_Advancing_Front_Surface_Reconstruction,PkgAdvancingFrontSurfaceReconstructionRef} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{4.7} -\cgalPkgDependsOn{\ref PkgTriangulation3Summary} +\cgalPkgDependsOn{\ref PkgTriangulation3} \cgalPkgBib{cgal:dc-afsr} \cgalPkgLicense{\ref licensesGPL "GPL"} \cgalPkgShortInfoEnd 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 166bbc9b131..650ce176202 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 @@ -4,22 +4,16 @@ project( Advancing_front_surface_reconstruction_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - if (MSVC AND ( CMAKE_SIZEOF_VOID_P EQUAL 4 ) ) SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4244") endif() - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Advancing_front_surface_reconstruction/include/CGAL/Advancing_front_surface_reconstruction.h b/Advancing_front_surface_reconstruction/include/CGAL/Advancing_front_surface_reconstruction.h index 6fc6e33b4d8..317c04ee863 100644 --- a/Advancing_front_surface_reconstruction/include/CGAL/Advancing_front_surface_reconstruction.h +++ b/Advancing_front_surface_reconstruction/include/CGAL/Advancing_front_surface_reconstruction.h @@ -175,7 +175,7 @@ namespace CGAL { /*! - \ingroup PkgAdvancingFrontSurfaceReconstruction + \ingroup PkgAdvancingFrontSurfaceReconstructionRef The class `Advancing_front_surface_reconstruction` enables advanced users to provide the unstructured point cloud in a 3D Delaunay triangulation. The reconstruction algorithm then marks vertices and faces @@ -389,10 +389,10 @@ namespace CGAL { Intern_successors_type* new_border() { - nbe_pool.push_back(Next_border_elt()); + nbe_pool.resize(nbe_pool.size()+1); Next_border_elt* p1 = & nbe_pool.back(); - nbe_pool.push_back(Next_border_elt()); + nbe_pool.resize(nbe_pool.size()+1); Next_border_elt* p2 = & nbe_pool.back(); Intern_successors_type ist(p1,p2); @@ -2480,7 +2480,7 @@ namespace CGAL { } /*! - \ingroup PkgAdvancingFrontSurfaceReconstruction + \ingroup PkgAdvancingFrontSurfaceReconstructionRef For a sequence of points computes a sequence of index triples describing the faces of the reconstructed surface. @@ -2532,7 +2532,7 @@ namespace CGAL { } /*! - \ingroup PkgAdvancingFrontSurfaceReconstruction + \ingroup PkgAdvancingFrontSurfaceReconstructionRef For a sequence of points computes a sequence of index triples describing the faces of the reconstructed surface. diff --git a/Advancing_front_surface_reconstruction/include/CGAL/Advancing_front_surface_reconstruction_cell_base_3.h b/Advancing_front_surface_reconstruction/include/CGAL/Advancing_front_surface_reconstruction_cell_base_3.h index 99cfa924cdf..eac9e519d77 100644 --- a/Advancing_front_surface_reconstruction/include/CGAL/Advancing_front_surface_reconstruction_cell_base_3.h +++ b/Advancing_front_surface_reconstruction/include/CGAL/Advancing_front_surface_reconstruction_cell_base_3.h @@ -28,7 +28,7 @@ namespace CGAL { /*! - \ingroup PkgAdvancingFrontSurfaceReconstruction + \ingroup PkgAdvancingFrontSurfaceReconstructionRef The class `Advancing_front_surface_reconstruction_cell_base_3` is the default cell type for the class `Advancing_front_surface_reconstruction`. diff --git a/Advancing_front_surface_reconstruction/include/CGAL/Advancing_front_surface_reconstruction_vertex_base_3.h b/Advancing_front_surface_reconstruction/include/CGAL/Advancing_front_surface_reconstruction_vertex_base_3.h index 1d381ccc89c..050e14036fd 100644 --- a/Advancing_front_surface_reconstruction/include/CGAL/Advancing_front_surface_reconstruction_vertex_base_3.h +++ b/Advancing_front_surface_reconstruction/include/CGAL/Advancing_front_surface_reconstruction_vertex_base_3.h @@ -38,7 +38,7 @@ namespace CGAL { template class Advancing_front_surface_reconstruction; /*! - \ingroup PkgAdvancingFrontSurfaceReconstruction + \ingroup PkgAdvancingFrontSurfaceReconstructionRef The class `Advancing_front_surface_reconstruction_vertex_base_3` is the default vertex type for the class `Advancing_front_surface_reconstruction`. 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 689787d6222..3eeeba604c0 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 @@ -4,18 +4,12 @@ project( Advancing_front_surface_reconstruction_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Algebraic_foundations/doc/Algebraic_foundations/Algebraic_foundations.txt b/Algebraic_foundations/doc/Algebraic_foundations/Algebraic_foundations.txt index 7e6c7d0039d..6e08371d24e 100644 --- a/Algebraic_foundations/doc/Algebraic_foundations/Algebraic_foundations.txt +++ b/Algebraic_foundations/doc/Algebraic_foundations/Algebraic_foundations.txt @@ -81,7 +81,7 @@ compatibility all functionality is also accessible through global functions defined within namespace `CGAL`, e.g., \link sqrt `CGAL::sqrt(x)` \endlink. This is realized via function templates using the according functor of the traits class. For an overview see -Section \ref PkgAlgebraicFoundations in the reference manual. +Section \ref PkgAlgebraicFoundationsRef in the reference manual. \subsection Algebraic_foundationsTagsinAlgebraicStructure Tags in Algebraic Structure Traits diff --git a/Algebraic_foundations/doc/Algebraic_foundations/CGAL/Algebraic_structure_traits.h b/Algebraic_foundations/doc/Algebraic_foundations/CGAL/Algebraic_structure_traits.h index 38d35c6cf27..fee8e9b1daa 100644 --- a/Algebraic_foundations/doc/Algebraic_foundations/CGAL/Algebraic_structure_traits.h +++ b/Algebraic_foundations/doc/Algebraic_foundations/CGAL/Algebraic_structure_traits.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef An instance of `Algebraic_structure_traits` is a model of `AlgebraicStructureTraits`, where T is the associated type. @@ -17,7 +17,7 @@ class Algebraic_structure_traits { namespace CGAL { /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef Tag indicating that a type is a model of the `EuclideanRing` concept. @@ -34,7 +34,7 @@ struct Euclidean_ring_tag : public Unique_factorization_domain_tag { }; /* end Euclidean_ring_tag */ /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef Tag indicating that a type is a model of the `Field` concept. @@ -50,7 +50,7 @@ struct Field_tag : public Integral_domain_tag { }; /* end Field_tag */ /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef Tag indicating that a type is a model of the `FieldWithKthRoot` concept. @@ -66,7 +66,7 @@ struct Field_with_kth_root_tag : public Field_with_sqrt_tag { }; /* end Field_with_kth_root_tag */ /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef Tag indicating that a type is a model of the `FieldWithRootOf` concept. @@ -82,7 +82,7 @@ struct Field_with_root_of_tag : public Field_with_kth_root_tag { }; /* end Field_with_root_of_tag */ /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef Tag indicating that a type is a model of the `FieldWithSqrt` concept. @@ -98,7 +98,7 @@ struct Field_with_sqrt_tag : public Field_tag { }; /* end Field_with_sqrt_tag */ /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef Tag indicating that a type is a model of the `IntegralDomain` concept. @@ -114,7 +114,7 @@ struct Integral_domain_tag : public Integral_domain_without_division_tag { }; /* end Integral_domain_tag */ /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef Tag indicating that a type is a model of the `IntegralDomainWithoutDivision` concept. @@ -129,7 +129,7 @@ struct Integral_domain_without_division_tag { }; /* end Integral_domain_without_division_tag */ /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef Tag indicating that a type is a model of the `UniqueFactorizationDomain` concept. diff --git a/Algebraic_foundations/doc/Algebraic_foundations/CGAL/Coercion_traits.h b/Algebraic_foundations/doc/Algebraic_foundations/CGAL/Coercion_traits.h index 7c1bbf3fbcb..51241f2fec2 100644 --- a/Algebraic_foundations/doc/Algebraic_foundations/CGAL/Coercion_traits.h +++ b/Algebraic_foundations/doc/Algebraic_foundations/CGAL/Coercion_traits.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef An instance of `Coercion_traits` reflects the type coercion of the types A and B, it is symmetric in the two template arguments. diff --git a/Algebraic_foundations/doc/Algebraic_foundations/CGAL/Fraction_traits.h b/Algebraic_foundations/doc/Algebraic_foundations/CGAL/Fraction_traits.h index 0e2575ec3cf..5888f705f3f 100644 --- a/Algebraic_foundations/doc/Algebraic_foundations/CGAL/Fraction_traits.h +++ b/Algebraic_foundations/doc/Algebraic_foundations/CGAL/Fraction_traits.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef An instance of `Fraction_traits` is a model of `FractionTraits`, where `T` is the associated type. diff --git a/Algebraic_foundations/doc/Algebraic_foundations/CGAL/Real_embeddable_traits.h b/Algebraic_foundations/doc/Algebraic_foundations/CGAL/Real_embeddable_traits.h index d4f7b67e6b8..fa61be8f8df 100644 --- a/Algebraic_foundations/doc/Algebraic_foundations/CGAL/Real_embeddable_traits.h +++ b/Algebraic_foundations/doc/Algebraic_foundations/CGAL/Real_embeddable_traits.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef An instance of `Real_embeddable_traits` is a model of `RealEmbeddableTraits`, where T is the associated type. diff --git a/Algebraic_foundations/doc/Algebraic_foundations/CGAL/number_utils.h b/Algebraic_foundations/doc/Algebraic_foundations/CGAL/number_utils.h index 28fe692ade1..153988e6d93 100644 --- a/Algebraic_foundations/doc/Algebraic_foundations/CGAL/number_utils.h +++ b/Algebraic_foundations/doc/Algebraic_foundations/CGAL/number_utils.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef The template function `abs()` returns the absolute value of a number. @@ -19,7 +19,7 @@ template NT abs(const NT& x); namespace CGAL { /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef The template function `compare()` compares the first argument with respect to the second, i.e.\ it returns `CGAL::LARGER` if \f$ x\f$ is larger then \f$ y\f$. @@ -43,7 +43,7 @@ result_type compare(const NT &x, const NT &y); namespace CGAL { /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef The function `div()` computes the integral quotient of division with remainder. @@ -74,7 +74,7 @@ div(const NT1& x, const NT2& y); namespace CGAL { /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef computes the quotient \f$ q\f$ and remainder \f$ r\f$, such that \f$ x = q*y + r\f$ and \f$ r\f$ minimal with respect to the Euclidean Norm of the @@ -109,7 +109,7 @@ div_mod(const NT1& x, const NT2& y, result_type& q, result_type& r); namespace CGAL { /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef The function `gcd()` computes the greatest common divisor of two values. @@ -136,7 +136,7 @@ gcd(const NT1& x, const NT2& y); namespace CGAL { /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef The function `integral_division()` (a.k.a.\ exact division or division without remainder) maps ring elements \f$ (x,y)\f$ to ring element \f$ z\f$ such that \f$ x = yz\f$ if such a \f$ z\f$ @@ -167,7 +167,7 @@ integral_division(const NT1& x, const NT2& y); namespace CGAL { /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef The function `inverse()` returns the inverse element with respect to multiplication. @@ -187,7 +187,7 @@ template NT inverse(const NT& x); namespace CGAL { /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef The template function `is_negative()` determines if a value is negative or not. The function is defined if the argument type @@ -206,7 +206,7 @@ result_type is_negative(const NT& x); namespace CGAL { /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef The function `is_one()` determines if a value is equal to 1 or not. @@ -226,7 +226,7 @@ template result_type is_one(const NT& x); namespace CGAL { /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef The template function `is_positive()` determines if a value is positive or not. The function is defined if the argument type @@ -245,7 +245,7 @@ result_type is_positive(const NT& x); namespace CGAL { /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef An ring element \f$ x\f$ is said to be a square iff there exists a ring element \f$ y\f$ such @@ -264,7 +264,7 @@ The `result_type` is convertible to `bool`. template result_type is_square(const NT& x); /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef An ring element \f$ x\f$ is said to be a square iff there exists a ring element \f$ y\f$ such @@ -287,7 +287,7 @@ template result_type is_square(const NT& x, NT& y); namespace CGAL { /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef The function `is_zero()` determines if a value is equal to 0 or not. @@ -309,7 +309,7 @@ template result_type is_zero(const NT& x); namespace CGAL { /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef The function `kth_root()` returns the k-th root of a value. @@ -327,7 +327,7 @@ template NT kth_root(int k, const NT& x); namespace CGAL { /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef The function `mod()` computes the remainder of division with remainder. @@ -357,7 +357,7 @@ mod(const NT1& x, const NT2& y); namespace CGAL { /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef returns the k-th real root of the univariate polynomial, which is defined by the iterator range, where begin refers to the constant @@ -383,7 +383,7 @@ root_of(int k, InputIterator begin, InputIterator end); namespace CGAL { /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef The template function `sign()` returns the sign of its argument. @@ -403,7 +403,7 @@ template result_type sign(const NT& x); namespace CGAL { /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef The function `simplify()` may simplify a given object. @@ -421,7 +421,7 @@ template void simplify(const NT& x); namespace CGAL { /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef The function `sqrt()` returns the square root of a value. @@ -439,7 +439,7 @@ template NT sqrt(const NT& x); namespace CGAL { /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef The function `square()` returns the square of a number. @@ -457,7 +457,7 @@ template NT square(const NT& x); namespace CGAL { /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef The template function `to_double()` returns a double approximation of a number. Note that in general, the value returned is not guaranteed to be the same @@ -482,7 +482,7 @@ template double to_double(const NT& x); namespace CGAL { /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef The template function `to_interval()` computes for a given real embeddable number \f$ x\f$ a double interval containing \f$ x\f$. @@ -502,7 +502,7 @@ std::pair to_interval(const NT& x); namespace CGAL { /*! -\ingroup PkgAlgebraicFoundations +\ingroup PkgAlgebraicFoundationsRef The function `unit_part()` computes the unit part of a given ring element. diff --git a/Algebraic_foundations/doc/Algebraic_foundations/PackageDescription.txt b/Algebraic_foundations/doc/Algebraic_foundations/PackageDescription.txt index 9a5d49ffebf..cbf66ce5727 100644 --- a/Algebraic_foundations/doc/Algebraic_foundations/PackageDescription.txt +++ b/Algebraic_foundations/doc/Algebraic_foundations/PackageDescription.txt @@ -1,18 +1,18 @@ -/// \defgroup PkgAlgebraicFoundations Algebraic Foundations Reference +/// \defgroup PkgAlgebraicFoundationsRef Algebraic Foundations Reference /// \defgroup PkgAlgebraicFoundationsAlgebraicStructuresConcepts Concepts -/// \ingroup PkgAlgebraicFoundations +/// \ingroup PkgAlgebraicFoundationsRef /*! -\addtogroup PkgAlgebraicFoundations +\addtogroup PkgAlgebraicFoundationsRef \todo check generated documentation -\cgalPkgDescriptionBegin{Algebraic Foundations,PkgAlgebraicFoundationsSummary} +\cgalPkgDescriptionBegin{Algebraic Foundations,PkgAlgebraicFoundations} \cgalPkgPicture{Algebraic_foundations2.png} \cgalPkgSummaryBegin \cgalPkgAuthor{Michael Hemmer} \cgalPkgDesc{This package defines what algebra means for \cgal, in terms of concepts, classes and functions. The main features are: (i) explicit concepts for interoperability of types (ii) separation between algebraic types (not necessarily embeddable into the reals), and number types (embeddable into the reals).} -\cgalPkgManuals{Chapter_Algebraic_Foundations,PkgAlgebraicFoundations} +\cgalPkgManuals{Chapter_Algebraic_Foundations,PkgAlgebraicFoundationsRef} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{3.3} diff --git a/Algebraic_foundations/examples/Algebraic_foundations/CMakeLists.txt b/Algebraic_foundations/examples/Algebraic_foundations/CMakeLists.txt index 8b00bc5a247..d30a4c846c8 100644 --- a/Algebraic_foundations/examples/Algebraic_foundations/CMakeLists.txt +++ b/Algebraic_foundations/examples/Algebraic_foundations/CMakeLists.txt @@ -4,18 +4,12 @@ project( Algebraic_foundations_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Algebraic_foundations/test/Algebraic_foundations/CMakeLists.txt b/Algebraic_foundations/test/Algebraic_foundations/CMakeLists.txt index 53a912a5a7f..1eacdbebbfa 100644 --- a/Algebraic_foundations/test/Algebraic_foundations/CMakeLists.txt +++ b/Algebraic_foundations/test/Algebraic_foundations/CMakeLists.txt @@ -4,17 +4,13 @@ project( Algebraic_foundations_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET COMPONENTS Core) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") + include(${CGAL_USE_FILE}) # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/CGAL/Algebraic_kernel_d_1.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/CGAL/Algebraic_kernel_d_1.h index 99aee7837cc..632bd0c756b 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/CGAL/Algebraic_kernel_d_1.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/CGAL/Algebraic_kernel_d_1.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgAlgebraicKerneldModels +\ingroup PkgAlgebraicKernelDModels The class represents an algebraic real root by a square free polynomial and an isolating interval that uniquely defines the root. diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/CGAL/Algebraic_kernel_d_2.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/CGAL/Algebraic_kernel_d_2.h index a499a94861d..7e8cbc60291 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/CGAL/Algebraic_kernel_d_2.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/CGAL/Algebraic_kernel_d_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgAlgebraicKerneldModels +\ingroup PkgAlgebraicKernelDModels This class gathers necessary tools for solving and handling bivariate polynomial systems of general degree \f$ d\f$. diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/CGAL/Algebraic_kernel_rs_gmpq_d_1.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/CGAL/Algebraic_kernel_rs_gmpq_d_1.h index 653c7f56cb3..3498dcb2ab8 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/CGAL/Algebraic_kernel_rs_gmpq_d_1.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/CGAL/Algebraic_kernel_rs_gmpq_d_1.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgAlgebraicKerneldModels +\ingroup PkgAlgebraicKernelDModels \anchor Algebraic_kernel_rs_gmpq_d_1 diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/CGAL/Algebraic_kernel_rs_gmpz_d_1.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/CGAL/Algebraic_kernel_rs_gmpz_d_1.h index 70fdccc2963..665aa563e40 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/CGAL/Algebraic_kernel_rs_gmpz_d_1.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/CGAL/Algebraic_kernel_rs_gmpz_d_1.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgAlgebraicKerneldModels +\ingroup PkgAlgebraicKernelDModels \anchor Algebraic_kernel_rs_gmpz_d_1 diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--ApproximateAbsolute_1.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--ApproximateAbsolute_1.h index 2896acf2af3..9c142688f05 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--ApproximateAbsolute_1.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--ApproximateAbsolute_1.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsUni +\ingroup PkgAlgebraicKernelDConceptsUni \cgalConcept A model of `AlgebraicKernel_d_1::ApproximateAbsolute_1` is an `AdaptableBinaryFunction` that computes an diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--ApproximateRelative_1.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--ApproximateRelative_1.h index 3a2cf52c468..977c3eb0510 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--ApproximateRelative_1.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--ApproximateRelative_1.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsUni +\ingroup PkgAlgebraicKernelDConceptsUni \cgalConcept A model of `AlgebraicKernel_d_1::ApproximateRelative_1` is an `AdaptableBinaryFunction` that computes an diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--BoundBetween_1.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--BoundBetween_1.h index 5af5cb25f25..532708bbc66 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--BoundBetween_1.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--BoundBetween_1.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsUni +\ingroup PkgAlgebraicKernelDConceptsUni \cgalConcept Computes a number of type diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--Compare_1.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--Compare_1.h index 5d7e8b3c53f..93a3245ccb8 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--Compare_1.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--Compare_1.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsUni +\ingroup PkgAlgebraicKernelDConceptsUni \cgalConcept Compares `AlgebraicKernel_d_1::Algebraic_real_1` values. diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--ComputePolynomial_1.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--ComputePolynomial_1.h index afc9fea9e3b..29fc14de953 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--ComputePolynomial_1.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--ComputePolynomial_1.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsUni +\ingroup PkgAlgebraicKernelDConceptsUni \cgalConcept Computes a square free univariate polynomial \f$ p\f$, such that the given diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--ConstructAlgebraicReal_1.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--ConstructAlgebraicReal_1.h index ec36d8c0991..82ccd3d56f1 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--ConstructAlgebraicReal_1.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--ConstructAlgebraicReal_1.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsUni +\ingroup PkgAlgebraicKernelDConceptsUni \cgalConcept Constructs `AlgebraicKernel_d_1::Algebraic_real_1`. diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--IsCoprime_1.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--IsCoprime_1.h index 25e71199630..e8d8ddd1d20 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--IsCoprime_1.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--IsCoprime_1.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsUni +\ingroup PkgAlgebraicKernelDConceptsUni \cgalConcept Determines whether a given pair of univariate polynomials \f$ p_1, p_2\f$ is coprime, diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--IsSquareFree_1.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--IsSquareFree_1.h index ca73f908aa3..b6cfbaac082 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--IsSquareFree_1.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--IsSquareFree_1.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsUni +\ingroup PkgAlgebraicKernelDConceptsUni \cgalConcept Computes whether the given univariate polynomial is square free. diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--IsZeroAt_1.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--IsZeroAt_1.h index d9ab0797c85..7c43c21ba54 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--IsZeroAt_1.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--IsZeroAt_1.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsUni +\ingroup PkgAlgebraicKernelDConceptsUni \cgalConcept Computes whether an `AlgebraicKernel_d_1::Polynomial_1` diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--Isolate_1.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--Isolate_1.h index 6ddac9ad06a..9613ee51637 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--Isolate_1.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--Isolate_1.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsUni +\ingroup PkgAlgebraicKernelDConceptsUni \cgalConcept Computes an open isolating interval for an `AlgebraicKernel_d_1::Algebraic_real_1` diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--MakeCoprime_1.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--MakeCoprime_1.h index fa95de42270..3ac3797a706 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--MakeCoprime_1.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--MakeCoprime_1.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsUni +\ingroup PkgAlgebraicKernelDConceptsUni \cgalConcept Computes for a given pair of univariate polynomials \f$ p_1\f$, \f$ p_2\f$ their diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--MakeSquareFree_1.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--MakeSquareFree_1.h index 2b60ca4d321..8b71414d61f 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--MakeSquareFree_1.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--MakeSquareFree_1.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsUni +\ingroup PkgAlgebraicKernelDConceptsUni \cgalConcept Returns a square free part of a univariate polynomial. diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--NumberOfSolutions_1.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--NumberOfSolutions_1.h index 8dd23b95d6d..52bf33c0067 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--NumberOfSolutions_1.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--NumberOfSolutions_1.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsUni +\ingroup PkgAlgebraicKernelDConceptsUni \cgalConcept Computes the number of real solutions of the given univariate polynomial. diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--SignAt_1.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--SignAt_1.h index c79e3136e8a..565ce13b992 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--SignAt_1.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--SignAt_1.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsUni +\ingroup PkgAlgebraicKernelDConceptsUni \cgalConcept Computes the sign of a univariate polynomial diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--Solve_1.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--Solve_1.h index 18e71de141c..b7f976f0486 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--Solve_1.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--Solve_1.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsUni +\ingroup PkgAlgebraicKernelDConceptsUni \cgalConcept Computes the real roots of a univariate polynomial. diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--SquareFreeFactorize_1.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--SquareFreeFactorize_1.h index d50560b29a9..91971c4f575 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--SquareFreeFactorize_1.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1--SquareFreeFactorize_1.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsUni +\ingroup PkgAlgebraicKernelDConceptsUni \cgalConcept Computes a square free factorization of an diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1.h index 70660d6abc1..7d7cd3b4289 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_1.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsUni +\ingroup PkgAlgebraicKernelDConceptsUni \cgalConcept A model of the `AlgebraicKernel_d_1` concept is meant to provide the diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ApproximateAbsoluteX_2.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ApproximateAbsoluteX_2.h index dfbd40c5c29..8fb754c7cc2 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ApproximateAbsoluteX_2.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ApproximateAbsoluteX_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsBi +\ingroup PkgAlgebraicKernelDConceptsBi \cgalConcept A model of `AlgebraicKernel_d_2::ApproximateAbsoluteX_2` is an `AdaptableBinaryFunction` that computes an diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ApproximateAbsoluteY_2.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ApproximateAbsoluteY_2.h index 9d4a8b94834..298cf2ea7a2 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ApproximateAbsoluteY_2.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ApproximateAbsoluteY_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsBi +\ingroup PkgAlgebraicKernelDConceptsBi \cgalConcept A model of `AlgebraicKernel_d_2::ApproximateAbsoluteY_2` is an `AdaptableBinaryFunction` that computes an diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ApproximateRelativeX_2.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ApproximateRelativeX_2.h index 965db4cb55c..0b07fdbdf84 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ApproximateRelativeX_2.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ApproximateRelativeX_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsBi +\ingroup PkgAlgebraicKernelDConceptsBi \cgalConcept A model of `AlgebraicKernel_d_2::ApproximateRelativeX_2` is an `AdaptableBinaryFunction` that computes an diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ApproximateRelativeY_2.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ApproximateRelativeY_2.h index fcec3b5cb92..00676a98ded 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ApproximateRelativeY_2.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ApproximateRelativeY_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsBi +\ingroup PkgAlgebraicKernelDConceptsBi \cgalConcept A model of `AlgebraicKernel_d_2::ApproximateRelativeY_2` is an `AdaptableBinaryFunction` that computes an diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--BoundBetweenX_2.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--BoundBetweenX_2.h index bf11f493b57..ccaac45c12b 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--BoundBetweenX_2.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--BoundBetweenX_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsBi +\ingroup PkgAlgebraicKernelDConceptsBi \cgalConcept Computes a number of type diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--BoundBetweenY_2.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--BoundBetweenY_2.h index 3f6709c4455..901c3162d97 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--BoundBetweenY_2.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--BoundBetweenY_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsBi +\ingroup PkgAlgebraicKernelDConceptsBi \cgalConcept Computes a number of type diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--CompareXY_2.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--CompareXY_2.h index cfdefc0a995..c8bb07c059d 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--CompareXY_2.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--CompareXY_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsBi +\ingroup PkgAlgebraicKernelDConceptsBi \cgalConcept Compares `AlgebraicKernel_d_2::Algebraic_real_2`s lexicographically. diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--CompareX_2.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--CompareX_2.h index 620bb133b08..380aded006c 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--CompareX_2.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--CompareX_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsBi +\ingroup PkgAlgebraicKernelDConceptsBi \cgalConcept Compares the first coordinates of `AlgebraicKernel_d_2::Algebraic_real_2`s. diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--CompareY_2.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--CompareY_2.h index 9d6b3483103..6c58335c8a8 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--CompareY_2.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--CompareY_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsBi +\ingroup PkgAlgebraicKernelDConceptsBi \cgalConcept Compares the second coordinated of `AlgebraicKernel_d_2::Algebraic_real_2`s. diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ComputePolynomialX_2.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ComputePolynomialX_2.h index e972739323b..c412d6fce76 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ComputePolynomialX_2.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ComputePolynomialX_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsBi +\ingroup PkgAlgebraicKernelDConceptsBi \cgalConcept Computes a univariate square free polynomial \f$ p\f$, such that the first coordinate of diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ComputePolynomialY_2.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ComputePolynomialY_2.h index 8625e4c0ae5..7a9e46a4cbb 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ComputePolynomialY_2.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ComputePolynomialY_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsBi +\ingroup PkgAlgebraicKernelDConceptsBi \cgalConcept Computes a univariate square free polynomial \f$ p\f$, such that the second coordinate of diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ComputeX_2.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ComputeX_2.h index d23478e27ee..3f3b19583ec 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ComputeX_2.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ComputeX_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsBi +\ingroup PkgAlgebraicKernelDConceptsBi \cgalConcept Computes the first coordinate of an diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ComputeY_2.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ComputeY_2.h index de9c9f0556b..5edc195f8a6 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ComputeY_2.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ComputeY_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsBi +\ingroup PkgAlgebraicKernelDConceptsBi \cgalConcept Computes the second coordinate of an diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ConstructAlgebraicReal_2.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ConstructAlgebraicReal_2.h index c43f2f0664a..4eaaeda2f26 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ConstructAlgebraicReal_2.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--ConstructAlgebraicReal_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsBi +\ingroup PkgAlgebraicKernelDConceptsBi \cgalConcept Constructs an `AlgebraicKernel_d_2::Algebraic_real_2`. diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--IsCoprime_2.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--IsCoprime_2.h index 70d7cabfeb6..70e920f5abc 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--IsCoprime_2.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--IsCoprime_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsBi +\ingroup PkgAlgebraicKernelDConceptsBi \cgalConcept Computes whether a given pair of bivariate polynomials is coprime. diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--IsSquareFree_2.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--IsSquareFree_2.h index a73d574680e..bd8fb58f588 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--IsSquareFree_2.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--IsSquareFree_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsBi +\ingroup PkgAlgebraicKernelDConceptsBi \cgalConcept Computes whether the given bivariate polynomial is square free. diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--IsZeroAt_2.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--IsZeroAt_2.h index 7add7a0ba30..bd7871600c6 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--IsZeroAt_2.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--IsZeroAt_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsBi +\ingroup PkgAlgebraicKernelDConceptsBi \cgalConcept Computes whether an `AlgebraicKernel_d_2::Polynomial_2` diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--IsolateX_2.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--IsolateX_2.h index 1c8d09dbaad..5574fa4db2d 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--IsolateX_2.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--IsolateX_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsBi +\ingroup PkgAlgebraicKernelDConceptsBi \cgalConcept Computes an isolating interval for the first coordinate of an `AlgebraicKernel_d_2::Algebraic_real_2` diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--IsolateY_2.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--IsolateY_2.h index 09d35efb5db..0d5e978d941 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--IsolateY_2.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--IsolateY_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsBi +\ingroup PkgAlgebraicKernelDConceptsBi \cgalConcept Computes an isolating interval for the second coordinate of an `AlgebraicKernel_d_2::Algebraic_real_2` diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--Isolate_2.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--Isolate_2.h index e3dcef25a28..5c8d68973d5 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--Isolate_2.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--Isolate_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsBi +\ingroup PkgAlgebraicKernelDConceptsBi \cgalConcept Computes an isolating box for a given `AlgebraicKernel_d_2::Algebraic_real_2`. diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--MakeCoprime_2.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--MakeCoprime_2.h index d5ac00efc69..155bdbf65d5 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--MakeCoprime_2.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--MakeCoprime_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsBi +\ingroup PkgAlgebraicKernelDConceptsBi \cgalConcept Computes for a given pair of bivariate polynomials \f$ p_1\f$, \f$ p_2\f$ their diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--MakeSquareFree_2.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--MakeSquareFree_2.h index f9175866e5d..acf5ec20cf7 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--MakeSquareFree_2.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--MakeSquareFree_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsBi +\ingroup PkgAlgebraicKernelDConceptsBi \cgalConcept Returns a square free part of a bivariate polynomial. diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--NumberOfSolutions_2.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--NumberOfSolutions_2.h index be42927f55e..9d89a8a885f 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--NumberOfSolutions_2.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--NumberOfSolutions_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsBi +\ingroup PkgAlgebraicKernelDConceptsBi \cgalConcept Computes the number of real solutions of the given bivariate polynomial system. diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--SignAt_2.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--SignAt_2.h index 1848718d807..c63604b2d38 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--SignAt_2.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--SignAt_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsBi +\ingroup PkgAlgebraicKernelDConceptsBi \cgalConcept Computes the sign of a bivariate polynomial diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--Solve_2.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--Solve_2.h index 50541524b2d..fefefd5b322 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--Solve_2.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--Solve_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsBi +\ingroup PkgAlgebraicKernelDConceptsBi \cgalConcept Computes the real zero-dimensional solutions of a bivariate polynomial system. diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--SquareFreeFactorize_2.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--SquareFreeFactorize_2.h index e0e754c0adb..48a73376c7c 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--SquareFreeFactorize_2.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2--SquareFreeFactorize_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsBi +\ingroup PkgAlgebraicKernelDConceptsBi \cgalConcept Computes a square free factorization of an diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2.h b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2.h index 758d153c06f..53d701efa69 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2.h +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/Concepts/AlgebraicKernel_d_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlgebraicKerneldConceptsBi +\ingroup PkgAlgebraicKernelDConceptsBi \cgalConcept A model of the `AlgebraicKernel_d_2` concept gathers necessary tools diff --git a/Algebraic_kernel_d/doc/Algebraic_kernel_d/PackageDescription.txt b/Algebraic_kernel_d/doc/Algebraic_kernel_d/PackageDescription.txt index c47391fc374..1aeab366c90 100644 --- a/Algebraic_kernel_d/doc/Algebraic_kernel_d/PackageDescription.txt +++ b/Algebraic_kernel_d/doc/Algebraic_kernel_d/PackageDescription.txt @@ -1,28 +1,28 @@ -/// \defgroup PkgAlgebraicKerneld Algebraic Kernel Reference +/// \defgroup PkgAlgebraicKernelDRef Algebraic Kernel Reference -/// \defgroup PkgAlgebraicKerneldConcepts Concepts -/// \ingroup PkgAlgebraicKerneld +/// \defgroup PkgAlgebraicKernelDConcepts Concepts +/// \ingroup PkgAlgebraicKernelDRef -/// \defgroup PkgAlgebraicKerneldConceptsUni Univariate Algebraic Kernel -/// \ingroup PkgAlgebraicKerneldConcepts +/// \defgroup PkgAlgebraicKernelDConceptsUni Univariate Algebraic Kernel +/// \ingroup PkgAlgebraicKernelDConcepts -/// \defgroup PkgAlgebraicKerneldConceptsBi Bivariate Algebraic Kernel -/// \ingroup PkgAlgebraicKerneldConcepts +/// \defgroup PkgAlgebraicKernelDConceptsBi Bivariate Algebraic Kernel +/// \ingroup PkgAlgebraicKernelDConcepts -/// \defgroup PkgAlgebraicKerneldModels Models -/// \ingroup PkgAlgebraicKerneld +/// \defgroup PkgAlgebraicKernelDModels Models +/// \ingroup PkgAlgebraicKernelDRef /*! -\addtogroup PkgAlgebraicKerneld +\addtogroup PkgAlgebraicKernelDRef \todo check generated documentation -\cgalPkgDescriptionBegin{Algebraic Kernel,PkgAlgebraicKerneldSummary} +\cgalPkgDescriptionBegin{Algebraic Kernel,PkgAlgebraicKernelD} \cgalPkgPicture{Algebraic_kernel_d.png} \cgalPkgSummaryBegin \cgalPkgAuthors{Eric Berberich, Michael Hemmer, Michael Kerber, Sylvain Lazard, Luis Peñaranda, and Monique Teillaud} \cgalPkgDesc{Real solving of polynomials is a fundamental problem with a wide application range. This package is targeted to provide black-box implementations of state-of-the-art algorithms to determine, compare and approximate real roots of univariate polynomials and bivariate polynomial systems. Such a black-box is called an *Algebraic %Kernel*. So far the package only provides models for the univariate kernel. Nevertheless, it already defines concepts for the bivariate kernel, since this settles the interface for upcoming implementations.} -\cgalPkgManuals{Chapter_Algebraic_Kernel,PkgAlgebraicKerneld} +\cgalPkgManuals{Chapter_Algebraic_Kernel,PkgAlgebraicKernelDRef} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{3.6} diff --git a/Algebraic_kernel_d/examples/Algebraic_kernel_d/CMakeLists.txt b/Algebraic_kernel_d/examples/Algebraic_kernel_d/CMakeLists.txt index 366cc0cb9c2..d6a7178ec13 100644 --- a/Algebraic_kernel_d/examples/Algebraic_kernel_d/CMakeLists.txt +++ b/Algebraic_kernel_d/examples/Algebraic_kernel_d/CMakeLists.txt @@ -6,14 +6,13 @@ cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET COMPONENTS Core) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) find_package(MPFI QUIET) endif() if( CGAL_FOUND AND MPFI_FOUND) + include( ${CGAL_USE_FILE} ) include( ${MPFI_USE_FILE} ) - include( CGAL_CreateSingleSourceCGALProgram ) include( CGAL_VersionUtils ) create_single_source_cgal_program( "Compare_1.cpp" ) diff --git a/Algebraic_kernel_d/test/Algebraic_kernel_d/CMakeLists.txt b/Algebraic_kernel_d/test/Algebraic_kernel_d/CMakeLists.txt index 5d1ddbaa0e5..a75ee88082e 100644 --- a/Algebraic_kernel_d/test/Algebraic_kernel_d/CMakeLists.txt +++ b/Algebraic_kernel_d/test/Algebraic_kernel_d/CMakeLists.txt @@ -13,9 +13,6 @@ if ( NOT CGAL_FOUND ) endif() -# include helper file -include( ${CGAL_USE_FILE} ) - find_package(RS3 QUIET) if(MPFI_FOUND) @@ -25,8 +22,6 @@ if(RS3_FOUND) include( ${RS3_USE_FILE} ) endif() -include( CGAL_CreateSingleSourceCGALProgram ) - # Boost and its components find_package( Boost ) @@ -41,14 +36,11 @@ endif() # include for local directory include_directories( BEFORE include ) -# include for local package -include_directories( BEFORE ../../include ) +include( ${CGAL_USE_FILE} ) # Creating entries for all .cpp/.C files with "main" routine # ########################################################## -include( CGAL_CreateSingleSourceCGALProgram ) - create_single_source_cgal_program( "cyclic.cpp" ) create_single_source_cgal_program( "Algebraic_curve_kernel_2.cpp" ) create_single_source_cgal_program( "algebraic_curve_kernel_2_tools.cpp" ) 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 92dd71db11c..4261dd0c584 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 @@ -4,19 +4,13 @@ project( Algebraic_kernel_for_circles_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - - include_directories (BEFORE "include") + include_directories (BEFORE "include") # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) 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 bdc8b022ef6..6b8567c4727 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 @@ -4,19 +4,13 @@ project( Algebraic_kernel_for_spheres_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - - include_directories (BEFORE "include") + include_directories (BEFORE "include") # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) diff --git a/Alpha_shapes_2/doc/Alpha_shapes_2/CGAL/Alpha_shape_2.h b/Alpha_shapes_2/doc/Alpha_shapes_2/CGAL/Alpha_shape_2.h index fd3f480a7fb..60ff817f059 100644 --- a/Alpha_shapes_2/doc/Alpha_shapes_2/CGAL/Alpha_shape_2.h +++ b/Alpha_shapes_2/doc/Alpha_shapes_2/CGAL/Alpha_shape_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgAlphaShape2 +\ingroup PkgAlphaShapes2Ref The class `Alpha_shape_2` represents the family of \f$ \alpha\f$-shapes of points in a plane for all positive @@ -108,6 +108,10 @@ resorting to exact arithmetic). Access to the interval containing the exact valu with `Protected=true`. Access to the exact value is provided through the function `FT::Exact_nt exact() const` where `FT::Exact_nt` depends on the configuration of %CGAL (it is `Gmpq` if `gmp` is available and `Quotient` otherwise). +An overload for the function `double to_double(FT)` is also available. Its +precision is controlled through `FT::set_relative_precision_of_to_double()` in +exactly the same way as with `Lazy_exact_nt`, so a call to `to_double` may +trigger an exact evaluation. It must be noted that an object of type `FT` is valid as long as the alpha shapes class that creates it is valid and has not been modified. For convenience, classical comparison operators are provided for the type `FT`. diff --git a/Alpha_shapes_2/doc/Alpha_shapes_2/CGAL/Alpha_shape_face_base_2.h b/Alpha_shapes_2/doc/Alpha_shapes_2/CGAL/Alpha_shape_face_base_2.h index b6a5a330ae5..7b94e488aeb 100644 --- a/Alpha_shapes_2/doc/Alpha_shapes_2/CGAL/Alpha_shape_face_base_2.h +++ b/Alpha_shapes_2/doc/Alpha_shapes_2/CGAL/Alpha_shape_face_base_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgAlphaShape2 +\ingroup PkgAlphaShapes2Ref The class `Alpha_shape_face_base_2` is the default model for the concept `AlphaShapeFace_2`. diff --git a/Alpha_shapes_2/doc/Alpha_shapes_2/CGAL/Alpha_shape_vertex_base_2.h b/Alpha_shapes_2/doc/Alpha_shapes_2/CGAL/Alpha_shape_vertex_base_2.h index f20b2dfe563..755c8af5fb4 100644 --- a/Alpha_shapes_2/doc/Alpha_shapes_2/CGAL/Alpha_shape_vertex_base_2.h +++ b/Alpha_shapes_2/doc/Alpha_shapes_2/CGAL/Alpha_shape_vertex_base_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgAlphaShape2 +\ingroup PkgAlphaShapes2Ref The class `Alpha_shape_vertex_base_2` is the default model for the concept `AlphaShapeVertex_2`. diff --git a/Alpha_shapes_2/doc/Alpha_shapes_2/CGAL/Weighted_alpha_shape_euclidean_traits_2.h b/Alpha_shapes_2/doc/Alpha_shapes_2/CGAL/Weighted_alpha_shape_euclidean_traits_2.h index 93852d99a12..b182ba9e388 100644 --- a/Alpha_shapes_2/doc/Alpha_shapes_2/CGAL/Weighted_alpha_shape_euclidean_traits_2.h +++ b/Alpha_shapes_2/doc/Alpha_shapes_2/CGAL/Weighted_alpha_shape_euclidean_traits_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgAlphaShape2 +\ingroup PkgAlphaShapes2Ref \deprecated The class is deprecated since \cgal 4.10, as the weighted point and the function objects for weighted points are part of the concept `Kernel`. The class is kept for backward diff --git a/Alpha_shapes_2/doc/Alpha_shapes_2/Concepts/AlphaShapeFace_2.h b/Alpha_shapes_2/doc/Alpha_shapes_2/Concepts/AlphaShapeFace_2.h index 4edbc836b4f..330f343719b 100644 --- a/Alpha_shapes_2/doc/Alpha_shapes_2/Concepts/AlphaShapeFace_2.h +++ b/Alpha_shapes_2/doc/Alpha_shapes_2/Concepts/AlphaShapeFace_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlphaShape2Concepts +\ingroup PkgAlphaShapes2Concepts \cgalConcept The concept `AlphaShapeFace_2` describes the requirements for the base face of an alpha shape. diff --git a/Alpha_shapes_2/doc/Alpha_shapes_2/Concepts/AlphaShapeTraits_2.h b/Alpha_shapes_2/doc/Alpha_shapes_2/Concepts/AlphaShapeTraits_2.h index bcac27ecb44..be6e2389a11 100644 --- a/Alpha_shapes_2/doc/Alpha_shapes_2/Concepts/AlphaShapeTraits_2.h +++ b/Alpha_shapes_2/doc/Alpha_shapes_2/Concepts/AlphaShapeTraits_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlphaShape2Concepts +\ingroup PkgAlphaShapes2Concepts \cgalConcept The concept `AlphaShapeTraits_2` describes the requirements for the geometric traits diff --git a/Alpha_shapes_2/doc/Alpha_shapes_2/Concepts/AlphaShapeVertex_2.h b/Alpha_shapes_2/doc/Alpha_shapes_2/Concepts/AlphaShapeVertex_2.h index e0224242fc9..a9287eb5aff 100644 --- a/Alpha_shapes_2/doc/Alpha_shapes_2/Concepts/AlphaShapeVertex_2.h +++ b/Alpha_shapes_2/doc/Alpha_shapes_2/Concepts/AlphaShapeVertex_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlphaShape2Concepts +\ingroup PkgAlphaShapes2Concepts \cgalConcept The concept `AlphaShapeVertex_2` describes the requirements for the base vertex of an alpha shape. diff --git a/Alpha_shapes_2/doc/Alpha_shapes_2/Concepts/WeightedAlphaShapeTraits_2.h b/Alpha_shapes_2/doc/Alpha_shapes_2/Concepts/WeightedAlphaShapeTraits_2.h index b39e85a728f..09c7597b39b 100644 --- a/Alpha_shapes_2/doc/Alpha_shapes_2/Concepts/WeightedAlphaShapeTraits_2.h +++ b/Alpha_shapes_2/doc/Alpha_shapes_2/Concepts/WeightedAlphaShapeTraits_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgAlphaShape2Concepts +\ingroup PkgAlphaShapes2Concepts \cgalConcept The concept `WeightedAlphaShapeTraits_2` describes the requirements diff --git a/Alpha_shapes_2/doc/Alpha_shapes_2/PackageDescription.txt b/Alpha_shapes_2/doc/Alpha_shapes_2/PackageDescription.txt index 89f592fe677..1f982595424 100644 --- a/Alpha_shapes_2/doc/Alpha_shapes_2/PackageDescription.txt +++ b/Alpha_shapes_2/doc/Alpha_shapes_2/PackageDescription.txt @@ -1,20 +1,20 @@ -/// \defgroup PkgAlphaShape2 2D Alpha Shapes Reference -/// \defgroup PkgAlphaShape2Concepts Concepts -/// \ingroup PkgAlphaShape2 +/// \defgroup PkgAlphaShapes2Ref 2D Alpha Shapes Reference +/// \defgroup PkgAlphaShapes2Concepts Concepts +/// \ingroup PkgAlphaShapes2Ref /*! -\addtogroup PkgAlphaShape2 +\addtogroup PkgAlphaShapes2Ref -\cgalPkgDescriptionBegin{2D Alpha Shapes,PkgAlphaShape2Summary} +\cgalPkgDescriptionBegin{2D Alpha Shapes,PkgAlphaShapes2} \cgalPkgPicture{alpha-detail.png} \cgalPkgSummaryBegin \cgalPkgAuthors{Tran Kai Frank Da} \cgalPkgDesc{This package offers a data structure encoding the whole family of alpha-complexes related to a given 2D Delaunay or regular triangulation. In particular, the data structure allows to retrieve the alpha-complex for any alpha value, the whole spectrum of critical alpha values and a filtration on the triangulation faces (this filtration is based on the first alpha value for which each face is included on the alpha-complex).} -\cgalPkgManuals{Chapter_2D_Alpha_Shapes,PkgAlphaShape2} +\cgalPkgManuals{Chapter_2D_Alpha_Shapes,PkgAlphaShapes2Ref} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{2.1} -\cgalPkgDependsOn{\ref PkgTriangulation2Summary} +\cgalPkgDependsOn{\ref PkgTriangulation2} \cgalPkgBib{cgal:d-as2} \cgalPkgLicense{\ref licensesGPL "GPL"} \cgalPkgDemo{2D Alpha Shapes,alpha_shapes_2.zip} diff --git a/Alpha_shapes_2/examples/Alpha_shapes_2/CMakeLists.txt b/Alpha_shapes_2/examples/Alpha_shapes_2/CMakeLists.txt index 15b8a33b1d6..79131b56ac0 100644 --- a/Alpha_shapes_2/examples/Alpha_shapes_2/CMakeLists.txt +++ b/Alpha_shapes_2/examples/Alpha_shapes_2/CMakeLists.txt @@ -4,18 +4,12 @@ project( Alpha_shapes_2_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Alpha_shapes_2/include/CGAL/internal/Lazy_alpha_nt_2.h b/Alpha_shapes_2/include/CGAL/internal/Lazy_alpha_nt_2.h index 83eeac727d5..eb2aabbf0d6 100644 --- a/Alpha_shapes_2/include/CGAL/internal/Lazy_alpha_nt_2.h +++ b/Alpha_shapes_2/include/CGAL/internal/Lazy_alpha_nt_2.h @@ -186,7 +186,25 @@ class Lazy_alpha_nt_2 const Data_vector& data() const{ return input_points;} Data_vector& data(){ return input_points;} + static double & relative_precision_of_to_double_internal() + { + CGAL_STATIC_THREAD_LOCAL_VARIABLE(double, relative_precision_of_to_double, 0.00001); + return relative_precision_of_to_double; + } + public: + + static const double & get_relative_precision_of_to_double() + { + return relative_precision_of_to_double_internal(); + } + + static void set_relative_precision_of_to_double(double d) + { + CGAL_assertion((0 < d) & (d < 1)); + relative_precision_of_to_double_internal() = d; + } + typedef NT_exact Exact_nt; typedef NT_approx Approximate_nt; @@ -449,7 +467,17 @@ struct Alpha_nt_selector_2 template double to_double(const internal::Lazy_alpha_nt_2& a) { - return to_double(a.approx()); + double r; + if (fit_in_double(a.approx(), r)) + return r; + + // If it isn't precise enough, + // we trigger the exact computation first, + // which will refine the approximation. + if (!has_smaller_relative_precision(a.approx(), a.get_relative_precision_of_to_double())) + a.exact(); + + return CGAL_NTS to_double(a.approx()); } } // namespace CGAL diff --git a/Alpha_shapes_2/test/Alpha_shapes_2/CMakeLists.txt b/Alpha_shapes_2/test/Alpha_shapes_2/CMakeLists.txt index 86838ab803e..8724fa225f4 100644 --- a/Alpha_shapes_2/test/Alpha_shapes_2/CMakeLists.txt +++ b/Alpha_shapes_2/test/Alpha_shapes_2/CMakeLists.txt @@ -4,18 +4,12 @@ project( Alpha_shapes_2_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Alpha_shapes_3/demo/Alpha_shapes_3/CMakeLists.txt b/Alpha_shapes_3/demo/Alpha_shapes_3/CMakeLists.txt index e00a76ae742..6df765a5b7a 100644 --- a/Alpha_shapes_3/demo/Alpha_shapes_3/CMakeLists.txt +++ b/Alpha_shapes_3/demo/Alpha_shapes_3/CMakeLists.txt @@ -17,7 +17,6 @@ if(POLICY CMP0071) endif() find_package(CGAL COMPONENTS Qt5) -include(${CGAL_USE_FILE}) find_package(Qt5 QUIET COMPONENTS Xml Script OpenGL Svg) @@ -26,7 +25,7 @@ if ( CGAL_FOUND AND CGAL_Qt5_FOUND AND Qt5_FOUND ) add_definitions(-DQT_NO_KEYWORDS) # include(${QT_USE_FILE}) - include_directories (BEFORE ../../include ./ ) + include_directories (BEFORE ./ ) # ui file, created wih Qt Designer qt5_wrap_ui( uis MainWindow.ui ) diff --git a/Alpha_shapes_3/doc/Alpha_shapes_3/CGAL/Alpha_shape_3.h b/Alpha_shapes_3/doc/Alpha_shapes_3/CGAL/Alpha_shape_3.h index 52f081ba007..9046a58a2eb 100644 --- a/Alpha_shapes_3/doc/Alpha_shapes_3/CGAL/Alpha_shape_3.h +++ b/Alpha_shapes_3/doc/Alpha_shapes_3/CGAL/Alpha_shape_3.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgAlphaShapes3 +\ingroup PkgAlphaShapes3Ref The class `Alpha_shape_3` represents the family of alpha shapes of points in the 3D space for all real @@ -104,8 +104,11 @@ resorting to exact arithmetic). Access to the interval containing the exact valu `FT::Approximate_nt approx() const` where `FT::Approximate_nt` is `Interval_nt` with `Protected=true`. Access to the exact value is provided through the function `FT::Exact_nt exact() const` where `FT::Exact_nt` depends on the configuration of %CGAL -(it is `Gmpq` if `gmp` is available and `Quotient` otherwise). -An overload for the function `double to_double(FT)` is also available. +(it may be `mpq_class`, `Gmpq`, `Quotient`, etc). +An overload for the function `double to_double(FT)` is also available. Its +precision is controlled through `FT::set_relative_precision_of_to_double()` in +exactly the same way as with `Lazy_exact_nt`, so a call to `to_double` may +trigger an exact evaluation. It must be noted that an object of type `FT` is valid as long as the alpha shapes class that creates it is valid and has not been modified. For convenience, classical comparison operators are provided for the type `FT`. diff --git a/Alpha_shapes_3/doc/Alpha_shapes_3/CGAL/Alpha_shape_cell_base_3.h b/Alpha_shapes_3/doc/Alpha_shapes_3/CGAL/Alpha_shape_cell_base_3.h index f733d1a9a8c..b57d44fe618 100644 --- a/Alpha_shapes_3/doc/Alpha_shapes_3/CGAL/Alpha_shape_cell_base_3.h +++ b/Alpha_shapes_3/doc/Alpha_shapes_3/CGAL/Alpha_shape_cell_base_3.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgAlphaShapes3 +\ingroup PkgAlphaShapes3Ref The class `Alpha_shape_cell_base_3` is the default model for the concept `AlphaShapeCell_3`. @@ -37,7 +37,7 @@ public: namespace CGAL { /*! -\ingroup PkgAlphaShapes3 +\ingroup PkgAlphaShapes3Ref The class `Alpha_status` is a small data structure to store the critical alpha values of faces of an alpha shape. diff --git a/Alpha_shapes_3/doc/Alpha_shapes_3/CGAL/Alpha_shape_vertex_base_3.h b/Alpha_shapes_3/doc/Alpha_shapes_3/CGAL/Alpha_shape_vertex_base_3.h index 48a900c3234..146a941e218 100644 --- a/Alpha_shapes_3/doc/Alpha_shapes_3/CGAL/Alpha_shape_vertex_base_3.h +++ b/Alpha_shapes_3/doc/Alpha_shapes_3/CGAL/Alpha_shape_vertex_base_3.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgAlphaShapes3 +\ingroup PkgAlphaShapes3Ref The class `Alpha_shape_vertex_base_3` is the default model for the concept `AlphaShapeVertex_3`. diff --git a/Alpha_shapes_3/doc/Alpha_shapes_3/CGAL/Fixed_alpha_shape_3.h b/Alpha_shapes_3/doc/Alpha_shapes_3/CGAL/Fixed_alpha_shape_3.h index 71b7394b4ef..d7bad466690 100644 --- a/Alpha_shapes_3/doc/Alpha_shapes_3/CGAL/Fixed_alpha_shape_3.h +++ b/Alpha_shapes_3/doc/Alpha_shapes_3/CGAL/Fixed_alpha_shape_3.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgAlphaShapes3 +\ingroup PkgAlphaShapes3Ref The class `Fixed_alpha_shape_3` represents one (fixed) alpha shape of points in the 3D space for a real diff --git a/Alpha_shapes_3/doc/Alpha_shapes_3/CGAL/Fixed_alpha_shape_cell_base_3.h b/Alpha_shapes_3/doc/Alpha_shapes_3/CGAL/Fixed_alpha_shape_cell_base_3.h index 776e787b20c..ab50625bfd5 100644 --- a/Alpha_shapes_3/doc/Alpha_shapes_3/CGAL/Fixed_alpha_shape_cell_base_3.h +++ b/Alpha_shapes_3/doc/Alpha_shapes_3/CGAL/Fixed_alpha_shape_cell_base_3.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgAlphaShapes3 +\ingroup PkgAlphaShapes3Ref The class `Fixed_alpha_shape_cell_base_3` is the default model for the concept `FixedAlphaShapeCell_3`. diff --git a/Alpha_shapes_3/doc/Alpha_shapes_3/CGAL/Fixed_alpha_shape_vertex_base_3.h b/Alpha_shapes_3/doc/Alpha_shapes_3/CGAL/Fixed_alpha_shape_vertex_base_3.h index d512a99e4a0..5c132505980 100644 --- a/Alpha_shapes_3/doc/Alpha_shapes_3/CGAL/Fixed_alpha_shape_vertex_base_3.h +++ b/Alpha_shapes_3/doc/Alpha_shapes_3/CGAL/Fixed_alpha_shape_vertex_base_3.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgAlphaShapes3 +\ingroup PkgAlphaShapes3Ref The class `Fixed_alpha_shape_vertex_base_3` is the default model for the concept `FixedAlphaShapeVertex_3`. diff --git a/Alpha_shapes_3/doc/Alpha_shapes_3/PackageDescription.txt b/Alpha_shapes_3/doc/Alpha_shapes_3/PackageDescription.txt index 279faf91035..cd6d40f3d30 100644 --- a/Alpha_shapes_3/doc/Alpha_shapes_3/PackageDescription.txt +++ b/Alpha_shapes_3/doc/Alpha_shapes_3/PackageDescription.txt @@ -1,18 +1,18 @@ -/// \defgroup PkgAlphaShapes3 3D Alpha Shapes Reference +/// \defgroup PkgAlphaShapes3Ref 3D Alpha Shapes Reference /// \defgroup PkgAlphaShapes3Concepts Concepts -/// \ingroup PkgAlphaShapes3 +/// \ingroup PkgAlphaShapes3Ref /*! -\addtogroup PkgAlphaShapes3 -\cgalPkgDescriptionBegin{3D Alpha Shapes,PkgAlphaShapes3Summary} +\addtogroup PkgAlphaShapes3Ref +\cgalPkgDescriptionBegin{3D Alpha Shapes,PkgAlphaShapes3} \cgalPkgPicture{alpha_shapes_3_small.png} \cgalPkgSummaryBegin \cgalPkgAuthors{Tran Kai Frank Da, Sébastien Loriot, and Mariette Yvinec} \cgalPkgDesc{This package offers a data structure encoding either one alpha-complex or the whole family of alpha-complexes related to a given 3D Delaunay or regular triangulation. In the latter case, the data structure allows to retrieve the alpha-complex for any alpha value, the whole spectrum of critical alpha values and a filtration on the triangulation faces (this filtration is based on the first alpha value for which each face is included on the alpha-complex). } -\cgalPkgManuals{Chapter_3D_Alpha_Shapes,PkgAlphaShapes3} +\cgalPkgManuals{Chapter_3D_Alpha_Shapes,PkgAlphaShapes3Ref} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{2.3} -\cgalPkgDependsOn{\ref PkgTriangulation3Summary} +\cgalPkgDependsOn{\ref PkgTriangulation3} \cgalPkgBib{cgal:dy-as3} \cgalPkgLicense{\ref licensesGPL "GPL"} \cgalPkgDemo{3D Alpha Shapes,alpha_shape_3.zip} diff --git a/Alpha_shapes_3/examples/Alpha_shapes_3/CMakeLists.txt b/Alpha_shapes_3/examples/Alpha_shapes_3/CMakeLists.txt index a9f5a5408fa..c9d88b3942e 100644 --- a/Alpha_shapes_3/examples/Alpha_shapes_3/CMakeLists.txt +++ b/Alpha_shapes_3/examples/Alpha_shapes_3/CMakeLists.txt @@ -4,18 +4,12 @@ project( Alpha_shapes_3_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Alpha_shapes_3/include/CGAL/internal/Lazy_alpha_nt_3.h b/Alpha_shapes_3/include/CGAL/internal/Lazy_alpha_nt_3.h index 97005825a79..3a0ffedc88e 100644 --- a/Alpha_shapes_3/include/CGAL/internal/Lazy_alpha_nt_3.h +++ b/Alpha_shapes_3/include/CGAL/internal/Lazy_alpha_nt_3.h @@ -177,8 +177,25 @@ class Lazy_alpha_nt_3{ const Data_vector& data() const{ return input_points;} Data_vector& data(){ return input_points;} + static double & relative_precision_of_to_double_internal() + { + CGAL_STATIC_THREAD_LOCAL_VARIABLE(double, relative_precision_of_to_double, 0.00001); + return relative_precision_of_to_double; + } + public: + static const double & get_relative_precision_of_to_double() + { + return relative_precision_of_to_double_internal(); + } + + static void set_relative_precision_of_to_double(double d) + { + CGAL_assertion((0 < d) & (d < 1)); + relative_precision_of_to_double_internal() = d; + } + typedef NT_exact Exact_nt; typedef NT_approx Approximate_nt; @@ -419,7 +436,17 @@ struct Alpha_nt_selector_3 template double to_double(const internal::Lazy_alpha_nt_3& a) { - return to_double(a.approx()); + double r; + if (fit_in_double(a.approx(), r)) + return r; + + // If it isn't precise enough, + // we trigger the exact computation first, + // which will refine the approximation. + if (!has_smaller_relative_precision(a.approx(), a.get_relative_precision_of_to_double())) + a.exact(); + + return CGAL_NTS to_double(a.approx()); } } //namespace CGAL diff --git a/Alpha_shapes_3/test/Alpha_shapes_3/CMakeLists.txt b/Alpha_shapes_3/test/Alpha_shapes_3/CMakeLists.txt index 528247733b7..600a2a8ae41 100644 --- a/Alpha_shapes_3/test/Alpha_shapes_3/CMakeLists.txt +++ b/Alpha_shapes_3/test/Alpha_shapes_3/CMakeLists.txt @@ -4,19 +4,13 @@ project( Alpha_shapes_3_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - - include_directories (BEFORE "include") + include_directories (BEFORE "include") # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) diff --git a/Apollonius_graph_2/doc/Apollonius_graph_2/CGAL/Apollonius_graph_2.h b/Apollonius_graph_2/doc/Apollonius_graph_2/CGAL/Apollonius_graph_2.h index 27bb8401c69..6716e9095da 100644 --- a/Apollonius_graph_2/doc/Apollonius_graph_2/CGAL/Apollonius_graph_2.h +++ b/Apollonius_graph_2/doc/Apollonius_graph_2/CGAL/Apollonius_graph_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgApolloniusGraph2 +\ingroup PkgApolloniusGraph2Ref The class `Apollonius_graph_2` represents the Apollonius graph. It supports insertions and deletions of sites. diff --git a/Apollonius_graph_2/doc/Apollonius_graph_2/CGAL/Apollonius_graph_filtered_traits_2.h b/Apollonius_graph_2/doc/Apollonius_graph_2/CGAL/Apollonius_graph_filtered_traits_2.h index 8f972d24d33..a1b4a8003d5 100644 --- a/Apollonius_graph_2/doc/Apollonius_graph_2/CGAL/Apollonius_graph_filtered_traits_2.h +++ b/Apollonius_graph_2/doc/Apollonius_graph_2/CGAL/Apollonius_graph_filtered_traits_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgApolloniusGraph2 +\ingroup PkgApolloniusGraph2Ref The class `Apollonius_graph_filtered_traits_2` provides a model for the `ApolloniusGraphTraits_2` concept. diff --git a/Apollonius_graph_2/doc/Apollonius_graph_2/CGAL/Apollonius_graph_hierarchy_2.h b/Apollonius_graph_2/doc/Apollonius_graph_2/CGAL/Apollonius_graph_hierarchy_2.h index 863167f6e3b..6456ef59549 100644 --- a/Apollonius_graph_2/doc/Apollonius_graph_2/CGAL/Apollonius_graph_hierarchy_2.h +++ b/Apollonius_graph_2/doc/Apollonius_graph_2/CGAL/Apollonius_graph_hierarchy_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgApolloniusGraph2 +\ingroup PkgApolloniusGraph2Ref We provide an alternative to the class `Apollonius_graph_2` for the dynamic diff --git a/Apollonius_graph_2/doc/Apollonius_graph_2/CGAL/Apollonius_graph_hierarchy_vertex_base_2.h b/Apollonius_graph_2/doc/Apollonius_graph_2/CGAL/Apollonius_graph_hierarchy_vertex_base_2.h index d04be3c9250..5dd5bf06793 100644 --- a/Apollonius_graph_2/doc/Apollonius_graph_2/CGAL/Apollonius_graph_hierarchy_vertex_base_2.h +++ b/Apollonius_graph_2/doc/Apollonius_graph_2/CGAL/Apollonius_graph_hierarchy_vertex_base_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgApolloniusGraph2 +\ingroup PkgApolloniusGraph2Ref The class `Apollonius_graph_hierarchy_vertex_base_2` provides a model for the `ApolloniusGraphHierarchyVertexBase_2` concept, which is the diff --git a/Apollonius_graph_2/doc/Apollonius_graph_2/CGAL/Apollonius_graph_traits_2.h b/Apollonius_graph_2/doc/Apollonius_graph_2/CGAL/Apollonius_graph_traits_2.h index bdd1cc2b503..6f3d11a7517 100644 --- a/Apollonius_graph_2/doc/Apollonius_graph_2/CGAL/Apollonius_graph_traits_2.h +++ b/Apollonius_graph_2/doc/Apollonius_graph_2/CGAL/Apollonius_graph_traits_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgApolloniusGraph2 +\ingroup PkgApolloniusGraph2Ref The class `Apollonius_graph_traits_2` provides a model for the `ApolloniusGraphTraits_2` concept. diff --git a/Apollonius_graph_2/doc/Apollonius_graph_2/CGAL/Apollonius_graph_vertex_base_2.h b/Apollonius_graph_2/doc/Apollonius_graph_2/CGAL/Apollonius_graph_vertex_base_2.h index a1ab5ac7b74..c86d80b0b1a 100644 --- a/Apollonius_graph_2/doc/Apollonius_graph_2/CGAL/Apollonius_graph_vertex_base_2.h +++ b/Apollonius_graph_2/doc/Apollonius_graph_2/CGAL/Apollonius_graph_vertex_base_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgApolloniusGraph2 +\ingroup PkgApolloniusGraph2Ref The class `Apollonius_graph_vertex_base_2` provides a model for the `ApolloniusGraphVertexBase_2` concept which is the vertex base diff --git a/Apollonius_graph_2/doc/Apollonius_graph_2/CGAL/Apollonius_site_2.h b/Apollonius_graph_2/doc/Apollonius_graph_2/CGAL/Apollonius_site_2.h index fe4ddc0de0d..a77be4d6fe1 100644 --- a/Apollonius_graph_2/doc/Apollonius_graph_2/CGAL/Apollonius_site_2.h +++ b/Apollonius_graph_2/doc/Apollonius_graph_2/CGAL/Apollonius_site_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgApolloniusGraph2 +\ingroup PkgApolloniusGraph2Ref The class `Apollonius_site_2` is a model for the concept `ApolloniusSite_2`. It is parametrized by a template parameter diff --git a/Apollonius_graph_2/doc/Apollonius_graph_2/PackageDescription.txt b/Apollonius_graph_2/doc/Apollonius_graph_2/PackageDescription.txt index a8b8e8c267c..c35cbc53915 100644 --- a/Apollonius_graph_2/doc/Apollonius_graph_2/PackageDescription.txt +++ b/Apollonius_graph_2/doc/Apollonius_graph_2/PackageDescription.txt @@ -1,19 +1,19 @@ -/// \defgroup PkgApolloniusGraph2 2D Apollonius Graphs (Delaunay Graphs of Disks) Reference +/// \defgroup PkgApolloniusGraph2Ref 2D Apollonius Graphs (Delaunay Graphs of Disks) Reference /// \defgroup PkgApolloniusGraph2Concepts Concepts -/// \ingroup PkgApolloniusGraph2 +/// \ingroup PkgApolloniusGraph2Ref /*! -\addtogroup PkgApolloniusGraph2 +\addtogroup PkgApolloniusGraph2Ref \todo check generated documentation -\cgalPkgDescriptionBegin{2D Apollonius Graphs (Delaunay Graphs of Disks),PkgApolloniusGraph2Summary} +\cgalPkgDescriptionBegin{2D Apollonius Graphs (Delaunay Graphs of Disks),PkgApolloniusGraph2} \cgalPkgPicture{CircleVoronoi.png} \cgalPkgSummaryBegin \cgalPkgAuthors{Menelaos Karavelas and Mariette Yvinec} \cgalPkgDesc{Algorithms for computing the Apollonius graph in two dimensions. The Apollonius graph is the dual of the Apollonius diagram, also known as the additively weighted Voronoi diagram. The latter can be thought of as the Voronoi diagram of a set of disks under the Euclidean metric, and it is a generalization of the standard Voronoi diagram for points. The algorithms provided are dynamic.} -\cgalPkgManuals{Chapter_2D_Apollonius_Graphs,PkgApolloniusGraph2} +\cgalPkgManuals{Chapter_2D_Apollonius_Graphs,PkgApolloniusGraph2Ref} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{3.0} -\cgalPkgDependsOn{\ref PkgTDS2Summary} +\cgalPkgDependsOn{\ref PkgTDS2} \cgalPkgBib{cgal:ky-ag2} \cgalPkgLicense{\ref licensesGPL "GPL"} \cgalPkgDemo{2D Apollonius Graph,apollonius_graph_2.zip} diff --git a/Apollonius_graph_2/examples/Apollonius_graph_2/CMakeLists.txt b/Apollonius_graph_2/examples/Apollonius_graph_2/CMakeLists.txt index 286e261911a..07f5f6688ba 100644 --- a/Apollonius_graph_2/examples/Apollonius_graph_2/CMakeLists.txt +++ b/Apollonius_graph_2/examples/Apollonius_graph_2/CMakeLists.txt @@ -4,17 +4,13 @@ project( Apollonius_graph_2_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET COMPONENTS Core ) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") + include(${CGAL_USE_FILE}) # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) diff --git a/Apollonius_graph_2/test/Apollonius_graph_2/CMakeLists.txt b/Apollonius_graph_2/test/Apollonius_graph_2/CMakeLists.txt index 59f708758a2..65c0c68062b 100644 --- a/Apollonius_graph_2/test/Apollonius_graph_2/CMakeLists.txt +++ b/Apollonius_graph_2/test/Apollonius_graph_2/CMakeLists.txt @@ -4,19 +4,13 @@ project( Apollonius_graph_2_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - - include_directories (BEFORE "include") + include_directories (BEFORE "include") # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) diff --git a/Arithmetic_kernel/test/Arithmetic_kernel/CMakeLists.txt b/Arithmetic_kernel/test/Arithmetic_kernel/CMakeLists.txt index 8542a68811b..0df7f74c0f2 100644 --- a/Arithmetic_kernel/test/Arithmetic_kernel/CMakeLists.txt +++ b/Arithmetic_kernel/test/Arithmetic_kernel/CMakeLists.txt @@ -4,31 +4,25 @@ project( Arithmetic_kernel_Tests ) -cmake_minimum_required(VERSION 2.8.11) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET COMPONENTS Core) -if ( CGAL_FOUND) - include( ${CGAL_USE_FILE} ) -endif() - find_package(GMP QUIET) if ( CGAL_FOUND AND GMP_FOUND ) + include(${CGAL_USE_FILE}) include( CGAL_VersionUtils ) get_dependency_version( GMP ) IS_VERSION_LESS("${GMP_VERSION}" "4.2.0" _IS_GMP_VERSION_TO_LOW) - include_directories(../../include) include_directories(include) - include( CGAL_CreateSingleSourceCGALProgram ) - find_package( MPFI ) if( MPFI_FOUND ) 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 b73e7e414e2..31b49747cf8 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 @@ -9,15 +9,14 @@ if(NOT POLICY CMP0070 AND POLICY CMP0053) endif() find_package(CGAL COMPONENTS Core Qt5 ) -include( ${CGAL_USE_FILE} ) find_package( Qt5 QUIET COMPONENTS Gui Widgets) if ( CGAL_FOUND AND CGAL_Qt5_FOUND AND Qt5_FOUND AND CGAL_Core_FOUND) + include(${CGAL_USE_FILE}) + include_directories( ./ ) # Arrangement package includes - include_directories( BEFORE ../../include ) - add_definitions(-DQT_NO_KEYWORDS) qt5_wrap_ui( arrangement_2_uis diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_Bezier_curve_traits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_Bezier_curve_traits_2.h index a98df8df253..cc347e4ecc1 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_Bezier_curve_traits_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_Bezier_curve_traits_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2TraitsClasses +\ingroup PkgArrangementOnSurface2TraitsClasses The traits class `Arr_Bezier_curve_traits_2` is a model of the `ArrangementTraits_2` concept that handles planar Bézier curves. A planar Bézier curve @@ -85,7 +85,7 @@ typedef unspecified_type Algebraic; The `Curve_2` class nested within the Bézier traits class is used to represent a Bézier curve of arbitrary degree, which is defined by a sequence of rational control points. In addition to the methods listed -below, the I/O operators \link PkgArrangement2op_left_shift `operator<<` \endlink and \link PkgArrangement2op_right_shift `operator>>` \endlink for +below, the I/O operators \link PkgArrangementOnSurface2op_left_shift `operator<<` \endlink and \link PkgArrangementOnSurface2op_right_shift `operator>>` \endlink for standard output-streams are also supported. The copy constructor and assignment operator are supported as well. diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_accessor.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_accessor.h index 68be885d043..29d6417b375 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_accessor.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_accessor.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2 +\ingroup PkgArrangementOnSurface2Ref \anchor arr_refarr_access 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 125252aebcc..0b7f00df91a 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 @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2TraitsClasses +\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, diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_batched_point_location.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_batched_point_location.h index 858b8f69486..2609eae0af3 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_batched_point_location.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_batched_point_location.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2PointLocation +\ingroup PkgArrangementOnSurface2PointLocation Performs a batched point-location operation on a given arrangement. It accepts a range of query points, and locates each 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 886655a04b1..f375029fbca 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 @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2TraitsClasses +\ingroup PkgArrangementOnSurface2TraitsClasses The class `Arr_circle_segment_traits_2` is a model of the `ArrangementTraits_2` concept and can be used to construct and maintain arrangements of circular arcs diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_circular_arc_traits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_circular_arc_traits_2.h index 75378bab3bf..d09dacf22b0 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_circular_arc_traits_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_circular_arc_traits_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2TraitsClasses +\ingroup PkgArrangementOnSurface2TraitsClasses This class is a traits class for \cgal arrangements, built on top of a model of concept `CircularKernel`. diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_circular_line_arc_traits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_circular_line_arc_traits_2.h index 417304ca2b0..6230d15e4c7 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_circular_line_arc_traits_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_circular_line_arc_traits_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2TraitsClasses +\ingroup PkgArrangementOnSurface2TraitsClasses This class is a traits class for \cgal arrangements, built on top of a model of concept `CircularKernel`. It provides curves that can be 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 92ba50dbb41..28803e7f8d5 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 @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2TraitsClasses +\ingroup PkgArrangementOnSurface2TraitsClasses The class `Arr_conic_traits_2` is a model of the `ArrangementTraits_2` concept and can be used to construct and maintain arrangements of bounded segments of 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 4c939f85c5d..ab71d28ecc9 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 @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2TraitsClasses +\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 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 8199dd7d2de..eb94a838578 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 @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2TraitsClasses +\ingroup PkgArrangementOnSurface2TraitsClasses The class `Arr_curve_data_traits_2` is a model of the `ArrangementTraits_2` concept and serves as a decorator class that allows the extension of the curves diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_dcel_base.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_dcel_base.h index a95d96de7e2..da8b6d0e672 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_dcel_base.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_dcel_base.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2DCEL +\ingroup PkgArrangementOnSurface2DCEL \anchor arr_refarr_dcel_base diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_default_dcel.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_default_dcel.h index 7de13a1b9f4..937f9961de5 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_default_dcel.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_default_dcel.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2DCEL +\ingroup PkgArrangementOnSurface2DCEL The default Dcel class used by the `Arrangement_2` class-template is parameterized by a traits class, which is a model of the diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_default_overlay_traits.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_default_overlay_traits.h index 3f1dbdcddd2..e18a545236c 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_default_overlay_traits.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_default_overlay_traits.h @@ -2,8 +2,8 @@ namespace CGAL { /*! -\ingroup PkgArrangement2TraitsClasses -\ingroup PkgArrangement2Overlay +\ingroup PkgArrangementOnSurface2TraitsClasses +\ingroup PkgArrangementOnSurface2Overlay An instance of `Arr_default_overlay_traits` should be used for overlaying two arrangements of type `Arrangement` that store no auxiliary data with their Dcel records, where the resulting overlaid arrangement stores no auxiliary @@ -27,8 +27,8 @@ public: namespace CGAL { /*! -\ingroup PkgArrangement2TraitsClasses -\ingroup PkgArrangement2Overlay +\ingroup PkgArrangementOnSurface2TraitsClasses +\ingroup PkgArrangementOnSurface2Overlay An instance of `Arr_face_overlay_traits` should be used for overlaying two arrangements of types `Arr_A` and `Arr_B`, which are instantiated using the same diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_enums.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_enums.h index d7f2b535dc4..21fd0d44af6 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_enums.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_enums.h @@ -1,7 +1,7 @@ namespace CGAL { /*! - \ingroup PkgArrangement2Enums + \ingroup PkgArrangementOnSurface2Enums The enumeration `Arr_curve_end` is used to indicate one of the two ends of an \f$ x\f$-monotone curve. It is used by models of the `ArrangementOpenBoundaryTraits_2` concept. @@ -11,7 +11,7 @@ namespace CGAL { enum Arr_curve_end { ARR_MIN_END, ARR_MAX_END }; /*! - \ingroup PkgArrangement2Enums + \ingroup PkgArrangementOnSurface2Enums The enumeration `Arr_halfedge_direction` is defined by `CGAL::Arrangement_2::Halfedge` to specify @@ -22,32 +22,32 @@ enum Arr_curve_end { ARR_MIN_END, ARR_MAX_END }; enum Arr_halfedge_direction { ARR_LEFT_TO_RIGHT, ARR_RIGHT_TO_LEFT }; /*! - \ingroup PkgArrangement2Enums + \ingroup PkgArrangementOnSurface2Enums */ typedef Box_parameter_space_2 Arr_parameter_space; /*! - \ingroup PkgArrangement2Enums + \ingroup PkgArrangementOnSurface2Enums */ const Arr_parameter_space ARR_LEFT_BOUNDARY = LEFT_BOUNDARY; /*! - \ingroup PkgArrangement2Enums + \ingroup PkgArrangementOnSurface2Enums */ const Arr_parameter_space ARR_RIGHT_BOUNDARY = RIGHT_BOUNDARY; /*! - \ingroup PkgArrangement2Enums + \ingroup PkgArrangementOnSurface2Enums */ const Arr_parameter_space ARR_BOTTOM_BOUNDARY = BOTTOM_BOUNDARY; /*! - \ingroup PkgArrangement2Enums + \ingroup PkgArrangementOnSurface2Enums */ const Arr_parameter_space ARR_TOP_BOUNDARY = TOP_BOUNDARY; /*! - \ingroup PkgArrangement2Enums + \ingroup PkgArrangementOnSurface2Enums */ const Arr_parameter_space ARR_INTERIOR = INTERIOR; diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_extended_dcel.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_extended_dcel.h index 6fb986d3c09..8a948545117 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_extended_dcel.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_extended_dcel.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2DCEL +\ingroup PkgArrangementOnSurface2DCEL The `Arr_extended_dcel` class-template extends the topological-features of the Dcel namely the vertex, halfedge, and face types. While it is possible to maintain @@ -51,7 +51,7 @@ class Arr_extended_dcel namespace CGAL { /*! -\ingroup PkgArrangement2DCEL +\ingroup PkgArrangementOnSurface2DCEL The `Arr_extended_face` class-template extends the face topological-features of the Dcel. It is parameterized by a face base-type `FaceBase` and a data type @@ -103,7 +103,7 @@ void set_data (const FData & data); namespace CGAL { /*! -\ingroup PkgArrangement2DCEL +\ingroup PkgArrangementOnSurface2DCEL The `Arr_extended_halfedge` class-template extends the halfedge topological-features of the Dcel. It is parameterized by a halfedge base-type `HalfedgeBase` @@ -155,7 +155,7 @@ void set_data (const HData & data); namespace CGAL { /*! -\ingroup PkgArrangement2DCEL +\ingroup PkgArrangementOnSurface2DCEL The `Arr_extended_vertex` class-template extends the vertex topological-features of the Dcel. It is parameterized by a @@ -208,7 +208,7 @@ void set_data (const VData & data); namespace CGAL { /*! -\ingroup PkgArrangement2DCEL +\ingroup PkgArrangementOnSurface2DCEL The `Arr_face_extended_dcel` class-template extends the Dcel face-records, making it possible to store extra (non-geometric) data with the arrangement faces. diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_face_index_map.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_face_index_map.h index c816ecd0a52..cf9c1573702 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_face_index_map.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_face_index_map.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2 +\ingroup PkgArrangementOnSurface2Ref `Arr_face_index_map` maintains a mapping of face handles of an attached arrangement object to indices (of type `unsigned int`). diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_landmarks_point_location.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_landmarks_point_location.h index e97890e2da3..95c33d975ab 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_landmarks_point_location.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_landmarks_point_location.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2PointLocation +\ingroup PkgArrangementOnSurface2PointLocation \anchor arr_reflm_pl diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_line_arc_traits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_line_arc_traits_2.h index 9bab6950c32..8dbf2b4fac5 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_line_arc_traits_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_line_arc_traits_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2TraitsClasses +\ingroup PkgArrangementOnSurface2TraitsClasses This class is a traits class for \cgal arrangements, built on top of a model of concept `CircularKernel`. It provides curves of type 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 b996a3cd03b..4b6227ec31b 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 @@ -2,7 +2,7 @@ namespace CGAL { /*! - \ingroup PkgArrangement2TraitsClasses + \ingroup PkgArrangementOnSurface2TraitsClasses The traits class `Arr_linear_traits_2` is a model of the `ArrangementTraits_2` concept, which enables the construction and maintenance of arrangements of @@ -35,7 +35,7 @@ public: The `Curve_2` (and the `X_monotone_curve_2`) class nested within the linear-traits can represent all types of linear objects. The class supports the copy and default constructor and the assignment operator. - In addition, the \link PkgArrangement2op_left_shift `operator<<` \endlink and \link PkgArrangement2op_right_shift `operator>>` \endlink for linear objects + In addition, the \link PkgArrangementOnSurface2op_left_shift `operator<<` \endlink and \link PkgArrangementOnSurface2op_right_shift `operator>>` \endlink for linear objects are defined for standard output and input streams. */ class Curve_2 { diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_naive_point_location.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_naive_point_location.h index 490b967a9ca..4cb06ddf4a6 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_naive_point_location.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_naive_point_location.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2PointLocation +\ingroup PkgArrangementOnSurface2PointLocation \anchor arr_refnaive_pl diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_non_caching_segment_basic_traits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_non_caching_segment_basic_traits_2.h index 2e46a442dcd..64dc43330f2 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_non_caching_segment_basic_traits_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_non_caching_segment_basic_traits_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2TraitsClasses +\ingroup PkgArrangementOnSurface2TraitsClasses The traits class `Arr_non_caching_segment_basic_traits_2` is a model of the `ArrangementTraits_2` concept that allow the construction and maintenance of arrangements of diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_non_caching_segment_traits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_non_caching_segment_traits_2.h index 8fee24bbcf7..2262120d70c 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_non_caching_segment_traits_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_non_caching_segment_traits_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2TraitsClasses +\ingroup PkgArrangementOnSurface2TraitsClasses The traits class `Arr_non_caching_segment_traits_2` is a model of the `ArrangementTraits_2` concept that allows the construction and maintenance of arrangements of diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_observer.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_observer.h index 20c9cfbecb7..cc860dbf95b 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_observer.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_observer.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2 +\ingroup PkgArrangementOnSurface2Ref \anchor arr_refarr_obs diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_overlay_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_overlay_2.h index 540867ed058..80c4a062c1c 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_overlay_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_overlay_2.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2Funcs +\ingroup PkgArrangementOnSurface2Funcs \brief Computes the overlay of two arrangements `arr1` and `arr2`, and sets the output arrangement `res` to represent the overlaid arrangement. @@ -35,7 +35,7 @@ void overlay (const Arrangement_2& arr1, OverlayTraits& ovl_tr); /*! -\ingroup PkgArrangement2Funcs +\ingroup PkgArrangementOnSurface2Funcs \brief Computes the overlay of two arrangements with history `arr1` and `arr2`, and sets the output arrangement with history `res` to represent the overlaid arrangement. The function also constructs a diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_point_location_result.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_point_location_result.h index 4990a399fa3..20a6787d7e5 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_point_location_result.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_point_location_result.h @@ -1,5 +1,5 @@ /*! -\ingroup PkgArrangement2PointLocation +\ingroup PkgArrangementOnSurface2PointLocation The macro `CGAL_ARR_POINT_LOCATION_VERSION` can be used to configure the point-location query API. In particular, it determines which version @@ -24,7 +24,7 @@ is included. namespace CGAL { /*! -\ingroup PkgArrangement2PointLocation +\ingroup PkgArrangementOnSurface2PointLocation A unary metafunction to determine the return type of a point-location or vertical ray-shoot query. 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 5fb8b3fb479..f53f8db1978 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 @@ -1,4 +1,4 @@ -/// \ingroup PkgArrangement2Macros +/// \ingroup PkgArrangementOnSurface2Macros /// @{ /*! * If the macro is set to one, then \f$x\f$-monotone curves are always @@ -8,7 +8,7 @@ /// @} namespace CGAL { - /*! \ingroup PkgArrangement2TraitsClasses + /*! \ingroup PkgArrangementOnSurface2TraitsClasses * * Note: The `SubcurveTraits_2` can comprise of Line_segments, Conic_arcs, * Circular_arc, Bezier_curves, or Linear_curves. A portion or a part @@ -280,9 +280,9 @@ namespace CGAL { * * The copy and default constructor as well as the assignment operator are * provided for polycurve subcurves. In addition, an \link - * PkgArrangement2op_left_shift `operator<<` \endlink for the subcurves is + * PkgArrangementOnSurface2op_left_shift `operator<<` \endlink for the subcurves is * defined for standard output streams, and an \link - * PkgArrangement2op_right_shift `operator>>` \endlink for the subcurves is + * PkgArrangementOnSurface2op_right_shift `operator>>` \endlink for the subcurves is * defined for standard input streams. */ template 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 c4d3e697598..02116bc74e8 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 @@ -1,4 +1,4 @@ -/// \ingroup PkgArrangement2Macros +/// \ingroup PkgArrangementOnSurface2Macros /// @{ /*! * If the macro is set to one, then \f$x\f$-monotone curves are always @@ -8,7 +8,7 @@ /// @} namespace CGAL { - /*! \ingroup PkgArrangement2TraitsClasses + /*! \ingroup PkgArrangementOnSurface2TraitsClasses * * The traits class `Arr_polyline_traits_2` handles piecewise linear * curves, commonly referred to as polylines. Each polyline is a 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 db330187157..5979b9b07c0 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 @@ -2,7 +2,7 @@ namespace CGAL { /*! - \ingroup PkgArrangement2TraitsClasses + \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, 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 ca23407fcb3..f085e4da39c 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 @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2TraitsClasses +\ingroup PkgArrangementOnSurface2TraitsClasses The traits class `Arr_segment_traits_2` is a model of the `ArrangementTraits_2` concept, which allows the construction and maintenance of arrangements of diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_tags.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_tags.h index a70bc00be76..302a0fc6109 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_tags.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_tags.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2Tags +\ingroup PkgArrangementOnSurface2Tags The categories `Left_side_category`, `Right_side_category`, `Bottom_side_category`, and `Top_side_category`, @@ -26,7 +26,7 @@ struct Arr_oblivious_side_tag { namespace CGAL { /*! -\ingroup PkgArrangement2Tags +\ingroup PkgArrangementOnSurface2Tags All the four types `Left_side_category`, `Right_side_category`, `Bottom_side_category`, diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_trapezoid_ric_point_location.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_trapezoid_ric_point_location.h index d80fdf954fe..1e018c044df 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_trapezoid_ric_point_location.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_trapezoid_ric_point_location.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2PointLocation +\ingroup PkgArrangementOnSurface2PointLocation \anchor arr_reftrap_pl diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_vertex_index_map.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_vertex_index_map.h index c00dd12499a..0320001321b 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_vertex_index_map.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_vertex_index_map.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2 +\ingroup PkgArrangementOnSurface2Ref `Arr_vertex_index_map` maintains a mapping of vertex handles of an attached arrangement object to indices (of type `unsigned int`). diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_vertical_decomposition_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_vertical_decomposition_2.h index e9fa5a62091..e0f4dbb918c 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_vertical_decomposition_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_vertical_decomposition_2.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2Funcs +\ingroup PkgArrangementOnSurface2Funcs Produces the symbolic vertical decomposition of a given arrangement, performing a batched vertical ray-shooting query from diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_walk_along_line_point_location.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_walk_along_line_point_location.h index 4037b4030ec..7add7e4718f 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_walk_along_line_point_location.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_walk_along_line_point_location.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2PointLocation +\ingroup PkgArrangementOnSurface2PointLocation \anchor arr_refwalk_pl diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arrangement_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arrangement_2.h index 277ddf71eca..11e3bdf9159 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arrangement_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arrangement_2.h @@ -1,7 +1,7 @@ namespace CGAL { /*! - \ingroup PkgArrangement2 + \ingroup PkgArrangementOnSurface2Ref \anchor arr_refarr @@ -36,7 +36,7 @@ namespace CGAL { Insertion Functions - \sa `PkgArrangement2Insert` + \sa `PkgArrangementOnSurface2Insert` \sa `CGAL::insert_non_intersecting_curve()` \sa `CGAL::insert_non_intersecting_curves()` \sa `CGAL::insert_point()` @@ -48,8 +48,8 @@ namespace CGAL { Input/output functions - \sa `PkgArrangement2Read` - \sa `PkgArrangement2Write` + \sa `PkgArrangementOnSurface2Read` + \sa `PkgArrangementOnSurface2Write` */ template< typename Traits, typename Dcel > @@ -91,7 +91,7 @@ public: typedef typename Dcel::Size Size; /*! - \ingroup PkgArrangement2DCEL + \ingroup PkgArrangementOnSurface2DCEL An object \f$ v\f$ of the class `Vertex` represents an arrangement vertex, that is - a \f$ 0\f$-dimensional cell, associated with a point on the plane. */ @@ -168,7 +168,7 @@ public: }; /* end Vertex */ /*! - \ingroup PkgArrangement2DCEL + \ingroup PkgArrangementOnSurface2DCEL An object \f$ e\f$ of the class `Halfedge` represents a halfedge in the arrangement. A halfedge is directed from its source vertex to its target vertex, and has an incident face lying to @@ -263,7 +263,7 @@ public: }; /* end Halfedge */ /*! - \ingroup PkgArrangement2DCEL + \ingroup PkgArrangementOnSurface2DCEL An object of the class `Face` represents an arrangement face, namely, a \f$ 2\f$-dimensional arrangement cell. An arrangement that supports @@ -994,7 +994,7 @@ edge, we first need to cast away its "constness". namespace CGAL { /*! - \ingroup PkgArrangement2Insert insert + \ingroup PkgArrangementOnSurface2Insert insert The function `%insert` inserts one or more curves or \f$ x\f$-monotone curves into a given arrangement, where no restrictions are imposed on the inserted curves. If an inserted curve is not \f$ x\f$-monotone curve, it is subdivided @@ -1065,7 +1065,7 @@ void insert (Arrangement_2& arr, /// @} /*! - \ingroup PkgArrangement2Funcs + \ingroup PkgArrangementOnSurface2Funcs Checks if a given curve or \f$ x\f$-monotone curve intersects an existing arrangement's edges or vertices. @@ -1111,7 +1111,7 @@ bool do_intersect ( /*! - \ingroup PkgArrangement2Funcs + \ingroup PkgArrangementOnSurface2Funcs Inserts a given \f$ x\f$-monotone curve into a given arrangement, where the interior of the given curve is disjoint from all @@ -1149,7 +1149,7 @@ insert_non_intersecting_curve (Arrangement_2& arr, /*! - \ingroup PkgArrangement2Funcs + \ingroup PkgArrangementOnSurface2Funcs Inserts a set of \f$ x\f$-monotone curves in a given range into a given arrangement. The insertion is performed in an aggregated @@ -1172,7 +1172,7 @@ void insert_non_intersecting_curves(Arrangement_2& arr, /*! - \ingroup PkgArrangement2Funcs + \ingroup PkgArrangementOnSurface2Funcs Inserts a given point into a given arrangement. It uses a given point-location object to locate the given @@ -1210,7 +1210,7 @@ insert_point (Arrangement_2& arr, /*! - \ingroup PkgArrangement2Funcs + \ingroup PkgArrangementOnSurface2Funcs Checks the validity of a given arrangement. @@ -1234,7 +1234,7 @@ bool is_valid (const Arrangement_2& arr); /*! - \ingroup PkgArrangement2Funcs + \ingroup PkgArrangementOnSurface2Funcs Removes an edge given by one of the twin halfedges that forms it, from a given arrangement. Once the edge is removed, if the @@ -1266,7 +1266,7 @@ remove_edge (Arrangement_2& arr, /*! - \ingroup PkgArrangement2Funcs + \ingroup PkgArrangementOnSurface2Funcs Attempts to removed a given vertex from a given arrangement. The vertex can be removed if it is either an isolated vertex, @@ -1291,7 +1291,7 @@ bool remove_vertex (Arrangement_2& arr, typename Arrangement_2::Vertex_handle v); /*! - \ingroup PkgArrangement2Funcs + \ingroup PkgArrangementOnSurface2Funcs Compute the zone of the given \f$ x\f$-monotone curve in the existing arrangement. Meaning, it output the diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arrangement_with_history_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arrangement_with_history_2.h index 7afef234acc..7c05c5c9ddc 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arrangement_with_history_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arrangement_with_history_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2 +\ingroup PkgArrangementOnSurface2Ref \anchor arr_refarr_with_hist @@ -274,7 +274,7 @@ bool remove_target = true); }; /* end Arrangement_with_history_2 */ /*! -\ingroup PkgArrangement2Insert +\ingroup PkgArrangementOnSurface2Insert Inserts the given curve `c` into the arrangement with history `arr`, and returns a handle to the inserted curve. `c` is subdivided into @@ -297,7 +297,7 @@ insert (Arrangement_with_history_2& arr, const PointLocation& pl = walk_pl); /*! -\ingroup PkgArrangement2Insert +\ingroup PkgArrangementOnSurface2Insert Aggregately inserts the curves in the range `[first,last)` into the arrangement with history `arr` using the sweep-line framework. @@ -308,7 +308,7 @@ void insert(Arrangement_with_history_2& arr, /*! -\ingroup PkgArrangement2Funcs +\ingroup PkgArrangementOnSurface2Funcs Removes a given curve from a given arrangement. @@ -323,7 +323,7 @@ Size remove_curve (Arrangement_with_history_2& arr, /*! -\addtogroup PkgArrangement2Overlay +\addtogroup PkgArrangementOnSurface2Overlay Computes the overlay of two arrangements with history `arr1` and `arr2`, and sets the output arrangement with history `res` to @@ -340,7 +340,7 @@ void overlay (const Arrangement_with_history_2& arr1, /*! -\addtogroup PkgArrangement2Overlay +\addtogroup PkgArrangementOnSurface2Overlay Computes the (simple) overlay of two arrangements with history `arr1` and `arr2`, and sets the output arrangement with history `res` to diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/IO/Arr_iostream.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/IO/Arr_iostream.h index 672245e5d6c..413b1cd5c3f 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/IO/Arr_iostream.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/IO/Arr_iostream.h @@ -1,7 +1,7 @@ namespace CGAL { /*! - \defgroup PkgArrangement2Read CGAL::read() - \ingroup PkgArrangement2IO + \defgroup PkgArrangementOnSurface2Read CGAL::read() + \ingroup PkgArrangementOnSurface2IO Reads a given arrangement from a given input stream using a specific input format. @@ -16,11 +16,11 @@ using a specific input format. -\sa `PkgArrangement2Write` +\sa `PkgArrangementOnSurface2Write` -\sa `PkgArrangement2op_left_shift` -\sa `PkgArrangement2op_right_shift` +\sa `PkgArrangementOnSurface2op_left_shift` +\sa `PkgArrangementOnSurface2op_right_shift` */ /// @{ @@ -37,8 +37,8 @@ std::istream& read (Arrangement_2& arr, /// @} /*! - \defgroup PkgArrangement2Write CGAL::write() - \ingroup PkgArrangement2IO + \defgroup PkgArrangementOnSurface2Write CGAL::write() + \ingroup PkgArrangementOnSurface2IO Writes a given arrangement into a given output stream using a specific output format. @@ -52,9 +52,9 @@ using a specific output format. `ArrangementWithHistoryOutputFormatter` concept. -\sa `PkgArrangement2Read` -\sa `PkgArrangement2op_left_shift` -\sa `PkgArrangement2op_right_shift` +\sa `PkgArrangementOnSurface2Read` +\sa `PkgArrangementOnSurface2op_left_shift` +\sa `PkgArrangementOnSurface2op_right_shift` */ /// @{ @@ -70,7 +70,7 @@ std::ostream& write (const Arrangement_2& arr, /// @} /*! -\ingroup PkgArrangement2op_left_shift +\ingroup PkgArrangementOnSurface2op_left_shift Inserts the arrangement object `arr` into the output stream `os` using the output format defined by the `Arr_text_formatter` class. Only the basic geometric and @@ -83,7 +83,7 @@ std::ostream& operator<< (std::ostream& os, /*! -\ingroup PkgArrangement2op_right_shift +\ingroup PkgArrangementOnSurface2op_right_shift Extracts an arrangement from a given input stream using the input format defined by the `Arr_text_formatter` class - that is, only the basic geometric and topological features of the arrangement are read diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/IO/Arr_text_formatter.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/IO/Arr_text_formatter.h index d3dadb9330d..28dd3ecb888 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/IO/Arr_text_formatter.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/IO/Arr_text_formatter.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2IO +\ingroup PkgArrangementOnSurface2IO `Arr_extended_dcel_text_formatter` defines the format of an arrangement in an input or output stream (typically a file stream), thus enabling reading and writing an `Arrangement` @@ -21,8 +21,8 @@ the `<<` operator and read from an input stream using the `>>` operator. \cgalModels `ArrangementInputFormatter` \cgalModels `ArrangementOutputFormatter` -\sa `PkgArrangement2Read` -\sa `PkgArrangement2Write` +\sa `PkgArrangementOnSurface2Read` +\sa `PkgArrangementOnSurface2Write` \sa `Arr_extended_dcel` */ @@ -38,7 +38,7 @@ public: namespace CGAL { /*! -\ingroup PkgArrangement2IO +\ingroup PkgArrangementOnSurface2IO `Arr_face_extended_text_formatter` defines the format of an arrangement in an input or output stream (typically a file stream), thus enabling reading and writing an `Arrangement` @@ -55,8 +55,8 @@ can all be written to an input stream using the `<<` operator and read from an i \cgalModels `ArrangementInputFormatter` \cgalModels `ArrangementOutputFormatter` -\sa `PkgArrangement2Read` -\sa `PkgArrangement2Write` +\sa `PkgArrangementOnSurface2Read` +\sa `PkgArrangementOnSurface2Write` \sa `Arr_face_extended_dcel` */ @@ -72,7 +72,7 @@ public: namespace CGAL { /*! -\ingroup PkgArrangement2IO +\ingroup PkgArrangementOnSurface2IO `Arr_text_formatter` defines the format of an arrangement in an input or output stream (typically a file stream), thus enabling reading and writing an `Arrangement` @@ -88,8 +88,8 @@ operator. \cgalModels `ArrangementInputFormatter` \cgalModels `ArrangementOutputFormatter` -\sa `PkgArrangement2Read` -\sa `PkgArrangement2Write` +\sa `PkgArrangementOnSurface2Read` +\sa `PkgArrangementOnSurface2Write` */ template< typename Arrangement > diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/IO/Arr_with_history_iostream.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/IO/Arr_with_history_iostream.h index 9732ee484c9..4f6deac2550 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/IO/Arr_with_history_iostream.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/IO/Arr_with_history_iostream.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2Read +\ingroup PkgArrangementOnSurface2Read Reads the arrangement-with-history object `arr` from the given input stream `is` using a specific input format defined by @@ -15,7 +15,7 @@ std::istream& read (Arrangement_with_history_2& arr, WithHistoryFormatter& formatter); /*! -\ingroup PkgArrangement2Write +\ingroup PkgArrangementOnSurface2Write Writes the arrangement-with-history object `arr` into the given output stream `os` using a specific output format defined by `formatter`. @@ -27,7 +27,7 @@ std::ostream& write (const Arrangement_with_history_2& arr, WithHistoryFormatter& formatter); /*! -\ingroup PkgArrangement2op_left_shift +\ingroup PkgArrangementOnSurface2op_left_shift Inserts the arrangement-with-history object `arr` into the output stream `os` using the output format defined by the `Arr_with_history_text_formatter` class. Only the basic geometric @@ -39,7 +39,7 @@ std::ostream& operator<< (std::ostream& os, const Arrangement_with_history_2& arr); /*! -\ingroup PkgArrangement2op_right_shift +\ingroup PkgArrangementOnSurface2op_right_shift Extracts an arrangement-with-history from a given input stream using the default input format. */ diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/IO/Arr_with_history_text_formatter.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/IO/Arr_with_history_text_formatter.h index 3af4fa40bd9..8d6bef1eb55 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/IO/Arr_with_history_text_formatter.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/IO/Arr_with_history_text_formatter.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgArrangement2IO +\ingroup PkgArrangementOnSurface2IO `Arr_with_history_text_formatter` defines the format of an arrangement in an input or output stream (typically a file stream), thus enabling reading and writing an @@ -18,8 +18,8 @@ relations between these curves and the edges they induce. \cgalModels `ArrangementWithHistoryInputFormatter` \cgalModels `ArrangementWithHistoryOutputFormatter` -\sa `PkgArrangement2Read` -\sa `PkgArrangement2Write` +\sa `PkgArrangementOnSurface2Read` +\sa `PkgArrangementOnSurface2Write` */ template< typename ArrFormatter > 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 99a57c2cf9b..febcd691b52 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 @@ -1,6 +1,6 @@ namespace ArrTraits { /*! -\ingroup PkgArrangement2ConceptsFunctionObjects +\ingroup PkgArrangementOnSurface2ConceptsFunctionObjects \cgalConcept \cgalRefines Functor diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--AreMergeable_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--AreMergeable_2.h index 64a975b195a..4cc4209c9ee 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--AreMergeable_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--AreMergeable_2.h @@ -1,6 +1,6 @@ namespace ArrTraits { /*! -\ingroup PkgArrangement2ConceptsFunctionObjects +\ingroup PkgArrangementOnSurface2ConceptsFunctionObjects \cgalConcept \cgalRefines Functor diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareXAtLimit_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareXAtLimit_2.h index b5c727aee88..f0ee218e830 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareXAtLimit_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareXAtLimit_2.h @@ -1,6 +1,6 @@ namespace ArrTraits { /*! -\ingroup PkgArrangement2ConceptsFunctionObjects +\ingroup PkgArrangementOnSurface2ConceptsFunctionObjects \cgalConcept \cgalRefines AdaptableFunctor diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareXNearLimit_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareXNearLimit_2.h index e3c56fbeadb..d31605b4134 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareXNearLimit_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareXNearLimit_2.h @@ -1,6 +1,6 @@ namespace ArrTraits { /*! -\ingroup PkgArrangement2ConceptsFunctionObjects +\ingroup PkgArrangementOnSurface2ConceptsFunctionObjects \cgalConcept \cgalRefines AdaptableTernaryFunction diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareX_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareX_2.h index 1cf927c57c5..42b5df88346 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareX_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareX_2.h @@ -1,6 +1,6 @@ namespace ArrTraits { /*! -\ingroup PkgArrangement2ConceptsFunctionObjects +\ingroup PkgArrangementOnSurface2ConceptsFunctionObjects \cgalConcept \cgalRefines AdaptableBinaryFunction diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareXy_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareXy_2.h index bd348bc85fb..cd8d99eb7b1 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareXy_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareXy_2.h @@ -1,6 +1,6 @@ namespace ArrTraits { /*! -\ingroup PkgArrangement2ConceptsFunctionObjects +\ingroup PkgArrangementOnSurface2ConceptsFunctionObjects \cgalConcept \cgalRefines AdaptableBinaryFunction diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareYAtXLeft_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareYAtXLeft_2.h index 5d06d07c143..345a6ca3321 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareYAtXLeft_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareYAtXLeft_2.h @@ -1,6 +1,6 @@ namespace ArrTraits { /*! -\ingroup PkgArrangement2ConceptsFunctionObjects +\ingroup PkgArrangementOnSurface2ConceptsFunctionObjects \cgalConcept \cgalRefines AdaptableTernaryFunction diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareYAtXRight_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareYAtXRight_2.h index fb3d4fa9596..07f072fc259 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareYAtXRight_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareYAtXRight_2.h @@ -1,6 +1,6 @@ namespace ArrTraits { /*! -\ingroup PkgArrangement2ConceptsFunctionObjects +\ingroup PkgArrangementOnSurface2ConceptsFunctionObjects \cgalConcept \cgalRefines AdaptableTernaryFunction diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareYAtX_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareYAtX_2.h index a2cb53b38ef..408e62f4a96 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareYAtX_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareYAtX_2.h @@ -1,6 +1,6 @@ namespace ArrTraits { /*! -\ingroup PkgArrangement2ConceptsFunctionObjects +\ingroup PkgArrangementOnSurface2ConceptsFunctionObjects \cgalConcept \cgalRefines AdaptableBinaryFunction diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareYNearBoundary_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareYNearBoundary_2.h index dd7f31a06c7..cea0b16d712 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareYNearBoundary_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--CompareYNearBoundary_2.h @@ -1,6 +1,6 @@ namespace ArrTraits { /*! -\ingroup PkgArrangement2ConceptsFunctionObjects +\ingroup PkgArrangementOnSurface2ConceptsFunctionObjects \cgalConcept \cgalRefines AdaptableTernaryFunction diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--ConstructMaxVertex_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--ConstructMaxVertex_2.h index b145d3c9163..629396f9563 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--ConstructMaxVertex_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--ConstructMaxVertex_2.h @@ -1,6 +1,6 @@ namespace ArrTraits { /*! -\ingroup PkgArrangement2ConceptsFunctionObjects +\ingroup PkgArrangementOnSurface2ConceptsFunctionObjects \cgalConcept \cgalRefines AdaptableUnaryFunction diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--ConstructMinVertex_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--ConstructMinVertex_2.h index caef26fe71e..7bd2ddee785 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--ConstructMinVertex_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--ConstructMinVertex_2.h @@ -1,6 +1,6 @@ namespace ArrTraits { /*! -\ingroup PkgArrangement2ConceptsFunctionObjects +\ingroup PkgArrangementOnSurface2ConceptsFunctionObjects \cgalConcept \cgalRefines AdaptableUnaryFunction diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--ConstructXMonotoneCurve_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--ConstructXMonotoneCurve_2.h index 0c0597fd01a..0ba63096c36 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--ConstructXMonotoneCurve_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--ConstructXMonotoneCurve_2.h @@ -1,6 +1,6 @@ namespace ArrTraits { /*! -\ingroup PkgArrangement2ConceptsFunctionObjects +\ingroup PkgArrangementOnSurface2ConceptsFunctionObjects \cgalConcept \cgalRefines Functor diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--Curve_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--Curve_2.h index 8681b27b9a9..5677896e1d9 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--Curve_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--Curve_2.h @@ -1,6 +1,6 @@ namespace ArrTraits { /*! -\ingroup PkgArrangement2ConceptsGeometricObjects +\ingroup PkgArrangementOnSurface2ConceptsGeometricObjects \cgalConcept represents a general planar curve. diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--Equal_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--Equal_2.h index dcdcda5577e..6c3362ddc53 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--Equal_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--Equal_2.h @@ -1,6 +1,6 @@ namespace ArrTraits { /*! -\ingroup PkgArrangement2ConceptsFunctionObjects +\ingroup PkgArrangementOnSurface2ConceptsFunctionObjects \cgalConcept \cgalRefines AdaptableBinaryFunction diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--Intersect_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--Intersect_2.h index f97f43d645b..0c73d061273 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--Intersect_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--Intersect_2.h @@ -1,6 +1,6 @@ namespace ArrTraits { /*! -\ingroup PkgArrangement2ConceptsFunctionObjects +\ingroup PkgArrangementOnSurface2ConceptsFunctionObjects \cgalConcept \cgalRefines Functor diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--IsVertical_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--IsVertical_2.h index 84ffa9194af..31f0655630e 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--IsVertical_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--IsVertical_2.h @@ -1,6 +1,6 @@ namespace ArrTraits { /*! -\ingroup PkgArrangement2ConceptsFunctionObjects +\ingroup PkgArrangementOnSurface2ConceptsFunctionObjects \cgalConcept \cgalRefines AdaptableUnaryFunction diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--MakeXMonotone_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--MakeXMonotone_2.h index 24b8fb60472..508d65ba14e 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--MakeXMonotone_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--MakeXMonotone_2.h @@ -1,6 +1,6 @@ namespace ArrTraits { /*! -\ingroup PkgArrangement2ConceptsFunctionObjects +\ingroup PkgArrangementOnSurface2ConceptsFunctionObjects \cgalConcept \cgalRefines Functor diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--Merge_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--Merge_2.h index a48b8132e17..88ad38a680d 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--Merge_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--Merge_2.h @@ -1,6 +1,6 @@ namespace ArrTraits { /*! -\ingroup PkgArrangement2ConceptsFunctionObjects +\ingroup PkgArrangementOnSurface2ConceptsFunctionObjects \cgalConcept \cgalRefines Functor diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--ParameterSpaceInX_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--ParameterSpaceInX_2.h index 58934f055f2..6655ac19aab 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--ParameterSpaceInX_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--ParameterSpaceInX_2.h @@ -1,6 +1,6 @@ namespace ArrTraits { /*! -\ingroup PkgArrangement2ConceptsFunctionObjects +\ingroup PkgArrangementOnSurface2ConceptsFunctionObjects \cgalConcept \cgalRefines AdaptableBinaryFunction diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--ParameterSpaceInY_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--ParameterSpaceInY_2.h index 71343fe93b3..f80e3738499 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--ParameterSpaceInY_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--ParameterSpaceInY_2.h @@ -1,6 +1,6 @@ namespace ArrTraits { /*! -\ingroup PkgArrangement2ConceptsFunctionObjects +\ingroup PkgArrangementOnSurface2ConceptsFunctionObjects \cgalConcept \cgalRefines AdaptableBinaryFunction diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--Point_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--Point_2.h index 3e443059d80..1da395e23fa 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--Point_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--Point_2.h @@ -1,6 +1,6 @@ namespace ArrTraits { /*! -\ingroup PkgArrangement2ConceptsGeometricObjects +\ingroup PkgArrangementOnSurface2ConceptsGeometricObjects \cgalConcept Represents a point in the plane. diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--Split_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--Split_2.h index 50e6850ca7a..f6ba2f33ce7 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--Split_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--Split_2.h @@ -1,6 +1,6 @@ namespace ArrTraits { /*! -\ingroup PkgArrangement2ConceptsFunctionObjects +\ingroup PkgArrangementOnSurface2ConceptsFunctionObjects \cgalConcept \cgalRefines Functor diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--XMonotoneCurve_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--XMonotoneCurve_2.h index 78f421f2761..c2d1919c061 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--XMonotoneCurve_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrTraits--XMonotoneCurve_2.h @@ -1,6 +1,6 @@ namespace ArrTraits { /*! -\ingroup PkgArrangement2ConceptsGeometricObjects +\ingroup PkgArrangementOnSurface2ConceptsGeometricObjects \cgalConcept Represents a planar (weakly) \f$ x\f$-monotone curve. diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementApproximateTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementApproximateTraits_2.h index 589bc03c6f7..080f03082e9 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementApproximateTraits_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementApproximateTraits_2.h @@ -1,5 +1,5 @@ /*! -\ingroup PkgArrangement2ConceptsTraits +\ingroup PkgArrangementOnSurface2ConceptsTraits \cgalConcept The concept `ArrangementApproximateTraits_2` refines the basic traits concept diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementBasicTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementBasicTraits_2.h index d65c174a8d0..fc7a2064e0c 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementBasicTraits_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementBasicTraits_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgArrangement2ConceptsTraits +\ingroup PkgArrangementOnSurface2ConceptsTraits \cgalConcept The concept `ArrangementBasicTraits_2` defines the minimal set of geometric diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementConstructXMonotoneCurveTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementConstructXMonotoneCurveTraits_2.h index 7d68ce1da70..2a88611de6c 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementConstructXMonotoneCurveTraits_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementConstructXMonotoneCurveTraits_2.h @@ -1,5 +1,5 @@ /*! -\ingroup PkgArrangement2ConceptsTraits +\ingroup PkgArrangementOnSurface2ConceptsTraits \cgalConcept The concept `ArrangementConstructXMonotoneCurveTraits_2` refines the basic diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementDcel.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementDcel.h index e6871287595..63c36749172 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementDcel.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementDcel.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgArrangement2ConceptsDCEL +\ingroup PkgArrangementOnSurface2ConceptsDCEL \cgalConcept A doubly-connected edge-list (Dcel for short) data-structure. It consists diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementDcelFace.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementDcelFace.h index 697dce33463..c8a8b03197b 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementDcelFace.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementDcelFace.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgArrangement2ConceptsDCEL +\ingroup PkgArrangementOnSurface2ConceptsDCEL \cgalConcept A face record in a Dcel data structure. A face may either be unbounded, diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementDcelHalfedge.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementDcelHalfedge.h index d5e581284bc..87d84acd8e9 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementDcelHalfedge.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementDcelHalfedge.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgArrangement2ConceptsDCEL +\ingroup PkgArrangementOnSurface2ConceptsDCEL \cgalConcept A halfedge record in a Dcel data structure. Two halfedges with opposite diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementDcelHole.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementDcelHole.h index c20aaf0e1ea..9e629686a6c 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementDcelHole.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementDcelHole.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgArrangement2ConceptsDCEL +\ingroup PkgArrangementOnSurface2ConceptsDCEL \cgalConcept A hole record in a Dcel data structure, which stores the face that contains diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementDcelIsolatedVertex.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementDcelIsolatedVertex.h index 045be05776a..8d0a84e227d 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementDcelIsolatedVertex.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementDcelIsolatedVertex.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgArrangement2ConceptsDCEL +\ingroup PkgArrangementOnSurface2ConceptsDCEL \cgalConcept An isolated vertex-information record in a Dcel data structure, which stores diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementDcelVertex.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementDcelVertex.h index 1dfbfcfe5df..a78a11eb1a2 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementDcelVertex.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementDcelVertex.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgArrangement2ConceptsDCEL +\ingroup PkgArrangementOnSurface2ConceptsDCEL \cgalConcept A vertex record in a Dcel data structure. A vertex is always associated diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementDcelWithRebind.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementDcelWithRebind.h index 392bc80c412..fa8b7abdae5 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementDcelWithRebind.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementDcelWithRebind.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgArrangement2ConceptsDCEL +\ingroup PkgArrangementOnSurface2ConceptsDCEL \cgalConcept The concept `ArrangementDcelWithRebind` refines the `ArrangementDcel` concept by adding diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementInputFormatter.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementInputFormatter.h index fac833d4a6c..5ca8cb4460c 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementInputFormatter.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementInputFormatter.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgArrangement2Concepts +\ingroup PkgArrangementOnSurface2Concepts \cgalConcept A model for the `ArrangementInputFormatter` concept supports a set of functions that enable diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementLandmarkTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementLandmarkTraits_2.h index 65141423bc5..6aa8a1457cc 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementLandmarkTraits_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementLandmarkTraits_2.h @@ -1,5 +1,5 @@ /*! -\ingroup PkgArrangement2ConceptsTraits +\ingroup PkgArrangementOnSurface2ConceptsTraits \cgalConcept The concept `ArrangementLandmarkTraits_2` refines the traits concepts diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenBoundaryTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenBoundaryTraits_2.h index cfe6553ece6..a1366fb094f 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenBoundaryTraits_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenBoundaryTraits_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgArrangement2ConceptsTraits +\ingroup PkgArrangementOnSurface2ConceptsTraits \cgalConcept Several predicates are required to handle \f$ x\f$-monotone curves that diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOutputFormatter.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOutputFormatter.h index 92649fbb1a1..03206537718 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOutputFormatter.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOutputFormatter.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgArrangement2Concepts +\ingroup PkgArrangementOnSurface2Concepts \cgalConcept A model for the `ArrangementOutputFormatter` concept supports a set of functions that enable diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementPointLocation_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementPointLocation_2.h index 0f65bb06b1d..1dbaba871b8 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementPointLocation_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementPointLocation_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgArrangement2Concepts +\ingroup PkgArrangementOnSurface2Concepts \cgalConcept A model of the `ArrangementPointLocation_2` concept can answer point-location queries on diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementTraits_2.h index 1c13c6a227b..0a2db816543 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementTraits_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementTraits_2.h @@ -1,11 +1,11 @@ /*! -\ingroup PkgArrangement2ConceptsTraits +\ingroup PkgArrangementOnSurface2ConceptsTraits \cgalConcept The concept `ArrangementTraits_2` allows the construction of arrangement of general planar curves. Models of this concept are used -by the free \link PkgArrangement2Insert `CGAL::insert()` \endlink functions of the arrangement package and +by the free \link PkgArrangementOnSurface2Insert `CGAL::insert()` \endlink functions of the arrangement package and by the `CGAL::Arrangement_with_history_2` class. A model of this concept must define the nested `Curve_2` type, which diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementVerticalRayShoot_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementVerticalRayShoot_2.h index 27d65a12c7f..b7cc4a71ab2 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementVerticalRayShoot_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementVerticalRayShoot_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgArrangement2Concepts +\ingroup PkgArrangementOnSurface2Concepts \cgalConcept A model of the `ArrangementVerticalRayShoot_2` concept can answer vertical ray-shooting diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementWithHistoryInputFormatter.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementWithHistoryInputFormatter.h index aae65845714..b2fdf82fe33 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementWithHistoryInputFormatter.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementWithHistoryInputFormatter.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgArrangement2Concepts +\ingroup PkgArrangementOnSurface2Concepts \cgalConcept A model for the `ArrangementWithHistoryInputFormatter` concept supports a set of functions that enable diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementWithHistoryOutputFormatter.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementWithHistoryOutputFormatter.h index ab2de7d7468..f917b232cd4 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementWithHistoryOutputFormatter.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementWithHistoryOutputFormatter.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgArrangement2Concepts +\ingroup PkgArrangementOnSurface2Concepts \cgalConcept A model for the `ArrangementWithHistoryOutputFormatter` concept supports a set of functions that enable diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementXMonotoneTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementXMonotoneTraits_2.h index 10997c95a5f..e8a6830b700 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementXMonotoneTraits_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementXMonotoneTraits_2.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgArrangement2ConceptsTraits +\ingroup PkgArrangementOnSurface2ConceptsTraits \cgalConcept The concept `ArrangementXMonotoneTraits_2` refines the basic arrangement-traits concept. diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/OverlayTraits.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/OverlayTraits.h index ae1ebbfded0..d727df92ac0 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/OverlayTraits.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/OverlayTraits.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgArrangement2ConceptsTraits +\ingroup PkgArrangementOnSurface2ConceptsTraits \cgalConcept A model for the `OverlayTraits` should be able to operate on records (namely, 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 844048f8e23..25e587778b7 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 @@ -1,69 +1,69 @@ -/// \defgroup PkgArrangement2 2D Arrangement Reference +/// \defgroup PkgArrangementOnSurface2Ref 2D Arrangement Reference -/// \defgroup PkgArrangement2Concepts Concepts -/// \ingroup PkgArrangement2 +/// \defgroup PkgArrangementOnSurface2Concepts Concepts +/// \ingroup PkgArrangementOnSurface2Ref /// \cgalConceptNamespace /// The namespace containing concepts specific to Arrangements. namespace ArrTraits {} -/// \defgroup PkgArrangement2ConceptsDCEL DCEL Concepts -/// \ingroup PkgArrangement2Concepts +/// \defgroup PkgArrangementOnSurface2ConceptsDCEL DCEL Concepts +/// \ingroup PkgArrangementOnSurface2Concepts -/// \defgroup PkgArrangement2ConceptsGeometricObjects Geometric Object Concepts -/// \ingroup PkgArrangement2Concepts +/// \defgroup PkgArrangementOnSurface2ConceptsGeometricObjects Geometric Object Concepts +/// \ingroup PkgArrangementOnSurface2Concepts -/// \defgroup PkgArrangement2ConceptsFunctionObjects Function Object Concepts -/// \ingroup PkgArrangement2Concepts +/// \defgroup PkgArrangementOnSurface2ConceptsFunctionObjects Function Object Concepts +/// \ingroup PkgArrangementOnSurface2Concepts -/// \defgroup PkgArrangement2ConceptsTraits Traits Concepts -/// \ingroup PkgArrangement2Concepts +/// \defgroup PkgArrangementOnSurface2ConceptsTraits Traits Concepts +/// \ingroup PkgArrangementOnSurface2Concepts -/// \defgroup PkgArrangement2TraitsClasses Traits Classes -/// \ingroup PkgArrangement2 +/// \defgroup PkgArrangementOnSurface2TraitsClasses Traits Classes +/// \ingroup PkgArrangementOnSurface2Ref -/// \defgroup PkgArrangement2DCEL DCEL -/// \ingroup PkgArrangement2 +/// \defgroup PkgArrangementOnSurface2DCEL DCEL +/// \ingroup PkgArrangementOnSurface2Ref -/// \defgroup PkgArrangement2IO I/O -/// \ingroup PkgArrangement2 +/// \defgroup PkgArrangementOnSurface2IO I/O +/// \ingroup PkgArrangementOnSurface2Ref -/// \defgroup PkgArrangement2op_left_shift operator<< -/// \ingroup PkgArrangement2IO +/// \defgroup PkgArrangementOnSurface2op_left_shift operator<< +/// \ingroup PkgArrangementOnSurface2IO -/// \defgroup PkgArrangement2op_right_shift operator>> -/// \ingroup PkgArrangement2IO +/// \defgroup PkgArrangementOnSurface2op_right_shift operator>> +/// \ingroup PkgArrangementOnSurface2IO -/// \defgroup PkgArrangement2PointLocation Point Location -/// \ingroup PkgArrangement2 +/// \defgroup PkgArrangementOnSurface2PointLocation Point Location +/// \ingroup PkgArrangementOnSurface2Ref -/// \defgroup PkgArrangement2Overlay Overlay -/// \ingroup PkgArrangement2 +/// \defgroup PkgArrangementOnSurface2Overlay Overlay +/// \ingroup PkgArrangementOnSurface2Ref -/// \defgroup PkgArrangement2Funcs Free Functions -/// \ingroup PkgArrangement2 +/// \defgroup PkgArrangementOnSurface2Funcs Free Functions +/// \ingroup PkgArrangementOnSurface2Ref -/// \defgroup PkgArrangement2Insert CGAL::insert() -/// \ingroup PkgArrangement2Funcs +/// \defgroup PkgArrangementOnSurface2Insert CGAL::insert() +/// \ingroup PkgArrangementOnSurface2Funcs -/// \defgroup PkgArrangement2Tags Tags -/// \ingroup PkgArrangement2 +/// \defgroup PkgArrangementOnSurface2Tags Tags +/// \ingroup PkgArrangementOnSurface2Ref -/// \defgroup PkgArrangement2Macros Macros -/// \ingroup PkgArrangement2 +/// \defgroup PkgArrangementOnSurface2Macros Macros +/// \ingroup PkgArrangementOnSurface2Ref -/// \defgroup PkgArrangement2Enums Enumerations -/// \ingroup PkgArrangement2 +/// \defgroup PkgArrangementOnSurface2Enums Enumerations +/// \ingroup PkgArrangementOnSurface2Ref /*! -\addtogroup PkgArrangement2 +\addtogroup PkgArrangementOnSurface2Ref \todo check generated documentation -\cgalPkgDescriptionBegin{2D Arrangements,PkgArrangement2Summary} +\cgalPkgDescriptionBegin{2D Arrangements,PkgArrangementOnSurface2} \cgalPkgPicture{Arrangement_2.png} \cgalPkgSummaryBegin \cgalPkgAuthors{Ron Wein, Eric Berberich, Efi Fogel, Dan Halperin, Michael Hemmer, Oren Salzman, and Baruch Zukerman} \cgalPkgDesc{This package can be used to construct, maintain, alter, and display arrangements in the plane. Once an arrangement is constructed, the package can be used to obtain results of various queries on the arrangement, such as point location. The package also includes generic implementations of two algorithmic frameworks, that are, computing the zone of an arrangement, and line-sweeping the plane, the arrangements is embedded on. These frameworks are used in turn in the implementations of other operations on arrangements. Computing the overlay of two arrangements, for example, is based on the sweep-line framework. Arrangements and arrangement components can also be extended to store additional data. An important extension stores the construction history of the arrangement, such that it is possible to obtain the originating curve of an arrangement subcurve.} -\cgalPkgManuals{Chapter_2D_Arrangements,PkgArrangement2} +\cgalPkgManuals{Chapter_2D_Arrangements,PkgArrangementOnSurface2Ref} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{2.1} @@ -206,7 +206,7 @@ implemented as peripheral classes or as free (global) functions. - `CGAL::read()` - `CGAL::write()` - `CGAL::remove_curve()` -- \link PkgArrangement2op_left_shift `CGAL::operator<<` \endlink -- \link PkgArrangement2op_right_shift `CGAL::operator<<` \endlink +- \link PkgArrangementOnSurface2op_left_shift `CGAL::operator<<` \endlink +- \link PkgArrangementOnSurface2op_right_shift `CGAL::operator<<` \endlink */ 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 ff47bd7b67b..9968ed5dfae 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 @@ -4,17 +4,13 @@ project( Arrangement_on_surface_2_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET COMPONENTS Core) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") + include(${CGAL_USE_FILE}) # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) diff --git a/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/dcel_extension.cpp b/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/dcel_extension.cpp index f5dd1962f60..230e8b6dc87 100644 --- a/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/dcel_extension.cpp +++ b/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/dcel_extension.cpp @@ -90,6 +90,7 @@ int main () case BLUE : std::cout << "BLUE." << std::endl; break; case RED : std::cout << "RED." << std::endl; break; case WHITE : std::cout << "WHITE." << std::endl; break; + default: break; } } diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_counting_traits_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_counting_traits_2.h index 1ca8328129a..16f9a57e6b5 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_counting_traits_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_counting_traits_2.h @@ -43,7 +43,7 @@ namespace CGAL { -/*! \class +/*! \class * A model of the ArrangementTraits_2 concept that counts the methods invoked. */ template @@ -88,7 +88,7 @@ public: COMPARE_X_ON_BOUNDARY_POINT_CURVE_END_OP, COMPARE_X_ON_BOUNDARY_CURVE_ENDS_OP, COMPARE_X_NEAR_BOUNDARY_OP, - + NUMBER_OF_OPERATIONS }; @@ -103,69 +103,69 @@ public: } /*! Construct copy */ - Arr_counting_traits_2(Arr_counting_traits_2& other) : Base(other) + Arr_counting_traits_2(const Arr_counting_traits_2& other) : Base(other) { clear_counters(); increment(); } - + /*! Obtain the counter of the given operation */ unsigned int count(Operation_id id) const { return m_counters[id]; } unsigned int count_compare_x() const { return m_counters[COMPARE_X_OP]; } - + unsigned int count_compare_xy() const { return m_counters[COMPARE_XY_OP]; } unsigned int count_construct_min_vertex() const { return m_counters[CONSTRUCT_MIN_VERTEX_OP]; } - + unsigned int count_construct_max_vertex() const { return m_counters[CONSTRUCT_MAX_VERTEX_OP]; } unsigned int count_is_vertical() const { return m_counters[IS_VERTICAL_OP]; } - + unsigned int count_compare_y_at_x() const { return m_counters[COMPARE_Y_AT_X_OP]; } - + unsigned int count_equal_points() const { return m_counters[EQUAL_POINTS_OP]; } - + unsigned int count_equal_curves() const { return m_counters[EQUAL_CURVES_OP]; } - + unsigned int count_compare_y_at_x_left() const { return m_counters[COMPARE_Y_AT_X_LEFT_OP]; } - + unsigned int count_compare_y_at_x_right() const { return m_counters[COMPARE_Y_AT_X_RIGHT_OP]; } - + unsigned int count_make_x_monotone() const { return m_counters[MAKE_X_MONOTONE_OP]; } - + unsigned int count_split() const { return m_counters[SPLIT_OP]; } - + unsigned int count_intersect() const { return m_counters[INTERSECT_OP]; } - + unsigned int count_are_mergeable() const { return m_counters[ARE_MERGEABLE_OP]; } - + unsigned int count_merge() const { return m_counters[MERGE_OP]; } - + unsigned int count_construct_opposite() const { return m_counters[CONSTRUCT_OPPOSITE_OP]; } - + unsigned int count_compare_endpoints_xy() const { return m_counters[COMPARE_ENDPOINTS_XY_OP]; } // left-right - + unsigned int count_parameter_space_in_x_curve_end() const { return m_counters[PARAMETER_SPACE_IN_X_CURVE_END_OP]; } @@ -174,7 +174,7 @@ public: unsigned int count_parameter_space_in_x_point() const { return m_counters[PARAMETER_SPACE_IN_X_POINT_OP]; } - + unsigned int count_is_on_x_identification_point() const { return m_counters[IS_ON_X_IDENTIFICATION_POINT_OP]; } @@ -242,7 +242,7 @@ public: Top_side_category; typedef typename internal::Arr_complete_right_side_category< Base >::Category Right_side_category; - + typedef typename Base::Point_2 Point_2; typedef typename Base::X_monotone_curve_2 X_monotone_curve_2; typedef typename Base::Curve_2 Curve_2; @@ -310,7 +310,7 @@ public: const Point_2 operator()(const X_monotone_curve_2& xc) const { ++m_counter; return m_object(xc); } }; - + /*! A functor that checks whether a given x-monotone curve is vertical. */ class Is_vertical_2 { private: @@ -326,7 +326,7 @@ public: bool operator()(const X_monotone_curve_2& xc) const { ++m_counter; return m_object(xc); } }; - + /*! A functor that compares the y-coordinates of a point and an * x-monotone curve at the point x-coordinate. */ @@ -345,7 +345,7 @@ public: const X_monotone_curve_2& xc) const { ++m_counter; return m_object(p, xc); } }; - + /*! A functor that checks whether two points and two x-monotone curves are * identical. */ @@ -369,7 +369,7 @@ public: /*! Operate */ bool operator()(const Point_2& p1, const Point_2& p2) const - { ++m_counter2; return m_object(p1, p2); } + { ++m_counter2; return m_object(p1, p2); } }; /*! A functor that compares compares the y-coordinates of two x-monotone @@ -411,7 +411,7 @@ public: const Point_2& p) const { ++m_counter; return m_object(xc1, xc2, p); } }; - + /*! A functor that divides a curve into x-monotone curves. */ class Make_x_monotone_2 { private: @@ -550,7 +550,7 @@ public: /*! Construct */ Parameter_space_in_x_2(const Base* base, unsigned int& counter1, unsigned int& counter2, unsigned int& counter3) : - m_object(base->parameter_space_in_x_2_object()), + m_object(base->parameter_space_in_x_2_object()), m_counter1(counter1), m_counter2(counter2), m_counter3(counter3) {} @@ -583,9 +583,9 @@ public: public: /*! Construct */ - Is_on_x_identification_2(const Base* base, + Is_on_x_identification_2(const Base* base, unsigned int& counter1, unsigned int& counter2) : - m_object(base->is_on_x_identificiation_2_object()), + m_object(base->is_on_x_identificiation_2_object()), m_counter1(counter1), m_counter2(counter2) {} @@ -619,7 +619,7 @@ public: Comparison_result operator()(const Point_2& p1, const Point_2& p2) const { ++m_counter; return m_object(p1, p2); } }; - + /*! A functor that compares the y-coordinates of curve ends near the * boundary of the parameter space. */ @@ -635,7 +635,7 @@ public: /*! Operate */ Comparison_result operator()(const X_monotone_curve_2& xc1, - const X_monotone_curve_2& xc2, + const X_monotone_curve_2& xc2, Arr_curve_end ce) const { ++m_counter; return m_object(xc1, xc2, ce); } }; @@ -656,7 +656,7 @@ public: /*! Construct */ Parameter_space_in_y_2(const Base* base, unsigned int& counter1, unsigned int& counter2, unsigned int& counter3) : - m_object(base->parameter_space_in_y_2_object()), + m_object(base->parameter_space_in_y_2_object()), m_counter1(counter1), m_counter2(counter2), m_counter3(counter3) {} @@ -673,7 +673,7 @@ public: /*! Operate */ Arr_parameter_space operator()(const X_monotone_curve_2& xc) const { ++m_counter3; return m_object(xc); } - + }; /*! A functor that determines whether a point or a curve lies on an @@ -687,9 +687,9 @@ public: public: /*! Construct */ - Is_on_y_identification_2(const Base* base, + Is_on_y_identification_2(const Base* base, unsigned int& counter1, unsigned int& counter2) : - m_object(base->is_on_y_identificiation_2_object()), + m_object(base->is_on_y_identificiation_2_object()), m_counter1(counter1), m_counter2(counter2) {} @@ -715,9 +715,9 @@ public: public: /*! Construct */ - Compare_x_at_limit_2(const Base* base, + Compare_x_at_limit_2(const Base* base, unsigned int& counter1, unsigned int& counter2) : - m_object(base->compare_x_at_limit_2_object()), + m_object(base->compare_x_at_limit_2_object()), m_counter1(counter1), m_counter2(counter2) {} @@ -743,11 +743,11 @@ public: private: typename Base::Compare_x_near_limit_2 m_object; unsigned int& m_counter; - + public: /*! Construct */ Compare_x_near_limit_2(const Base* base, unsigned int& counter) : - m_object(base->compare_x_near_limit_2_object()), + m_object(base->compare_x_near_limit_2_object()), m_counter(counter) {} @@ -804,12 +804,12 @@ public: private: typename Base::Compare_x_near_boundary_2 m_object; unsigned int& m_counter; - + public: /*! Construct */ - Compare_x_near_boundary_2(const Base* base, + Compare_x_near_boundary_2(const Base* base, unsigned int& counter) : - m_object(base->compare_x_near_boundary_2_object()), + m_object(base->compare_x_near_boundary_2_object()), m_counter(counter) {} @@ -829,7 +829,7 @@ public: Compare_x_2 compare_x_2_object() const { return Compare_x_2(this, m_counters[COMPARE_X_OP]); } - + Compare_xy_2 compare_xy_2_object() const { return Compare_xy_2(this, m_counters[COMPARE_XY_OP]); } @@ -838,13 +838,13 @@ public: Construct_max_vertex_2 construct_max_vertex_2_object() const { return Construct_max_vertex_2(this, m_counters[CONSTRUCT_MAX_VERTEX_OP]); } - + Is_vertical_2 is_vertical_2_object() const { return Is_vertical_2(this, m_counters[IS_VERTICAL_OP]); } - + Compare_y_at_x_2 compare_y_at_x_2_object() const { return Compare_y_at_x_2(this, m_counters[COMPARE_Y_AT_X_OP]); } - + Equal_2 equal_2_object() const { return Equal_2(this, m_counters[EQUAL_POINTS_OP], @@ -856,7 +856,7 @@ public: Compare_y_at_x_right_2 compare_y_at_x_right_2_object() const { return Compare_y_at_x_right_2(this, m_counters[COMPARE_Y_AT_X_RIGHT_OP]); } - + Make_x_monotone_2 make_x_monotone_2_object() const { return Make_x_monotone_2(this, m_counters[MAKE_X_MONOTONE_OP]); } @@ -881,16 +881,16 @@ public: // left-right Parameter_space_in_x_2 parameter_space_in_x_2_object() const { return Parameter_space_in_x_2( - this, + this, m_counters[PARAMETER_SPACE_IN_X_CURVE_END_OP], m_counters[PARAMETER_SPACE_IN_X_POINT_OP], m_counters[PARAMETER_SPACE_IN_X_CURVE_OP] - ); + ); } - + Is_on_x_identification_2 is_on_x_identification_2_object() const { - return Is_on_x_identification_2(this, + return Is_on_x_identification_2(this, m_counters[IS_ON_X_IDENTIFICATION_POINT_OP], m_counters[IS_ON_X_IDENTIFICATION_CURVE_OP]); } @@ -907,25 +907,25 @@ public: // bottom-top Parameter_space_in_y_2 parameter_space_in_y_2_object() const { return Parameter_space_in_y_2( - this, + this, m_counters[PARAMETER_SPACE_IN_Y_CURVE_END_OP], m_counters[PARAMETER_SPACE_IN_Y_POINT_OP], m_counters[PARAMETER_SPACE_IN_Y_CURVE_OP] - ); + ); } Is_on_y_identification_2 is_on_y_identification_2_object() const { return Is_on_y_identification_2( - this, + this, m_counters[IS_ON_Y_IDENTIFICATION_POINT_OP], m_counters[IS_ON_Y_IDENTIFICATION_CURVE_OP] - ); + ); } Compare_x_at_limit_2 compare_x_at_limit_2_object() const { return - Compare_x_at_limit_2(this, + Compare_x_at_limit_2(this, m_counters[COMPARE_X_AT_LIMIT_POINT_CURVE_END_OP], m_counters[COMPARE_X_AT_LIMIT_CURVE_ENDS_OP]); } @@ -936,12 +936,12 @@ public: Compare_x_on_boundary_2 compare_x_on_boundary_2_object() const { return - Compare_x_on_boundary_2(this, + Compare_x_on_boundary_2(this, m_counters[COMPARE_X_ON_BOUNDARY_POINTS_OP], m_counters[COMPARE_X_ON_BOUNDARY_POINT_CURVE_END_OP], m_counters[COMPARE_X_ON_BOUNDARY_CURVE_ENDS_OP]); } - + Compare_x_near_boundary_2 compare_x_near_boundary_2_object() const { return Compare_x_near_boundary_2(this, diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_polycurve_basic_traits_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_polycurve_basic_traits_2.h index cb2b238c139..5fc50e0c5fb 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_polycurve_basic_traits_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_polycurve_basic_traits_2.h @@ -1573,6 +1573,63 @@ public: Compare_x_on_boundary_2 compare_x_on_boundary_2_object() const { return Compare_x_on_boundary_2(*this); } + /*! A functor that compares the x-coordinates of curveends near the + * boundary of the parameter space. + */ + class Compare_x_near_boundary_2 { + protected: + typedef Arr_polycurve_basic_traits_2 + Polycurve_basic_traits_2; + + /*! The polycurve traits (in case it has state). */ + const Polycurve_basic_traits_2& m_poly_traits; + + public: + /*! Constructor. */ + Compare_x_near_boundary_2(const Polycurve_basic_traits_2& traits) : + m_poly_traits(traits) + {} + + /*! Compare the x-coordinates of 2 curveends near the boundary of the + * parameter space. + * \param xcv1 the first polycurve. + * \param xcv2 the second polycurve. + * \param ce the curve end indicator - + * ARR_MIN_END - the minimal end of curves or + * ARR_MAX_END - the maximal end of curves. + * \return the second comparison result: + * SMALLER - x(xcv1, ce) < x(xcv2, ce); + * EQUAL - x(xcv1, ce) = x(xcv2, ce); + * LARGER - x(xcv1, ce) > x(xcv2, ce). + * \pre the $x$-coordinates of xcv1 and xcv2 at their ce end are equal. + * \pre xcv1 does not coincide with the vertical identification curve. + * \pre xcv2 does not coincide with the vertical identification curve. + */ + Comparison_result operator()(const X_monotone_curve_2& xcv1, + const X_monotone_curve_2& xcv2, + Arr_curve_end ce) const + { + const Subcurve_traits_2* geom_traits = m_poly_traits.subcurve_traits_2(); + Comparison_result direction1 = + geom_traits->compare_endpoints_xy_2_object()(xcv1[0]); + const X_monotone_subcurve_2& xs1 = + (((direction1 == SMALLER) && (ce == ARR_MAX_END)) || + ((direction1 == LARGER) && (ce == ARR_MIN_END))) ? + xcv1[0] : xcv1[xcv1.number_of_subcurves()-1]; + Comparison_result direction2 = + geom_traits->compare_endpoints_xy_2_object()(xcv2[0]); + const X_monotone_subcurve_2& xs2 = + (((direction2 == SMALLER) && (ce == ARR_MAX_END)) || + ((direction2 == LARGER) && (ce == ARR_MIN_END))) ? + xcv2[0] : xcv2[xcv2.number_of_subcurves()-1]; + return geom_traits->compare_x_near_boundary_2_object()(xs1, xs2, ce); + } + }; + + /*! Obtain a Compare_x_near_boundary_2 function object */ + Compare_x_near_boundary_2 compare_x_near_boundary_2_object() const + { return Compare_x_near_boundary_2(*this); } + class Compare_x_at_limit_2{ protected: typedef Arr_polycurve_basic_traits_2 diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_polycurve_traits_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_polycurve_traits_2.h index ef0d6e94e4c..c1271e03fc5 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_polycurve_traits_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_polycurve_traits_2.h @@ -97,6 +97,7 @@ public: typedef typename Base::Parameter_space_in_y_2 Parameter_space_in_y_2; typedef typename Base::Compare_x_on_boundary_2 Compare_x_on_boundary_2; typedef typename Base::Compare_x_at_limit_2 Compare_x_at_limit_2; + typedef typename Base::Compare_x_near_boundary_2 Compare_x_near_boundary_2; typedef typename Base::Compare_x_near_limit_2 Compare_x_near_limit_2; typedef typename Base::Compare_y_on_boundary_2 Compare_y_on_boundary_2; typedef typename Base::Compare_y_near_boundary_2 Compare_y_near_boundary_2; @@ -165,7 +166,7 @@ public: #ifndef DOXYGEN_RUNNING class Push_back_2; -#endif +#endif /*! \class * A functor that divides an arc into x-monotone arcs. That are, arcs that * do not cross the identification arc. diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_polyline_traits_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_polyline_traits_2.h index 50c2b365ea6..b4b2d7c3dbf 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_polyline_traits_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_polyline_traits_2.h @@ -106,6 +106,7 @@ public: typedef typename Base::Parameter_space_in_y_2 Parameter_space_in_y_2; typedef typename Base::Compare_x_on_boundary_2 Compare_x_on_boundary_2; typedef typename Base::Compare_x_at_limit_2 Compare_x_at_limit_2; + typedef typename Base::Compare_x_near_boundary_2 Compare_x_near_boundary_2; typedef typename Base::Compare_x_near_limit_2 Compare_x_near_limit_2; typedef typename Base::Compare_y_on_boundary_2 Compare_y_on_boundary_2; typedef typename Base::Compare_y_near_boundary_2 Compare_y_near_boundary_2; diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_spherical_gaussian_map_3/Arr_polyhedral_sgm.h b/Arrangement_on_surface_2/include/CGAL/Arr_spherical_gaussian_map_3/Arr_polyhedral_sgm.h index a711d75ba59..b2be5687c10 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_spherical_gaussian_map_3/Arr_polyhedral_sgm.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_spherical_gaussian_map_3/Arr_polyhedral_sgm.h @@ -204,9 +204,6 @@ private: /*! The number of facest */ size_type m_num_facets; - /*! The type of the facets. */ - size_type m_num_vertices_per_facet; - /*! The index of the marked vertex */ size_type m_marked_vertex_index; @@ -223,13 +220,11 @@ private: size_type num_points, const CoordIndexIter& indices_begin, const CoordIndexIter& indices_end, - size_type num_facets, - size_type num_vertices_per_facet = 0) : + size_type num_facets) : m_points_begin(points_begin), m_points_end(points_end), m_num_points(num_points), m_indices_begin(indices_begin), m_indices_end(indices_end), m_num_facets(num_facets), - m_num_vertices_per_facet(num_vertices_per_facet), m_marked_vertex_index(0), m_marked_edge_index(0), m_marked_facet_index(0) @@ -264,51 +259,16 @@ private: // Add the facets: counter = 0; - switch (m_num_vertices_per_facet) { - case 0: // '0' indicates variant number of vertices per facet - { - CoordIndexIter ii = m_indices_begin; - while (ii != m_indices_end) { - Polyhedron_facet_handle fh = B.begin_facet(); - if (counter == m_marked_facet_index) fh->set_marked(true); - int index = *ii++; - while (index != -1) { - B.add_vertex_to_facet(index); - index = *ii++; - } - B.end_facet(); - ++counter; - } - } - break; - - case 3: - // Unfold for to improve preformance: - for (CoordIndexIter ii = m_indices_begin; ii != m_indices_end; - ii += m_num_vertices_per_facet) - { - Polyhedron_facet_handle fh = B.begin_facet(); - if (counter == m_marked_facet_index) fh->set_marked(true); - B.add_vertex_to_facet(*ii); - B.add_vertex_to_facet(*(ii+1)); - B.add_vertex_to_facet(*(ii+2)); - B.end_facet(); - ++counter; - } - break; - - default: - for (CoordIndexIter ii = m_indices_begin; ii != m_indices_end; - ii += m_num_vertices_per_facet) - { - Polyhedron_facet_handle fh = B.begin_facet(); - if (counter == m_marked_facet_index) fh->set_marked(true); - for (size_type i = 0; i < m_num_vertices_per_facet; ++i) - B.add_vertex_to_facet(*(ii + i)); - B.end_facet(); - ++counter; - } - break; + for (CoordIndexIter it = m_indices_begin; it != m_indices_end; ++it) { + Polyhedron_facet_handle fh = B.begin_facet(); + if (counter == m_marked_facet_index) fh->set_marked(true); + //! \todo EF: when upgrading to C++11 change the type of the following + // iterator to auto. Better yet, use for (auto blah : foo). + for (std::vector::const_iterator iit = it->begin(); + iit != it->end(); ++iit) + B.add_vertex_to_facet(*iit); + B.end_facet(); + ++counter; } B.end_surface(); } @@ -366,13 +326,12 @@ private: size_type num_points, const CoordIndexIter indices_begin, const CoordIndexIter indices_end, - size_type num_facets, - size_type num_vertices_per_facet = 0) + size_type num_facets) { /*! The builder */ Build_surface surface(points_begin, points_end, num_points, - indices_begin, indices_end, num_facets, num_vertices_per_facet); + indices_begin, indices_end, num_facets); surface.set_marked_vertex_index(m_marked_vertex_index); surface.set_marked_edge_index(m_marked_edge_index); surface.set_marked_facet_index(m_marked_facet_index); @@ -604,15 +563,13 @@ public: const CoordIndexIter indices_begin, const CoordIndexIter indices_end, size_type num_facets, - size_type num_vertices_per_facet = 0, Visitor* visitor = NULL) { m_visitor = visitor; Polyhedron polyhedron; update_polyhedron(polyhedron, points_begin, points_end, num_points, - indices_begin, indices_end, num_facets, - num_vertices_per_facet); + indices_begin, indices_end, num_facets); #if 0 std::copy(polyhedron.points_begin(), polyhedron.points_end(), diff --git a/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arr_traits_adaptor_2.h b/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arr_traits_adaptor_2.h index 4b5abbee86a..aac94d85371 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arr_traits_adaptor_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arr_traits_adaptor_2.h @@ -18,15 +18,16 @@ // $Date$ // // -// Author(s) : Ron Wein s -// Efi Fogel -// Eric Berberich -// (based on old version by Iddo Hanniel -// Eyal Flato -// Oren Nechushtan -// Efi Fogel -// Ron Wein -// Idit Haran) +// Author(s): Ron Wein s +// Efi Fogel +// Eric Berberich +// (based on old version by Iddo Hanniel +// Eyal Flato +// Oren Nechushtan +// Efi Fogel +// Ron Wein +// Idit Haran) + #ifndef CGAL_ARR_TRAITS_ADAPTOR_2_H #define CGAL_ARR_TRAITS_ADAPTOR_2_H @@ -73,6 +74,12 @@ public: Right_side_category; protected: + // All sides + typedef typename Arr_are_all_sides_oblivious_tag::result + Are_all_sides_oblivious_category; // left-right dispatch typedef CGAL::internal::Arr_left_right_implementation_dispatch< @@ -2270,10 +2277,10 @@ class Arr_traits_adaptor_2 : public Arr_traits_basic_adaptor_2 { public: - // Traits-class geometric types. - typedef ArrangementTraits_ Base_traits_2; - typedef Arr_traits_basic_adaptor_2 Base; + typedef ArrangementTraits_ Base_traits_2; + typedef Arr_traits_basic_adaptor_2 Base; + typedef Arr_traits_adaptor_2 Self; typedef typename Base_traits_2::Curve_2 Curve_2; typedef typename Base::X_monotone_curve_2 X_monotone_curve_2; @@ -2289,6 +2296,9 @@ public: typedef typename Base::Top_side_category Top_side_category; typedef typename Base::Right_side_category Right_side_category; + typedef typename Base::Are_all_sides_oblivious_category + Are_all_sides_oblivious_category; + /// \name Construction. //@{ /*! Default constructor. */ @@ -2300,7 +2310,7 @@ public: // Inherited functors: typedef typename Base::Compare_x_2 Compare_x_2; - typedef typename Base::Compare_xy_2 Compare_xy_2; + // typedef typename Base::Compare_xy_2 Compare_xy_2; typedef typename Base::Construct_min_vertex_2 Construct_min_vertex_2; typedef typename Base::Construct_max_vertex_2 Construct_max_vertex_2; typedef typename Base::Is_vertical_2 Is_vertical_2; @@ -2317,6 +2327,499 @@ public: /// \name Overriden functors. //@{ + /*! A functor that compares two points or two x-monotone curves + * lexigoraphically. Twp points are compared firest by their x-coordinates, + * then by their y-coordinates. Two curves are compared first their left-most + * endpoint, then by the graphs, and finally by their right-most endpoint. + */ + class Compare_xy_2 { + public: + /*! Compare two points lexigoraphically: by x, then by y. + * \param p1 the first point. + * \param p2 the second point. + * \return SMALLER - x(p1) < x(p2); + * SMALLER - x(p1) = x(p2) and y(p1) < y(p2); + * EQUAL - x(p1) = x(p2) and y(p1) = y(p2); + * LARGER - x(p1) = x(p2) and y(p1) > y(p2); + * LARGER - x(p1) > x(p2). + * \pre p1 does not lie on the boundary. + * \pre p2 does not lie on the boundary. + */ + Comparison_result operator()(const Point_2& p1, const Point_2& p2) const + { + Base base(m_self); + return base.compare_xy_2_object()(p1, p2); + } + + /*! Compare two x-monotone curves lexigoraphically. + * Input: C1, C2, intersections = empty + * compare(C1, C2, intersections) + * Compare the left-most points of C1 and C2. + * If not equal return the comparison result. + * Otherwise (the left-most points are equal) + * Compare C1 and C2 to the right of the point. + * If not equal return the comparison result. + * Otherwise (they overlap) + * If intersection is empty, compute the intersections, + * Remove the first overlapping section from c1, c2, and intersections. + * If intersections is empty + * Compare the right-most point and return the result. + * return compare(C1, C2, intersections). + */ + Comparison_result operator()(const X_monotone_curve_2& c1, + const X_monotone_curve_2& c2) const + { + std::list intersections; + return operator()(c1, c2, intersections, + Are_all_sides_oblivious_category()); + } + + protected: + //! The base traits. + const Self& m_self; + + /*! Constructor. + * \param trait The base traits class. It must be passed, to handle non + * stateless traits objects, (which stores data). + * The constructor is declared private to allow only the functor + * obtaining function, which is a member of the nesting class, + * constructing it. + */ + Compare_xy_2(const Self& self) : m_self(self) {} + + //! Allow its functor obtaining function calling the private constructor. + friend class Arr_traits_adaptor_2; + + /// Point-curve + //@{ + /*! Compare a point and a curve end. + * Dispatch calls to traits that handle open and close boundaries, resp. + * The only reason for this dispatcher is the poor choice of different + * names for the Traits functors that handle close and open boundaries: + * Open boundary traits use: Compare_x_at_limit_2 + * Close boundary traits use: Compare_x_on_boundary_2 + */ + Comparison_result cmp_x_on_bnd(const Point_2& p, + const X_monotone_curve_2& c, + Arr_curve_end ce) const + { + // The complete code would need to check whether ce is bottom or top and + // use the corresponding dispatching criterion, but + // (i) in all out traits if bottom is open, so is top, and + // (ii) this is going to change soon.... + return cmp_x_on_bnd(p, c, ce, Bottom_side_category()); + } + + // Open + Comparison_result cmp_x_on_bnd(const Point_2& p, + const X_monotone_curve_2& c, + Arr_curve_end ce, + Arr_open_side_tag) const + { return m_self.compare_x_at_limit_2_object()(p, c, ce); } + + // Close + Comparison_result cmp_x_on_bnd(const Point_2& p, + const X_monotone_curve_2& c, + Arr_curve_end ce, + Arr_oblivious_side_tag) const + { return m_self.compare_x_on_boundary_2_object()(p, c, ce); } + //@} + + /// curve-curve + //@{ + /*! Compare a curve end and a curve end. + * Dispatch calls to traits that handle open and close boundaries, resp. + * The only reason for this dispatcher is the poor choice of different + * names for the Traits functors that handle close and open boundaries: + * Open boundary traits use: Compare_x_at_limit_2 + * Close boundary traits use: Compare_x_on_boundary_2 + */ + Comparison_result cmp_x_on_bnd(const X_monotone_curve_2& c1, + Arr_curve_end ce1, + const X_monotone_curve_2& c2, + Arr_curve_end ce2) const + { + // The complete code would need to check the combination of ce1 and ce2, + // whther they are (booton,bottom), (bottom,top), (top,bottom) or + // (top,top) and use the corresponding dispatching criteria, but we don't + // even have the interface to handle mixed (e.g., open bottom and + // closed top. Anyway, this is going to change soon.... + return cmp_x_on_bnd(c1, ce1, c2, ce2, Bottom_side_category()); + } + + // Open + Comparison_result cmp_x_on_bnd(const X_monotone_curve_2& c1, + Arr_curve_end ce1, + const X_monotone_curve_2& c2, + Arr_curve_end ce2, + Arr_open_side_tag) const + { return m_self.compare_x_at_limit_2_object()(c1, ce1, c2, ce2); } + + // Close + Comparison_result cmp_x_on_bnd(const X_monotone_curve_2& c1, + Arr_curve_end ce1, + const X_monotone_curve_2& c2, + Arr_curve_end ce2, + Arr_oblivious_side_tag) const + { return m_self.compare_x_on_boundary_2_object()(c1, ce1, c2, ce2); } + //@} + + /*! Compare the max end of two x-monotone curves lexigoraphically. + */ + Comparison_result compare_max_end(const X_monotone_curve_2& c1, + const X_monotone_curve_2& c2, + Arr_all_sides_oblivious_tag) const + { + typedef typename Self::Construct_max_vertex_2 Construct_max_vertex_2; + Construct_max_vertex_2 ctr_max = + m_self.construct_max_vertex_2_object(); + const Point_2& p1 = ctr_max(c1); + const Point_2& p2 = ctr_max(c2); + return operator()(p1, p2); + } + + /*! Compare the max (right) end of two x-monotone curves lexigoraphically. + * \pre the curve overlap + */ + Comparison_result compare_max_end(const X_monotone_curve_2& c1, + const X_monotone_curve_2& c2, + Arr_not_all_sides_oblivious_tag) const + { + typedef typename Base::Parameter_space_in_x_2 Parameter_space_in_x_2; + typedef typename Base::Parameter_space_in_y_2 Parameter_space_in_y_2; + Parameter_space_in_x_2 psx = m_self.parameter_space_in_x_2_object(); + Parameter_space_in_y_2 psy = m_self.parameter_space_in_y_2_object(); + + Arr_parameter_space px1 = psx(c1, ARR_MAX_END); + Arr_parameter_space py1 = psy(c1, ARR_MAX_END); + + Arr_parameter_space px2 = psx(c2, ARR_MAX_END); + Arr_parameter_space py2 = psy(c2, ARR_MAX_END); + + // Handle the trivial cases: + if ((px1 == ARR_LEFT_BOUNDARY) && (px2 != ARR_LEFT_BOUNDARY)) + return SMALLER; + + if ((px2 == ARR_LEFT_BOUNDARY) && (px1 != ARR_LEFT_BOUNDARY)) + return LARGER; + + if ((px1 == ARR_RIGHT_BOUNDARY) && (px2 != ARR_RIGHT_BOUNDARY)) + return LARGER; + + if ((px2 == ARR_RIGHT_BOUNDARY) && (px1 != ARR_RIGHT_BOUNDARY)) + return SMALLER; + + // The only casese left are px1,px2 = (I,I), (L,L), and (R,R) + + if (px1 == ARR_INTERIOR) { + CGAL_assertion(px2 == ARR_INTERIOR); + + if ((py1 == ARR_INTERIOR) && (py2 == ARR_INTERIOR)) + return compare_max_end(c1, c2, Arr_all_sides_oblivious_tag()); + + // px1, px2, py1 are interior + if (py1 == ARR_INTERIOR) { + CGAL_assertion(py2 != ARR_INTERIOR); +#if 0 + // This code is retained (commented out) because in the future, when + // Compare_x_at_limit_2 and Compare_x_on_boundary will be consolidated, + // say, to Compare_x_on_boundary, it will replace the call below. + typedef typename Self::Compare_x_on_boundary_2 Compare_x_on_boundary_2; + Compare_x_on_boundary_2 cmp_x_on_bnd = + m_self.compare_x_on_boundary_2_object(); +#endif + const Point_2& c1_max = m_self.construct_max_vertex_2_object()(c1); + Comparison_result res = cmp_x_on_bnd(c1_max, c2, ARR_MAX_END); + if (res != EQUAL) return res; + + return (py2 == ARR_TOP_BOUNDARY) ? SMALLER : LARGER; + } + + // px1, px2, py2 are interior + if (py2 == ARR_INTERIOR) { + CGAL_assertion(py1 != ARR_INTERIOR); +#if 0 + // This code is retained (commented out) because in the future, when + // Compare_x_at_limit_2 and Compare_x_on_boundary will be consolidated, + // say, to Compare_x_on_boundary, it will replace the call below. + typedef typename Self::Compare_x_on_boundary_2 Compare_x_on_boundary_2; + Compare_x_on_boundary_2 cmp_x_on_bnd = + m_self.compare_x_on_boundary_2_object(); +#endif + const Point_2& c2_max = m_self.construct_max_vertex_2_object()(c2); + Comparison_result res = cmp_x_on_bnd(c2_max, c1, ARR_MAX_END); + if (res != EQUAL) return CGAL::opposite(res); + + return (py1 == ARR_BOTTOM_BOUNDARY) ? SMALLER : LARGER; + } + + // Both py1 and py2 not interior +#if 0 + // This code is retained (commented out) because in the future, when + // Compare_x_at_limit_2 and Compare_x_on_boundary will be consolidated, + // say, to Compare_x_on_boundary, it will replace the call below. + typedef typename Self::Compare_x_on_boundary_2 Compare_x_on_boundary_2; + Compare_x_on_boundary_2 cmp_x_on_bnd = + m_self.compare_x_on_boundary_2_object(); +#endif + Comparison_result res = cmp_x_on_bnd(c1, ARR_MAX_END, c2, ARR_MAX_END); + if (res != EQUAL) return res; + + if ((py1 == ARR_BOTTOM_BOUNDARY) && (py2 != ARR_BOTTOM_BOUNDARY)) + return SMALLER; + if ((py1 == ARR_TOP_BOUNDARY) && (py2 != ARR_TOP_BOUNDARY)) + return LARGER; + return EQUAL; + } + + // Both endpoints lie either on the left boundary or on the right + // boundary, which means that their x-coordinates are equal. + // Handle the trivial cases: + if ((py1 == ARR_BOTTOM_BOUNDARY) && (py2 != ARR_BOTTOM_BOUNDARY)) + return SMALLER; + if ((py1 == ARR_TOP_BOUNDARY) && (py2 != ARR_TOP_BOUNDARY)) + return LARGER; + + typedef typename Self::Compare_y_on_boundary_2 Compare_y_on_boundary_2; + Compare_y_on_boundary_2 cmp_y_on_bnd = + m_self.compare_y_on_boundary_2_object(); + const Point_2& c1_max = m_self.construct_max_vertex_2_object()(c1); + const Point_2& c2_max = m_self.construct_max_vertex_2_object()(c2); + Comparison_result res = cmp_y_on_bnd(c1_max, c2_max); + return res; + } + + /*! Split 2 given curves that overlap and have a common sub-curve on their + * right. Then compare the remaining portions of the curves, respectively. + */ + Comparison_result + compare_remainder(const X_monotone_curve_2& c1, + const X_monotone_curve_2& c2, + std::list& intersections) const + { + // Right-most sections are equal. + // Advance to the next respective sections: + if (intersections.empty()) { + typedef typename Self::Intersect_2 Intersect_2; + Intersect_2 intersect = m_self.intersect_2_object(); + intersect(c1, c2, std::back_inserter(intersections)); + } + // Verify the first intersection is an overlap, remove it, and + // recursively call. + CGAL::Object first = intersections.front(); + X_monotone_curve_2 xcv; + if (!assign(xcv, first)) { + CGAL_error_msg("The first intersection is not an overlap!"); + return SMALLER; + } + intersections.pop_front(); + if (intersections.empty()) + return compare_max_end(c1, c2, Are_all_sides_oblivious_category()); + + // Otherwise, split and continue. + typedef typename Self::Split_2 Split_2; + Split_2 split = m_self.split_2_object(); + X_monotone_curve_2 c11, c12, c21, c22; + Construct_max_vertex_2 ctr_max = + m_self.construct_max_vertex_2_object(); + const Point_2& p1 = ctr_max(xcv); + const Point_2& p2 = ctr_max(xcv); + split(c1, p1, c11, c12); + split(c2, p2, c21, c22); + return operator()(c12, c22, intersections, + Are_all_sides_oblivious_category()); + } + + /*! Compare two x-monotone curves lexigoraphically. + */ + Comparison_result operator()(const X_monotone_curve_2& c1, + const X_monotone_curve_2& c2, + std::list& intersections, + Arr_all_sides_oblivious_tag) const + { + const Point_2& c1_min = m_self.construct_min_vertex_2_object()(c1); + const Point_2& c2_min = m_self.construct_min_vertex_2_object()(c2); + + Comparison_result res = operator()(c1_min, c2_min); + if (res != EQUAL) return res; + + // Left-most points are equal. + // Compare their y-coordinates to their right: + res = m_self.compare_y_at_x_right_2_object()(c1, c2, c1_min); + if (res != EQUAL) return res; + + return compare_remainder(c1, c2, intersections); + } + + /*! Compare two x-monotone curves lexigoraphically. + */ + Comparison_result operator()(const X_monotone_curve_2& c1, + const X_monotone_curve_2& c2, + std::list& intersections, + Arr_not_all_sides_oblivious_tag) const + { + typedef typename Base::Parameter_space_in_x_2 Parameter_space_in_x_2; + typedef typename Base::Parameter_space_in_y_2 Parameter_space_in_y_2; + Parameter_space_in_x_2 psx = m_self.parameter_space_in_x_2_object(); + Parameter_space_in_y_2 psy = m_self.parameter_space_in_y_2_object(); + + Arr_parameter_space min_px1 = psx(c1, ARR_MIN_END); + Arr_parameter_space min_py1 = psy(c1, ARR_MIN_END); + + Arr_parameter_space min_px2 = psx(c2, ARR_MIN_END); + Arr_parameter_space min_py2 = psy(c2, ARR_MIN_END); + + // Handle the trivial cases: + if ((min_px1 == ARR_LEFT_BOUNDARY) && (min_px2 != ARR_LEFT_BOUNDARY)) + return SMALLER; + + if ((min_px2 == ARR_LEFT_BOUNDARY) && (min_px1 != ARR_LEFT_BOUNDARY)) + return LARGER; + + if ((min_px1 == ARR_RIGHT_BOUNDARY) && (min_px2 != ARR_RIGHT_BOUNDARY)) + return LARGER; + + if ((min_px2 == ARR_RIGHT_BOUNDARY) && (min_px1 != ARR_RIGHT_BOUNDARY)) + return SMALLER; + + // The only casese left are px1,px2 = (I,I), (L,L), and (R,R) + + if (min_px1 == ARR_INTERIOR) { + CGAL_assertion(min_px2 == ARR_INTERIOR); + + if ((min_py1 == ARR_INTERIOR) && (min_py2 == ARR_INTERIOR)) { + return operator()(c1, c2, intersections, + Arr_all_sides_oblivious_tag()); + } + + // + if (min_py1 == ARR_INTERIOR) { + CGAL_assertion(min_py2 != ARR_INTERIOR); +#if 0 + // This code is retained (commented out) because in the future, when + // Compare_x_at_limit_2 and Compare_x_on_boundary will be consolidated, + // say, to Compare_x_on_boundary, it will replace the call below. + typedef typename Self::Compare_x_on_boundary_2 Compare_x_on_boundary_2; + Compare_x_on_boundary_2 cmp_x_on_bnd = + m_self.compare_x_on_boundary_2_object(); +#endif + const Point_2& c1_min = m_self.construct_min_vertex_2_object()(c1); + Comparison_result res = cmp_x_on_bnd(c1_min, c2, ARR_MIN_END); + if (res != EQUAL) return res; + + return (min_py2 == ARR_TOP_BOUNDARY) ? SMALLER : LARGER; + } + + if (min_py2 == ARR_INTERIOR) { + CGAL_assertion(min_py1 != ARR_INTERIOR); +#if 0 + // This code is retained (commented out) because in the future, when + // Compare_x_at_limit_2 and Compare_x_on_boundary will be consolidated, + // say, to Compare_x_on_boundary, it will replace the call below. + typedef typename Self::Compare_x_on_boundary_2 Compare_x_on_boundary_2; + Compare_x_on_boundary_2 cmp_x_on_bnd = + m_self.compare_x_on_boundary_2_object(); +#endif + const Point_2& c2_min = m_self.construct_min_vertex_2_object()(c2); + + Comparison_result res = cmp_x_on_bnd(c2_min, c1, ARR_MIN_END); + if (res != EQUAL) return CGAL::opposite(res); + + return (min_py1 == ARR_BOTTOM_BOUNDARY) ? SMALLER : LARGER; + } + + // Both min_py1 and min_py2 not interior +#if 0 + // This code is retained (commented out) because in the future, when + // Compare_x_at_limit_2 and Compare_x_on_boundary will be consolidated, + // say, to Compare_x_on_boundary, it will replace the call below. + typedef typename Self::Compare_x_on_boundary_2 Compare_x_on_boundary_2; + Compare_x_on_boundary_2 cmp_x_on_bnd = + m_self.compare_x_on_boundary_2_object(); +#endif + Comparison_result res = cmp_x_on_bnd(c1, ARR_MIN_END, c2, ARR_MIN_END); + if (res != EQUAL) return res; + + if ((min_py1 == ARR_BOTTOM_BOUNDARY) && (min_py2 == ARR_TOP_BOUNDARY)) + return SMALLER; + if ((min_py1 == ARR_TOP_BOUNDARY) && (min_py2 == ARR_BOTTOM_BOUNDARY)) + return LARGER; + + // Left-most points are equal. + // Compare their x-coordinates near the common left endpoint. + res = m_self.compare_x_near_boundary_2_object()(c1, c2, ARR_MIN_END); + if (res != EQUAL) return res; + + return compare_remainder(c1, c2, intersections); + } + + + if ((min_py1 == ARR_BOTTOM_BOUNDARY) && (min_py2 != ARR_BOTTOM_BOUNDARY)) + return SMALLER; + if ((min_py1 == ARR_TOP_BOUNDARY) && (min_py2 != ARR_TOP_BOUNDARY)) + return LARGER; + + if (min_px1 == ARR_LEFT_BOUNDARY) { + // The min points of the two curves lie on the left boundary. + CGAL_assertion(min_px2 == ARR_LEFT_BOUNDARY); + typedef typename Self::Compare_y_on_boundary_2 Compare_y_on_boundary_2; + Compare_y_on_boundary_2 cmp_y_on_bnd = + m_self.compare_y_on_boundary_2_object(); + const Point_2& c1_min = m_self.construct_min_vertex_2_object()(c1); + const Point_2& c2_min = m_self.construct_min_vertex_2_object()(c2); + Comparison_result res = cmp_y_on_bnd(c1_min, c2_min); + if (res != EQUAL) return res; + + typedef typename Self::Is_vertical_2 Is_vertical_2; + Is_vertical_2 is_vert = m_self.is_vertical_2_object(); + bool vert1 = is_vert(c1); + bool vert2 = is_vert(c2); + if (vert1 && ! vert2) return SMALLER; + if (vert2 && ! vert1) return LARGER; + if (vert1 && vert2) { + const Point_2& c1_max = m_self.construct_max_vertex_2_object()(c1); + const Point_2& c2_max = m_self.construct_max_vertex_2_object()(c2); + res = cmp_y_on_bnd(c1_max, c2_max); + if (res == SMALLER) return SMALLER; + } + // Compare slightly to the right near the boundary. + typedef typename Self::Compare_y_near_boundary_2 + Compare_y_near_boundary_2; + Compare_y_near_boundary_2 cmp_y_near_bnd = + m_self.compare_y_near_boundary_2_object(); + res = cmp_y_near_bnd(c1, c2, CGAL::ARR_MIN_END); + if (res != EQUAL) return res; + + // The two curves overlap on their right. + // Intersect them, and recursively compare the remaining portions, + // respectively. + return compare_remainder(c1, c2, intersections); + } + + CGAL_assertion(min_px1 == ARR_RIGHT_BOUNDARY); + CGAL_assertion(min_px2 == ARR_RIGHT_BOUNDARY); + // The min points of the two curves lie on the right boundary. + // It implies that the entire curves lie on the right boundary, and + // thus both are vertical. + + typedef typename Self::Compare_y_on_boundary_2 Compare_y_on_boundary_2; + Compare_y_on_boundary_2 cmp_y_on_bnd = + m_self.compare_y_on_boundary_2_object(); + const Point_2& c1_min = m_self.construct_min_vertex_2_object()(c1); + const Point_2& c2_min = m_self.construct_min_vertex_2_object()(c2); + Comparison_result res = cmp_y_on_bnd(c1_min, c2_min); + if (res != EQUAL) return res; + + const Point_2& c1_max = m_self.construct_max_vertex_2_object()(c1); + const Point_2& c2_max = m_self.construct_max_vertex_2_object()(c2); + res = cmp_y_on_bnd(c1_max, c2_max); + return res; + } + }; + + /*! Obtain a Compare_xy_2 function object */ + Compare_xy_2 compare_xy_2_object() const { return Compare_xy_2(*this); } + /*! A functor that tests whether two x-monotone curves can be merged. */ class Are_mergeable_2 { public: diff --git a/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arrangement_zone_2_impl.h b/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arrangement_zone_2_impl.h index 61dabb00b1f..254a16364c0 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arrangement_zone_2_impl.h +++ b/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arrangement_zone_2_impl.h @@ -15,18 +15,17 @@ // $URL$ // $Id$ // SPDX-License-Identifier: GPL-3.0+ -// // -// Author(s) : Ron Wein -// Efi Fogel -// (based on old version by Eyal Flato) +// +// Author(s): Ron Wein +// Efi Fogel +// (based on old version by Eyal Flato) #ifndef CGAL_ARRANGEMENT_ZONE_2_IMPL_H #define CGAL_ARRANGEMENT_ZONE_2_IMPL_H #include - /*! \file * Member-function definitions for the Arrangement_zone_2 class. */ @@ -37,339 +36,662 @@ namespace CGAL { // Initialize the zone-computation process with a given curve and an object // that wraps the location of the curve's left end. // -template -void Arrangement_zone_2:: -init_with_hint(const X_monotone_curve_2& _cv, const Object& _obj) +template +void Arrangement_zone_2:: +init_with_hint(const X_monotone_curve_2& cv, const Object& obj) { // Set the curve and check whether its ends are bounded, therefore // associated with valid endpoints. - cv = _cv; - - if (m_geom_traits->is_closed_2_object()(cv, ARR_MIN_END)) - { - // The left endpoint is valid. - const Arr_parameter_space ps_x1 = - m_geom_traits->parameter_space_in_x_2_object()(cv, ARR_MIN_END); - const Arr_parameter_space ps_y1 = - m_geom_traits->parameter_space_in_y_2_object()(cv, ARR_MIN_END); - has_left_pt = true; - left_on_boundary = (ps_x1 != ARR_INTERIOR || ps_y1 != ARR_INTERIOR); - left_pt = m_geom_traits->construct_min_vertex_2_object() (cv); - } - else - { - // The left end of the curve lies on open boundary. - has_left_pt = false; - left_on_boundary = true; - } - - if (m_geom_traits->is_closed_2_object()(cv, ARR_MAX_END)) - { - // The right endpoint is valid. - const Arr_parameter_space ps_x2 = - m_geom_traits->parameter_space_in_x_2_object()(cv, ARR_MAX_END); - const Arr_parameter_space ps_y2 = - m_geom_traits->parameter_space_in_y_2_object()(cv, ARR_MAX_END); - has_right_pt = true; - right_on_boundary = (ps_x2 != ARR_INTERIOR || ps_y2 != ARR_INTERIOR); - right_pt = m_geom_traits->construct_max_vertex_2_object() (cv); - } - else - { - // The right end of the curve lies on open boundary. - has_right_pt = false; - right_on_boundary = true; - } - - // Set the object that represents the location of the left end of the curve - // in the arrangement. - obj = _obj; + m_cv = cv; - return; + if (m_geom_traits->is_closed_2_object()(m_cv, ARR_MIN_END)) { + // The left endpoint is valid. + const Arr_parameter_space ps_x1 = + m_geom_traits->parameter_space_in_x_2_object()(m_cv, ARR_MIN_END); + const Arr_parameter_space ps_y1 = + m_geom_traits->parameter_space_in_y_2_object()(m_cv, ARR_MIN_END); + m_has_left_pt = true; + m_left_on_boundary = (ps_x1 != ARR_INTERIOR || ps_y1 != ARR_INTERIOR); + m_left_pt = m_geom_traits->construct_min_vertex_2_object()(m_cv); + } + else { + // The left end of the curve lies on open boundary. + m_has_left_pt = false; + m_left_on_boundary = true; + } + + if (m_geom_traits->is_closed_2_object()(m_cv, ARR_MAX_END)) { + // The right endpoint is valid. + const Arr_parameter_space ps_x2 = + m_geom_traits->parameter_space_in_x_2_object()(m_cv, ARR_MAX_END); + const Arr_parameter_space ps_y2 = + m_geom_traits->parameter_space_in_y_2_object()(m_cv, ARR_MAX_END); + m_has_right_pt = true; + m_right_on_boundary = (ps_x2 != ARR_INTERIOR || ps_y2 != ARR_INTERIOR); + m_right_pt = m_geom_traits->construct_max_vertex_2_object()(m_cv); + } + else { + // The right end of the curve lies on open boundary. + m_has_right_pt = false; + m_right_on_boundary = true; + } + + // Set the object that represents the location of the left end of the curve + // in the arrangement. + m_obj = obj; } //----------------------------------------------------------------------------- // Compute the zone of the given curve and issue the apporpriate // notifications for the visitor. // -template -void Arrangement_zone_2::compute_zone () +template +void Arrangement_zone_2::compute_zone() { // Initialize flags and set all handles to be invalid. - bool done = false; + bool done = false; - found_intersect = false; - found_overlap = false; - found_iso_vert = false; + m_found_intersect = false; + m_found_overlap = false; + m_found_iso_vert = false; - left_v = invalid_v; - left_he = invalid_he; - right_v = invalid_v; - right_he = invalid_he; + m_left_v = m_invalid_v; + m_left_he = m_invalid_he; + m_right_v = m_invalid_v; + m_right_he = m_invalid_he; // Locate the arrangement feature containing the left endpoint of the - // curve (currently obj stores the object containing it). - const Vertex_const_handle *vh; - const Halfedge_const_handle *hh; - const Face_const_handle *fh; + // curve (currently m_obj stores the object containing it). + const Vertex_const_handle* vh; + const Halfedge_const_handle* hh; + const Face_const_handle* fh; - if ((vh = object_cast(&obj)) != NULL) - { - CGAL_assertion (has_left_pt); + if ((vh = object_cast(&m_obj)) != NULL) { + CGAL_assertion(m_has_left_pt); // The left endpoint coincides with an existing vertex: - left_v = arr.non_const_handle (*vh); + m_left_v = m_arr.non_const_handle(*vh); - if (left_on_boundary) - { +#if 0 + if (m_left_on_boundary) { // Use the accessor to locate the predecessor edge, in case the left // endpoint has boundary conditions. - const Arr_parameter_space ps_x = - m_geom_traits->parameter_space_in_x_2_object()(cv, ARR_MIN_END); - const Arr_parameter_space ps_y = - m_geom_traits->parameter_space_in_y_2_object()(cv, ARR_MIN_END); + const Arr_parameter_space ps_x = + m_geom_traits->parameter_space_in_x_2_object()(m_cv, ARR_MIN_END); + const Arr_parameter_space ps_y = + m_geom_traits->parameter_space_in_y_2_object()(m_cv, ARR_MIN_END); - left_he = arr_access.locate_around_boundary_vertex (left_v, - cv, ARR_MIN_END, - ps_x, ps_y); + m_left_he = m_arr_access.locate_around_boundary_vertex(m_left_v, + m_cv, ARR_MIN_END, + ps_x, ps_y); } +#endif + } - else if ((hh = object_cast(&obj)) != NULL) - { - if (has_left_pt) - { - // Obtain the right halfedge from the halfedge-pair containing left_pt + else if ((hh = object_cast(&m_obj)) != NULL) { + if (m_has_left_pt) { + // Obtain the right halfedge from the halfedge-pair containing m_left_pt // in their interior. - left_he = _direct_intersecting_edge_to_right (cv, left_pt, - arr.non_const_handle(*hh)); + m_left_he = + _direct_intersecting_edge_to_right(m_cv, m_left_pt, + m_arr.non_const_handle(*hh)); // Handle overlaps. - if (found_overlap) - { - // In this case cv overlaps the curve associated with intersect_he. + if (m_found_overlap) { + // In this case m_cv overlaps the curve associated with m_intersect_he. // Compute the overlapping subcurve. - bool dummy; - obj = _compute_next_intersection (intersect_he, false, dummy); - - overlap_cv = object_cast (obj); - + bool dummy; + m_obj = _compute_next_intersection(m_intersect_he, false, dummy); + m_overlap_cv = object_cast(m_obj); + // Remove the overlap from the map. - _remove_next_intersection (intersect_he); - + _remove_next_intersection(m_intersect_he); + // Compute the overlap zone. - done = _zone_in_overlap (); + done = _zone_in_overlap(); } } - else - { + else { // In case the unbounded left end conicides with an edge, then our curve // overlaps the curve associated with this edge. - intersect_he = arr.non_const_handle (*hh); + m_intersect_he = m_arr.non_const_handle(*hh); + + bool dummy; + m_obj = _compute_next_intersection(m_intersect_he, false, dummy); + m_overlap_cv = object_cast(m_obj); - bool dummy; - obj = _compute_next_intersection (intersect_he, false, dummy); - - overlap_cv = object_cast (obj); - // Remove the overlap from the map. - _remove_next_intersection (intersect_he); - + _remove_next_intersection(m_intersect_he); + // Compute the overlap zone. - done = _zone_in_overlap (); + done = _zone_in_overlap(); } } - else - { + else { // The left endpoint lies inside a face. - fh = object_cast(&obj); + fh = object_cast(&m_obj); CGAL_assertion_msg(fh != NULL, - "Invalid object returned by the point-location query."); + "Invalid object returned by the point-location query."); // Compute the zone of the curve at the interior of the face. - done = _zone_in_face (arr.non_const_handle(*fh), - false); // left_pt is not on the face boundary. + // m_left_pt is not on the face boundary. + done = _zone_in_face(m_arr.non_const_handle(*fh), false); // In case we have just discovered an overlap, compute the overlapping // zone as well. - if (! done && found_overlap) - { - done = _zone_in_overlap (); - } + if (! done && m_found_overlap) done = _zone_in_overlap(); } // Compute the zone of the curve (or what is remaining of it) in the // arrangement, starting from the current position we have computed. - while (! done) - { + while (! done) { // Check if we know the face the curve is going to penetrate now. - if (left_he == invalid_he) - { - if (left_v != invalid_v) - { - // We know the vertex that coincides with the left endpoint of cv. - if (! left_v->is_isolated()) - { - // Locate the curve around the left_v vertex - that is, find a - // halfedge left_he such that cv should be placed between left_he - // and its current successor around the vertex, going in a clockwise - // order. - found_overlap = _find_prev_around_vertex (left_v, left_he); + if (m_left_he == m_invalid_he) { + if (m_left_v != m_invalid_v) { + // We know the vertex that coincides with the left endpoint of m_cv. + if (! m_left_v->is_isolated()) { + // Locate the curve around the m_left_v vertex - that is, find a + // halfedge m_left_he such that m_cv should be placed between + // m_left_he and its current successor around the vertex, going in a + // clockwise order. + m_found_overlap = _find_prev_around_vertex(m_left_v, m_left_he); } - else - { - // left_v is an isolated vertex. - found_iso_vert = true; + else { + // m_left_v is an isolated vertex. + m_found_iso_vert = true; } } - else - { - CGAL_assertion (right_he != invalid_he); + else { + CGAL_assertion(m_right_he != m_invalid_he); - // In this case right_he is the halfedge that the left portion of cv - // intersected, and we obtain left_he by comparing the remaining - // portion of cv with the curve associated with this edge. - left_he = _direct_intersecting_edge_to_right (cv, left_pt, right_he); + // In this case m_right_he is the halfedge that the left portion of m_cv + // intersected, and we obtain m_left_he by comparing the remaining + // portion of m_cv with the curve associated with this edge. + m_left_he = + _direct_intersecting_edge_to_right(m_cv, m_left_pt, m_right_he); } - if (found_overlap) - { - // In this case cv overlaps the curve associated with intersect_he. + if (m_found_overlap) { + // In this case m_cv overlaps the curve associated with m_intersect_he. // Compute the overlapping subcurve to the right of curr_v. - bool dummy; - obj = _compute_next_intersection (intersect_he, false, dummy); - - overlap_cv = object_cast (obj); + bool dummy; + m_obj = _compute_next_intersection(m_intersect_he, false, dummy); + m_overlap_cv = object_cast(m_obj); // Remove the overlap from the map. - _remove_next_intersection (intersect_he); + _remove_next_intersection(m_intersect_he); // Compute the overlap zone and continue to the end of the loop. - done = _zone_in_overlap (); + done = _zone_in_overlap(); continue; } } - if (left_v == invalid_v || ! left_v->is_isolated()) - { - // At this point we can compute the zone of cv starting from the left_he - // inside its incident face. - done = _zone_in_face (left_he->face(), true); - // left_pt is on the face boundary. + if ((m_left_v == m_invalid_v) || ! m_left_v->is_isolated()) { + // At this point we can compute the zone of m_cv starting from the + // m_left_he inside its incident face. + done = _zone_in_face(m_left_he->face(), true); + // m_left_pt is on the face boundary. } - else - { - // Compute the zone of cv starting from the face that contains the - // isolated vertex left_v. - done = _zone_in_face (left_v->face(), false); - // left_pt is not on the face boundary. + else { + // Compute the zone of m_cv starting from the face that contains the + // isolated vertex m_left_v. + done = _zone_in_face(m_left_v->face(), false); + // m_left_pt is not on the face boundary. } // In case we have just discovered an overlap, compute the overlapping // zone as well. - if (! done && found_overlap) - { - done = _zone_in_overlap(); - } + if (! done && m_found_overlap) done = _zone_in_overlap(); } // Clear the intersections map. - inter_map.clear(); - - return; + m_inter_map.clear(); } //----------------------------------------------------------------------------- -// Find a face containing the query curve cv around the given vertex. -// In case an overlap occurs, sets intersect_he to be the overlapping edge. +// Check whether two curves with a common min endpoint overlap. // -template -bool Arrangement_zone_2::_find_prev_around_vertex - (Vertex_handle v, - Halfedge_handle& he) +template +bool Arrangement_zone_2:: +do_overlap_impl(const X_monotone_curve_2& cv1, + const X_monotone_curve_2& cv2, + const Point_2& p, Arr_not_all_sides_oblivious_tag) const { - // Go over the incident halfedges of v, going in a clockwise order. - typename Arrangement_2::Halfedge_around_vertex_circulator he_first; - typename Arrangement_2::Halfedge_around_vertex_circulator he_curr; - bool cv_equals_curr; - typename Arrangement_2::Halfedge_around_vertex_circulator he_next; - bool cv_equals_next; - bool is_between; + typename Traits_adaptor_2::Compare_y_at_x_right_2 cmp_right = + m_geom_traits->compare_y_at_x_right_2_object(); - he_first = v->incident_halfedges(); - he_curr = he_first; - he_next = he_curr; - ++he_next; + Arr_parameter_space psx = + m_geom_traits->parameter_space_in_x_2_object()(cv1, ARR_MIN_END); + Arr_parameter_space psy = + m_geom_traits->parameter_space_in_y_2_object()(cv1, ARR_MIN_END); - if (he_curr == he_next) - { - // In case there is just a single incident halfedge around v, - // we should insert cv right after this halfedge. - he = he_curr; + if ((psx == ARR_INTERIOR) && (psy == ARR_INTERIOR)) + return (cmp_right(cv1, cv2, p) == EQUAL); - // Note that cv extends to the right of v. In case the single - // halfedge also extends to the right of v (its source is to - // the right), check if an overlap occurs. - if (he->direction() == ARR_RIGHT_TO_LEFT && - (m_geom_traits->compare_y_at_x_right_2_object() (he->curve(), cv, - v->point()) == EQUAL)) - { - // Mark that an overlap occurs: - intersect_he = he_curr; - return (true); - } + bool vertical1 = m_geom_traits->is_vertical_2_object()(cv1); + bool vertical2 = m_geom_traits->is_vertical_2_object()(cv2); + if (vertical1 != vertical2) return false; - // We have no overlap: - return (false); + if (psx == ARR_LEFT_BOUNDARY) { + // If both curves are vertical and their common min endpoint lies on the + // left boundary, they completely lie on the left boundary and they overlap. + if (vertical1) return true; + + typename Traits_adaptor_2::Compare_y_near_boundary_2 cmp_near = + m_geom_traits->compare_y_near_boundary_2_object(); + return (cmp_near(cv1, cv2, ARR_MIN_END) == EQUAL); } - // Find the face containing cv around the vertex. - typename Traits_adaptor_2::Is_between_cw_2 is_between_cw = + // If the common min endpoint lies on the right boundary, both curves are + // vertical, they completely lie on the right boundary, and they overlap. + if (psx == ARR_RIGHT_BOUNDARY) return true; + + // If the curves are not vertical, we can safly call the standard function. + // Observe that this case covers the case where (psy == ARR_TOP_BOUNDARY). + if (! vertical1) return (cmp_right(cv1, cv2, p) == EQUAL); + + CGAL_assertion(psy == ARR_BOTTOM_BOUNDARY); + // Observe, that if both curves are vertical and have a common min endpoint + // that lies on the bottom boundary, and the bottom boundary is contracted + // the curves do not necessarily overlap. + // In this case it is sufficient to test whether the x-coordinates on the + // boundary are equal. + typename Traits_adaptor_2::Compare_x_on_boundary_2 cmp_x_on_bd = + m_geom_traits->compare_x_on_boundary_2_object(); + typename Traits_adaptor_2::Compare_x_near_boundary_2 cmp_x_near_bd = + m_geom_traits->compare_x_near_boundary_2_object(); + Comparison_result res = cmp_x_on_bd(cv1, ARR_MIN_END, cv2, ARR_MIN_END); + if (res == EQUAL) res = cmp_x_near_bd(cv1, cv2, ARR_MIN_END); + return (res == EQUAL); +} + +//----------------------------------------------------------------------------- +// Check whether the given query curve is encountered when rotating the +// first curve in a clockwise direction around a given point until reaching +// the second curve. +template +bool Arrangement_zone_2:: +is_between_cw_impl(const X_monotone_curve_2& cv, bool cv_to_right, + const X_monotone_curve_2& cv1, bool cv1_to_right, + const X_monotone_curve_2& cv2, bool cv2_to_right, + const Point_2& p, + bool& cv_equal_cv1, bool& cv_equal_cv2, + Arr_not_all_sides_oblivious_tag) const +{ + cv_equal_cv1 = false; + cv_equal_cv2 = false; + + typename Traits_adaptor_2::Parameter_space_in_x_2 ps_in_x = + m_geom_traits->parameter_space_in_x_2_object(); + typename Traits_adaptor_2::Parameter_space_in_y_2 ps_in_y = + m_geom_traits->parameter_space_in_y_2_object(); + typename Traits_adaptor_2::Is_between_cw_2 is_bcw = m_geom_traits->is_between_cw_2_object(); - do - { + bool vertical = m_geom_traits->is_vertical_2_object()(cv); + bool vertical1 = m_geom_traits->is_vertical_2_object()(cv1); + bool vertical2 = m_geom_traits->is_vertical_2_object()(cv2); + + typename Traits_adaptor_2::Compare_x_on_boundary_2 cmp_x_on_bd = + m_geom_traits->compare_x_on_boundary_2_object(); + typename Traits_adaptor_2::Compare_x_near_boundary_2 cmp_x_near_bd = + m_geom_traits->compare_x_near_boundary_2_object(); + typename Traits_adaptor_2::Compare_y_near_boundary_2 cmp_y_near_bd = + m_geom_traits->compare_y_near_boundary_2_object(); + + //// + if (!cv1_to_right) { + Arr_parameter_space psx = ps_in_x(cv1, ARR_MAX_END); + Arr_parameter_space psy = ps_in_y(cv1, ARR_MAX_END); + if ((psx == ARR_INTERIOR) && (psy == ARR_INTERIOR)) + return is_bcw(cv, cv_to_right, cv1, cv1_to_right, cv2, cv2_to_right, + p, cv_equal_cv1, cv_equal_cv2); + + if (!cv2_to_right) { + // Case 1: Both cv1 and cv2 are defined to the left of p. + + CGAL_assertion(psx != ARR_RIGHT_BOUNDARY); + + if (psx == ARR_LEFT_BOUNDARY) { + // Case 1.1 The point resides on the right boundary. + CGAL_assertion(vertical); + + /* Case 1.1.1 cv1 is vertical + * o + * |cv + * cv2 | + * o-----o v + * | + * |cv1 + * o + */ + if (vertical1) return false; + + /* Case 1.1.2 cv2 is vertical, + * o + * |cv + * cv1 | + * o-----o v + * | + * |cv2 + * o + */ + if (vertical2) return true; + + /* Case 1.1.3 + * o o + * \ |cv + * \| + * o + * / + * / + * o + */ + return (cmp_y_near_bd(cv1, cv2, ARR_MAX_END) == LARGER); + } + + CGAL_assertion((psy == ARR_TOP_BOUNDARY) || (psy == ARR_BOTTOM_BOUNDARY)); + // Case 1.2 & 1.3 The point resides on the top or bottom boundaries + Comparison_result res = cmp_x_on_bd(cv1, ARR_MAX_END, cv2, ARR_MAX_END); + if (res == SMALLER) return (psy == ARR_TOP_BOUNDARY); + if (res == LARGER) return (psy != ARR_TOP_BOUNDARY); + + res = cmp_x_on_bd(cv1, ARR_MAX_END, cv2, ARR_MAX_END); + if (res == SMALLER) return (psy == ARR_TOP_BOUNDARY); + CGAL_assertion(res == LARGER); + return (psy != ARR_TOP_BOUNDARY); + } + + CGAL_assertion(!cv1_to_right && cv2_to_right); + /* Case 3: cv1 is defined to the left of p, and cv2 to its right. + * cv1 cv2 + * o-----o-----o + */ + if (psx == ARR_LEFT_BOUNDARY) { + /* Case 3.1 + * cv2 + * o-----o + * | + * |cv1 + * o + */ + CGAL_assertion(vertical1); + if (vertical) return true; + + Comparison_result res = cmp_y_near_bd(cv, cv2, ARR_MIN_END); + if (res == EQUAL) { + cv_equal_cv2 = true; + return false; + } + return (res == LARGER); + } + + if (psx == ARR_RIGHT_BOUNDARY) { + /* Case 3.2 + * o + * |cv2 + * cv1 | + * o-----o + */ + CGAL_assertion(vertical2); + CGAL_assertion(vertical); + cv_equal_cv2 = true; + return false; + } + + /* Case 3.3 & Case 4.4 + * o o o + * \ / cv1/ \cv2 + * \ / / \ + * cv1\ /cv2 / \ + * o o o + */ + Comparison_result res2 = cmp_x_on_bd(cv, ARR_MIN_END, cv2, ARR_MIN_END); + if (res2 == EQUAL) res2 = cmp_x_near_bd(cv, cv2, ARR_MIN_END); + if (res2 == SMALLER) return (psy == ARR_BOTTOM_BOUNDARY); + if (res2 == EQUAL) { + cv_equal_cv2 = true; + return false; + } + CGAL_assertion(res2 == LARGER); + return (psy == ARR_TOP_BOUNDARY); + } + + //////// + Arr_parameter_space psx = ps_in_x(cv1, ARR_MIN_END); + Arr_parameter_space psy = ps_in_y(cv1, ARR_MIN_END); + if ((psx == ARR_INTERIOR) && (psy == ARR_INTERIOR)) + return is_bcw(cv, cv_to_right, cv1, cv1_to_right, cv2, cv2_to_right, + p, cv_equal_cv1, cv_equal_cv2); + if (cv2_to_right) { + // Case 2: Both cv1 and cv2 are defined to the right of p. + CGAL_assertion(psx != ARR_RIGHT_BOUNDARY); + if (psx == ARR_LEFT_BOUNDARY) { + /* case 2.1.1 cv1 is vertical + * o + * |cv1 + * | + * o------o + * cv2 + */ + if (vertical1) { + if (vertical) { + cv_equal_cv1 = true; + return false; + } + + Comparison_result res = cmp_y_near_bd(cv, cv2, ARR_MIN_END); + if (res == EQUAL) { + cv_equal_cv2 = true; + return false; + } + return (res == LARGER); + } + + /* case 2.1.2 cv2 is vertical + * o + * |cv2 + * | + * o------o + * cv1 + */ + if (vertical2) { + if (vertical) { + cv_equal_cv2 = true; + return false; + } + + Comparison_result res = cmp_y_near_bd(cv, cv1, ARR_MIN_END); + if (res == EQUAL) { + cv_equal_cv1 = true; + return false; + } + return (res == SMALLER); + } + + // case 2.1.3 cv is vertical + if (vertical) { + Comparison_result res = cmp_y_near_bd(cv1, cv2, ARR_MIN_END); + return (res == LARGER); + } + + // case 2.1.4 none are vertical + Comparison_result res1 = cmp_y_near_bd(cv, cv1, ARR_MIN_END); + if (res1 == EQUAL) { + cv_equal_cv1 = true; + return false; + } + Comparison_result res2 = cmp_y_near_bd(cv, cv2, ARR_MIN_END); + if (res2 == EQUAL) { + cv_equal_cv2 = true; + return false; + } + Comparison_result res = cmp_y_near_bd(cv1, cv2, ARR_MIN_END); + + if ((res1 == LARGER) && (res2 == SMALLER)) return false; + if ((res1 == SMALLER) && (res2 == LARGER)) return true; + if ((res1 == LARGER) && (res2 == LARGER)) return (res == SMALLER); + CGAL_assertion((res1 == SMALLER) && (res2 == SMALLER)); + return (res == LARGER); + } + + CGAL_assertion((psy == ARR_TOP_BOUNDARY) || (psy == ARR_BOTTOM_BOUNDARY)); + // Case 2.2 & 2.3 The point resides on the top or bottom boundaries + Comparison_result res1 = cmp_x_on_bd(cv, ARR_MIN_END, cv1, ARR_MIN_END); + if (res1 == EQUAL) res1 = cmp_x_near_bd(cv, cv1, ARR_MIN_END); + Comparison_result res2 = cmp_x_on_bd(cv, ARR_MIN_END, cv2, ARR_MIN_END); + if (res2 == EQUAL) res2 = cmp_x_near_bd(cv, cv2, ARR_MIN_END); + Comparison_result res = cmp_x_on_bd(cv1, ARR_MIN_END, cv2, ARR_MIN_END); + if (res == EQUAL) res = cmp_x_near_bd(cv1, cv2, ARR_MIN_END); + + if (res1 == EQUAL) { + cv_equal_cv1 = true; + return false; + } + if (res2 == EQUAL) { + cv_equal_cv2 = true; + return false; + } + if ((res1 == LARGER) && (res2 == SMALLER)) return (psy != ARR_TOP_BOUNDARY); + if ((res1 == SMALLER) && (res2 == LARGER)) return (psy == ARR_TOP_BOUNDARY); + if ((res1 == LARGER) && (res2 == LARGER)) + return (res == SMALLER) ? + (psy == ARR_TOP_BOUNDARY) : (psy != ARR_TOP_BOUNDARY); + CGAL_assertion((res1 == SMALLER) && (res2 == SMALLER)); + return (res == LARGER) ? + (psy != ARR_TOP_BOUNDARY) : (psy == ARR_TOP_BOUNDARY); + } + + CGAL_assertion(cv1_to_right && ! cv2_to_right); + /* Case 4: cv1 is defined to the right of p, and cv2 to its left. + * cv2 cv1 + * o-----o-----o + */ + if (psx == ARR_LEFT_BOUNDARY) { + /* Case 4.1 + * cv1 + * o-----o + * | + * |cv2 + * o + */ + CGAL_assertion(vertical2); + if (vertical) return true; + + Comparison_result res = cmp_y_near_bd(cv, cv1, ARR_MIN_END); + if (res == EQUAL) { + cv_equal_cv1 = true; + return false; + } + return (res == SMALLER); + } + + if (psx == ARR_RIGHT_BOUNDARY) { + /* Case 4.2 + * o + * |cv1 + * cv2 | + * o-----o + */ + CGAL_assertion(vertical1); + CGAL_assertion(vertical); + cv_equal_cv1 = true; + return false; + } + + /* Case 4.3 & Case 4.4 + * o o o + * \ / cv2/ \cv1 + * \ / / \ + * cv2\ /cv1 / \ + * o o o + */ + Comparison_result res1 = cmp_x_on_bd(cv, ARR_MIN_END, cv1, ARR_MIN_END); + if (res1 == EQUAL) res1 = cmp_x_near_bd(cv, cv1, ARR_MIN_END); + if (res1 == LARGER) return (psy == ARR_TOP_BOUNDARY); + if (res1 == EQUAL) { + cv_equal_cv1 = true; + return false; + } + CGAL_assertion(res1 == SMALLER); + return (psy != ARR_TOP_BOUNDARY); +} + +//----------------------------------------------------------------------------- +// Find a face containing the query curve m_cv around the given vertex. +// In case an overlap occurs, sets m_intersect_he to be the overlapping edge. +// +template +bool Arrangement_zone_2:: +_find_prev_around_vertex(Vertex_handle v, Halfedge_handle& he) +{ + + // Go over the incident halfedges of v, going in a clockwise order. + typename Arrangement_2::Halfedge_around_vertex_circulator he_first = + v->incident_halfedges(); + typename Arrangement_2::Halfedge_around_vertex_circulator he_curr = he_first; + typename Arrangement_2::Halfedge_around_vertex_circulator he_next = he_curr; + ++he_next; + + if (he_curr == he_next) { + // In case there is just a single incident halfedge around v, + // we should insert m_cv right after this halfedge. + he = he_curr; + + // Note that m_cv extends to the right of v. + // If the single halfedge he extends to the left, there is no overlap. + if (he->direction() != ARR_RIGHT_TO_LEFT) return false; + + // Both extends to the right; check for an overlap. + if (! do_overlap(he->curve(), m_cv, v->point())) return false; + + // Mark that an overlap occurs: + m_intersect_he = he_curr; + return true; + } + + // Find the face containing m_cv around the vertex. + do { // Check if it is possible to insert cv in between the current curve // and the next curve, going in a clockwise direction around v. - is_between = is_between_cw (cv, true, - he_curr->curve(), - (he_curr->direction() == ARR_RIGHT_TO_LEFT), - he_next->curve(), - (he_next->direction() == ARR_RIGHT_TO_LEFT), - v->point(), - cv_equals_curr, cv_equals_next); + bool cv_equals_curr; + bool cv_equals_next; + bool is_between = is_between_cw(m_cv, true, + he_curr->curve(), + (he_curr->direction() == ARR_RIGHT_TO_LEFT), + he_next->curve(), + (he_next->direction() == ARR_RIGHT_TO_LEFT), + v->point(), + cv_equals_curr, cv_equals_next); // Check the case of overlaps: - if (cv_equals_curr) - { - // cv overlaps with the curve of he_curr: - intersect_he = he_curr; - return (true); + if (cv_equals_curr) { + // m_cv overlaps with the curve of he_curr: + m_intersect_he = he_curr; + return true; } - else if (cv_equals_next) - { - // cv overlaps with the curve of he_next: - intersect_he = he_next; - return (true); + else if (cv_equals_next) { + // m_cv overlaps with the curve of he_next: + m_intersect_he = he_next; + return true; } - if (is_between) - { - // We can conclude that cv should be placed between he_curr and + if (is_between) { + // We can conclude that m_cv should be placed between he_curr and // he_next (in a clockwise order), and no overlap occurs. he = he_curr; - return (false); + return false; } - // Proceed to the next halfedges around the vertex. - ++he_curr; + // Proceed to the next halfedge around the vertex. + he_curr = he_next; ++he_next; - } while (he_curr != he_first); - // We should never reach here: - CGAL_error(); - return (false); + CGAL_error(); // we should never reach here: + return false; } //----------------------------------------------------------------------------- @@ -377,50 +699,44 @@ bool Arrangement_zone_2::_find_prev_around_vertex // point that occurs in the interior of a given edge, when the subcurve lies // to the right of the split point. // -template -typename Arrangement_zone_2::Halfedge_handle -Arrangement_zone_2::_direct_intersecting_edge_to_right - (const X_monotone_curve_2& cv_ins, - const Point_2& cv_left_pt, - Halfedge_handle query_he) +template +typename Arrangement_zone_2::Halfedge_handle +Arrangement_zone_2:: +_direct_intersecting_edge_to_right(const X_monotone_curve_2& cv_ins, + const Point_2& cv_left_pt, + Halfedge_handle query_he) { // Make sure that the left endpoint of cv_ins lies on query_he. - CGAL_exactness_assertion (m_geom_traits->compare_y_at_x_2_object() - (cv_left_pt, query_he->curve()) == EQUAL); + CGAL_exactness_assertion(m_geom_traits->compare_y_at_x_2_object() + (cv_left_pt, query_he->curve()) == EQUAL); // Check whether the given halfedge is directed to the right. - const bool query_he_directed_right = - (query_he->direction() == ARR_LEFT_TO_RIGHT); + const bool query_he_directed_right = + (query_he->direction() == ARR_LEFT_TO_RIGHT); // Check whether the curve lies above of below the edge immediately to // the right of its left endpoint. const Comparison_result pos_res = - m_geom_traits->compare_y_at_x_right_2_object() (cv_ins, query_he->curve(), - cv_left_pt); + m_geom_traits->compare_y_at_x_right_2_object()(cv_ins, query_he->curve(), + cv_left_pt); - if (pos_res == SMALLER) - { - // If cv below the curve associated with query_he, the relevant halfedge + if (pos_res == SMALLER) { + // If m_cv below the curve associated with query_he, the relevant halfedge // is the one directed from right to left. - if (query_he_directed_right) - return (query_he->twin()); - else - return (query_he); + if (query_he_directed_right) return (query_he->twin()); + else return (query_he); } - else if (pos_res == LARGER) - { - // If cv below the curve associated with hh, the relevant halfedge + else if (pos_res == LARGER) { + // If m_cv below the curve associated with hh, the relevant halfedge // is the one directed from left to right. - if (query_he_directed_right) - return (query_he); - else - return (query_he->twin()); + if (query_he_directed_right) return (query_he); + else return (query_he->twin()); } // The two curves are equal to the right of the left endpoint, so we have // an overlap. - found_overlap = true; - intersect_he = query_he; + m_found_overlap = true; + m_intersect_he = query_he; return (query_he); } @@ -430,11 +746,11 @@ Arrangement_zone_2::_direct_intersecting_edge_to_right // point that occurs in the interior of a given edge, when the subcurve lies // to the left of the split point. // -template -typename Arrangement_zone_2::Halfedge_handle -Arrangement_zone_2:: -_direct_intersecting_edge_to_left (const X_monotone_curve_2& cv_ins, - Halfedge_handle query_he) +template +typename Arrangement_zone_2::Halfedge_handle +Arrangement_zone_2:: +_direct_intersecting_edge_to_left(const X_monotone_curve_2& cv_ins, + Halfedge_handle query_he) { // Make sure that the right endpoint of cv_ins lies on query_he. CGAL_exactness_assertion @@ -443,17 +759,16 @@ _direct_intersecting_edge_to_left (const X_monotone_curve_2& cv_ins, query_he->curve()) == EQUAL); // Check whether the given halfedge is directed to the right. - const bool query_he_directed_right = + const bool query_he_directed_right = (query_he->direction() == ARR_LEFT_TO_RIGHT); // Check whether the curve lies above of below the edge (we use the curve // position predicate, as we know they cruves do not overlap and intersect // only at the split point). Comparison_result pos_res = - m_geom_traits->compare_y_position_2_object() (cv_ins, query_he->curve()); + m_geom_traits->compare_y_position_2_object()(cv_ins, query_he->curve()); - if (pos_res == EQUAL) - { + if (pos_res == EQUAL) { // This can happen only when both endpoints of cv_ins lie on query_he, // for example (the ^-shaped polyline is associated with query_he and // the horizontal segment is cv_ins): @@ -469,119 +784,103 @@ _direct_intersecting_edge_to_left (const X_monotone_curve_2& cv_ins, // of cv_ins' left endpoint. pos_res = m_geom_traits->compare_y_at_x_right_2_object() (cv_ins, query_he->curve(), - m_geom_traits->construct_min_vertex_2_object() (cv_ins)); + m_geom_traits->construct_min_vertex_2_object()(cv_ins)); } - if (pos_res == SMALLER) - { + if (pos_res == SMALLER) { // If cv_ins lies below the curve associated with query_he, we should // take the halfedge directed from right to left, so if query_he is // directed to the right, we return it twin. - if (query_he_directed_right) - return (query_he->twin()); - else - return (query_he); + if (query_he_directed_right) return (query_he->twin()); + else return (query_he); } - else - { - CGAL_assertion (pos_res != EQUAL); + else { + CGAL_assertion(pos_res != EQUAL); // If cv_ins lies above the curve associated with query_he, we should // take the halfedge directed from left to right, so if query_he is // directed to the left, we return it twin. - if (! query_he_directed_right) - return (query_he->twin()); - else - return (query_he); + if (! query_he_directed_right) return (query_he->twin()); + else return (query_he); } } //----------------------------------------------------------------------------- // Get the next intersection of cv with the given halfedge. // -template +template CGAL::Object -Arrangement_zone_2:: -_compute_next_intersection (Halfedge_handle he, - bool skip_first_point, - bool& intersection_on_right_boundary) +Arrangement_zone_2:: +_compute_next_intersection(Halfedge_handle he, + bool skip_first_point, + bool& intersection_on_right_boundary) { // Get a pointer to the curve associated with the halfedge. - const X_monotone_curve_2 *p_curve = &(he->curve()); + const X_monotone_curve_2* p_curve = &(he->curve()); // Try to locate the intersections with this curve in the intersections map. - Intersect_map_iterator iter = inter_map.find (p_curve); - const Intersect_point_2 *ip; - const X_monotone_curve_2 *icv; - bool valid_intersection; + Intersect_map_iterator iter = m_inter_map.find(p_curve); + const Intersect_point_2* ip; + const X_monotone_curve_2* icv; + bool valid_intersection; intersection_on_right_boundary = false; - if (iter != inter_map.end()) - { + if (iter != m_inter_map.end()) { // The intersections with the curve have already been computed. // Retrieve the intersections list from the map. - Intersect_list& inter_list = iter->second; + Intersect_list& inter_list = iter->second; - if (inter_list.empty()) - return CGAL::Object(); + if (inter_list.empty()) return CGAL::Object(); - // Locate the first intersection that lies to the right of left_pt + // Locate the first intersection that lies to the right of m_left_pt // (if the left point exists). - while (! inter_list.empty()) - { - // Compare that current object with left_pt (if exists). - ip = object_cast (&(inter_list.front())); + while (! inter_list.empty()) { + // Compare that current object with m_left_pt (if exists). + ip = object_cast(&(inter_list.front())); - if (left_on_boundary) - { + if (m_left_on_boundary) { // The left end lie on the left boundary, so all intersections are // valid, as they lie to its right. valid_intersection = true; } - else if (ip != NULL) - { - if (has_right_pt && right_on_boundary && - m_geom_traits->equal_2_object() (ip->first, right_pt)) + else if (ip != NULL) { + if (m_has_right_pt && m_right_on_boundary && + m_geom_traits->equal_2_object()(ip->first, m_right_pt)) { valid_intersection = true; intersection_on_right_boundary = true; } - else - { + else { // We have a simple intersection point - make sure it lies to the - // right of left_pt. + // right of m_left_pt. valid_intersection = - (m_geom_traits->compare_xy_2_object() (ip->first, left_pt) == + (m_geom_traits->compare_xy_2_object()(ip->first, m_left_pt) == LARGER); } } - else - { + else { // We have an overlapping subcurve. - icv = object_cast (&(inter_list.front())); - CGAL_assertion (icv != NULL); + icv = object_cast(&(inter_list.front())); + CGAL_assertion(icv != NULL); - if (m_geom_traits->is_closed_2_object()(*icv, ARR_MIN_END)) - { + if (m_geom_traits->is_closed_2_object()(*icv, ARR_MIN_END)) { // The curve has a valid left point - make sure it lies to the - // right of left_pt. + // right of m_left_pt. valid_intersection = (m_geom_traits->compare_xy_2_object() - (m_geom_traits->construct_min_vertex_2_object()(*icv), left_pt) != + (m_geom_traits->construct_min_vertex_2_object()(*icv), m_left_pt) != SMALLER); } - else - { + else { // In this case the overlap is not valid. valid_intersection = false; } } - if (valid_intersection) - // Found an intersection to left_pt's right. - return (inter_list.front()); + // Found an intersection to m_left_pt's right. + if (valid_intersection) return (inter_list.front()); - // Discard the current intersection, which lies to left_pt's left. + // Discard the current intersection, which lies to m_left_pt's left. inter_list.pop_front(); } @@ -595,550 +894,353 @@ _compute_next_intersection (Halfedge_handle he, // curve is the one we insert. Even though the order seems unimportant, we // exploit this fact in some of the traits classes in order to optimize // computations. - Intersect_list inter_list; - bool is_first = true; + Intersect_list inter_list; + bool is_first = true; - m_geom_traits->intersect_2_object() (he->curve(), cv, - std::back_inserter(inter_list)); + m_geom_traits->intersect_2_object()(he->curve(), m_cv, + std::back_inserter(inter_list)); - // Discard all intersection lying to the left of left_pt (if exists). - while (! inter_list.empty()) - { - // Compare that current object with left_pt (if exists). - ip = object_cast (&(inter_list.front())); + // Discard all intersection lying to the left of m_left_pt (if exists). + while (! inter_list.empty()) { + // Compare that current object with m_left_pt (if exists). + ip = object_cast(&(inter_list.front())); - if (ip != NULL) - { + if (ip != NULL) { // We have a simple intersection point - if we don't have to skip it, - // make sure it lies to the right of left_pt (if left_pt is on the left - // boundary, all points lie to it right). - if (is_first && skip_first_point) - { - valid_intersection = false; - } - else if (left_on_boundary) - { - valid_intersection = true; - } - else if (has_right_pt && right_on_boundary && - m_geom_traits->equal_2_object() (ip->first, right_pt)) + // make sure it lies to the right of m_left_pt (if m_left_pt is on the + // left boundary, all points lie to it right). + if (is_first && skip_first_point) valid_intersection = false; + else if (m_left_on_boundary) valid_intersection = true; + else if (m_has_right_pt && m_right_on_boundary && + m_geom_traits->equal_2_object()(ip->first, m_right_pt)) { valid_intersection = true; intersection_on_right_boundary = true; } - else - { + else { valid_intersection = - (m_geom_traits->compare_xy_2_object() (ip->first, left_pt) == LARGER); + (m_geom_traits->compare_xy_2_object()(ip->first, m_left_pt) == LARGER); } } - else if (left_on_boundary) - { + else if (m_left_on_boundary) { // The left end is on the boundary, so all overlapping curves are valid, // as they lie to its right. valid_intersection = true; } - else - { + else { // We have an overlapping subcurve. - icv = object_cast (&(inter_list.front())); - CGAL_assertion (icv != NULL); + icv = object_cast(&(inter_list.front())); + CGAL_assertion(icv != NULL); - if (m_geom_traits->is_closed_2_object() (*icv, ARR_MIN_END)) - { + if (m_geom_traits->is_closed_2_object()(*icv, ARR_MIN_END)) { // The curve has a valid left point - make sure it lies to the - // right of left_pt. + // right of m_left_pt. valid_intersection = (m_geom_traits->compare_xy_2_object() - (m_geom_traits->construct_min_vertex_2_object()(*icv), - left_pt) != SMALLER); - } - else - { - // In this case the overlap is not valid. - valid_intersection = false; + (m_geom_traits->construct_min_vertex_2_object()(*icv), m_left_pt) != + SMALLER); } + // In this case the overlap is not valid. + else valid_intersection = false; } is_first = false; - if (valid_intersection) - // Found an intersection to left_pt's right. - break; + // Break, if an intersection to m_left_pt's right has been found. + if (valid_intersection) break; - // Discard the current intersection, which lies to left_pt's left. + // Discard the current intersection, which lies to m_left_pt's left. inter_list.pop_front(); } // Insert the list of valid intersections into the map. - inter_map[p_curve] = inter_list; + m_inter_map[p_curve] = inter_list; // Return the first intersection object computed (may be empty). - if (inter_list.empty()) - return CGAL::Object(); - else - return (inter_list.front()); + if (inter_list.empty()) return CGAL::Object(); + else return (inter_list.front()); } //----------------------------------------------------------------------------- -// Remove the next intersection of cv with the given halfedge from the map. +// Remove the next intersection of m_cv with the given halfedge from the map. // -template -void Arrangement_zone_2:: -_remove_next_intersection (Halfedge_handle he) +template +void Arrangement_zone_2:: +_remove_next_intersection(Halfedge_handle he) { // Get a pointer to the curve associated with the halfedge. - const X_monotone_curve_2 *p_curve = &(he->curve()); + const X_monotone_curve_2* p_curve = &(he->curve()); // Locate the intersections with this curve in the intersections map. - Intersect_map_iterator iter = inter_map.find (p_curve); + Intersect_map_iterator iter = m_inter_map.find(p_curve); - CGAL_assertion (iter != inter_map.end()); - CGAL_assertion (! iter->second.empty()); + CGAL_assertion(iter != m_inter_map.end()); + CGAL_assertion(! iter->second.empty()); // Remove the first object in the list of intersections. iter->second.pop_front(); - return; } //----------------------------------------------------------------------------- // Check if the given point lies completely to the left of the given egde. // -template -bool Arrangement_zone_2:: +template +bool Arrangement_zone_2:: _is_to_left_impl(const Point_2& p, Halfedge_handle he, Arr_not_all_sides_oblivious_tag) const { // Check the boundary conditions of the minimal end of the curve associated // with the given halfedge. - const Arr_parameter_space ps_x = - m_geom_traits->parameter_space_in_x_2_object() (he->curve(), ARR_MIN_END); + const Arr_parameter_space ps_x = + m_geom_traits->parameter_space_in_x_2_object()(he->curve(), ARR_MIN_END); - if (ps_x == ARR_LEFT_BOUNDARY) - // The minimal end of the curve is to the left of any other point: - return (false); + // The minimal end of the curve is to the left of any other point: + if (ps_x == ARR_LEFT_BOUNDARY) return false; - const Arr_parameter_space ps_y = - m_geom_traits->parameter_space_in_y_2_object() (he->curve(), ARR_MIN_END); + const Arr_parameter_space ps_y = + m_geom_traits->parameter_space_in_y_2_object()(he->curve(), ARR_MIN_END); if (ps_y != ARR_INTERIOR) { // Check if p is to the left of the minimal curve-end: - const Comparison_result res = - m_geom_traits->compare_x_point_curve_end_2_object() (p, he->curve(), - ARR_MIN_END); + const Comparison_result res = + m_geom_traits->compare_x_point_curve_end_2_object()(p, he->curve(), + ARR_MIN_END); return ((res == SMALLER) || (res == EQUAL && ps_y == ARR_TOP_BOUNDARY)); } // In case the minimal curve-end does not have boundary conditions, simply // compare p with the left endpoint of the curve. - Vertex_const_handle v_left = + Vertex_const_handle v_left = (he->direction() == ARR_LEFT_TO_RIGHT) ? he->source() : he->target(); - return (m_geom_traits->compare_xy_2_object() (p, v_left->point()) == SMALLER); + return (m_geom_traits->compare_xy_2_object()(p, v_left->point()) == SMALLER); } //----------------------------------------------------------------------------- // Check if the given point lies completely to the right of the given egde. // -template -bool Arrangement_zone_2:: +template +bool Arrangement_zone_2:: _is_to_right_impl(const Point_2& p, Halfedge_handle he, Arr_not_all_sides_oblivious_tag) const { // Check the boundary conditions of the maximal end of the curve associated // with the given halfedge. - const Arr_parameter_space ps_x = - m_geom_traits->parameter_space_in_x_2_object() (he->curve(), ARR_MAX_END); + const Arr_parameter_space ps_x = + m_geom_traits->parameter_space_in_x_2_object()(he->curve(), ARR_MAX_END); - if (ps_x == ARR_RIGHT_BOUNDARY) // The maximal end of the curve is to the right of any other point: - return (false); + if (ps_x == ARR_RIGHT_BOUNDARY) return false; - const Arr_parameter_space ps_y = - m_geom_traits->parameter_space_in_y_2_object() (he->curve(), ARR_MAX_END); + const Arr_parameter_space ps_y = + m_geom_traits->parameter_space_in_y_2_object()(he->curve(), ARR_MAX_END); if (ps_y != ARR_INTERIOR) { // Check if p is to the right of the maximal curve-end: const Comparison_result res = - m_geom_traits->compare_x_point_curve_end_2_object() (p, he->curve(), - ARR_MAX_END); + m_geom_traits->compare_x_point_curve_end_2_object()(p, he->curve(), + ARR_MAX_END); return ((res == LARGER) || (res == EQUAL && ps_y == ARR_BOTTOM_BOUNDARY)); } // In case the maximal curve-end does not have boundary conditions, simply // compare p with the right endpoint of the curve. - Vertex_const_handle v_right = + Vertex_const_handle v_right = (he->direction() == ARR_LEFT_TO_RIGHT) ? he->target() : he->source(); - return (m_geom_traits->compare_xy_2_object() (p, v_right->point()) == LARGER); + return (m_geom_traits->compare_xy_2_object()(p, v_right->point()) == LARGER); +} + +//----------------------------------------------------------------------------- +// Compute the (lexicographically) leftmost intersection of the query +// curve with a given halfedge on the boundary of a face in the arrangement. +template +void Arrangement_zone_2:: +_leftmost_intersection(Ccb_halfedge_circulator he_curr, bool on_boundary, + bool& leftmost_on_right_boundary) +{ + // Obtain some geometry-traits functors. + typename Traits_adaptor_2::Compare_xy_2 compare_xy = + m_geom_traits->compare_xy_2_object(); + typename Traits_adaptor_2::Is_in_x_range_2 is_in_x_range = + m_geom_traits->is_in_x_range_2_object(); + typename Traits_adaptor_2::Construct_min_vertex_2 min_vertex = + m_geom_traits->construct_min_vertex_2_object(); + + // If this edge is fictitious, skip it. + if (he_curr->is_fictitious()) return; + + // If we have already found an intersection with the twin halfedge, we do not + // have to compute intersections with the current halfedge. + if (m_found_intersect && (m_intersect_he == he_curr->twin())) return; + + // If we already have an intersection point, compare it to the endpoints of + // the curve associated with the current halfedge, in order to filter + // unnecessary intersection computations. If the current x-monotone curve lies + // entirely to the right of m_intersect_p, its intersection with m_cv (if any) + // cannot lie to the left of this point. We therefore do not need to compute + // this intersection. + if (m_found_intersect && ! leftmost_on_right_boundary && + _is_to_left(m_intersect_p, he_curr)) + return; + + bool left_equals_curr_endpoint = false; + if (on_boundary) { + // Check if the left endpoint of the inserted curve (which is located on the + // boundary of our face) equals one of the endpoints of the current + // halfedge. If it equals the right endpoint of the current halfedge, we can + // skip this edge, as there is no true overlap in the x-range. Otherwise, we + // keep track of the fact that m_left_v is the left end-vertex of the + // current halfedge. + if (he_curr->target() == m_left_v) { + left_equals_curr_endpoint = true; + if (he_curr->direction() == ARR_LEFT_TO_RIGHT) return; + } + else if (he_curr->source() == m_left_v) { + left_equals_curr_endpoint = true; + if (he_curr->direction() == ARR_RIGHT_TO_LEFT) return; + } + } + + // Check whether the two curves overlap in their x-range (in order + // to avoid unnecessary intersection computations). + // In case there is no overlap, the two x-monotone curves obviously + // do not intersect. + if (! left_equals_curr_endpoint && + ((! m_left_on_boundary && _is_to_right(m_left_pt, he_curr)) || + ! is_in_x_range(m_cv, he_curr->curve()))) + return; + + // Compute the next intersection of m_cv and the current halfedge. + bool intersection_on_right_boundary; + CGAL::Object iobj = + _compute_next_intersection(he_curr, left_equals_curr_endpoint, + intersection_on_right_boundary); + + if (! iobj.is_empty()) { + // We have found an intersection (either a simple point or an + // overlapping x-monotone curve). + const Intersect_point_2* int_p = object_cast(&iobj); + if (int_p != NULL) { + Point_2 ip = int_p->first; + + // Found a simple intersection point. Check if it is the leftmost + // intersection point so far. + if (! m_found_intersect || + (! intersection_on_right_boundary && + (leftmost_on_right_boundary || + compare_xy(ip, m_intersect_p) == SMALLER))) + { + // Store the leftmost intersection point and the halfedge handle. + m_intersect_p = ip; + m_ip_multiplicity = int_p->second; + m_intersect_he = he_curr; + m_found_overlap = false; + leftmost_on_right_boundary = intersection_on_right_boundary; + } + } + else { + // We have located an overlapping curve. Assign ip as its left + // endpoint. + const X_monotone_curve_2* icv = object_cast(&iobj); + CGAL_assertion(icv != NULL); + Point_2 ip = min_vertex(*icv); + + // Check if this endpoint it is the leftmost intersection point so far. + if (! m_found_intersect || compare_xy(ip, m_intersect_p) == SMALLER) { + // Store the leftmost intersection point and the halfedge handle. + m_intersect_p = ip; + m_ip_multiplicity = 0; + m_overlap_cv = *icv; + m_intersect_he = he_curr; + m_found_overlap = true; + } + } + + // Mark that we found an intersection. + m_found_intersect = true; + } } //----------------------------------------------------------------------------- // Compute the (lexicographically) leftmost intersection of the query // curve with the boundary of a given face in the arrangement. // -template -void Arrangement_zone_2:: - _leftmost_intersection_with_face_boundary (Face_handle face, - bool on_boundary) +template +void Arrangement_zone_2:: +_leftmost_intersection_with_face_boundary(Face_handle face, bool on_boundary) { // Mark that we have not found any intersection (or overlap) yet. - found_intersect = false; - found_overlap = false; - found_iso_vert = false; + m_found_intersect = false; + m_found_overlap = false; + m_found_iso_vert = false; // Obtain some geometry-traits functors. - typename Traits_adaptor_2::Compare_xy_2 compare_xy = + typename Traits_adaptor_2::Compare_xy_2 compare_xy = m_geom_traits->compare_xy_2_object(); - typename Traits_adaptor_2::Is_in_x_range_2 is_in_x_range = + typename Traits_adaptor_2::Is_in_x_range_2 is_in_x_range = m_geom_traits->is_in_x_range_2_object(); - typename Traits_adaptor_2::Construct_min_vertex_2 min_vertex = - m_geom_traits->construct_min_vertex_2_object(); - typename Traits_adaptor_2::Compare_y_at_x_2 compare_y_at_x = - m_geom_traits->compare_y_at_x_2_object(); - // Traverse the outer boundary of the face by going over all outer CCBs of - // the face. - typename Arrangement_2::Outer_ccb_iterator occb_it; - typename Arrangement_2::Ccb_halfedge_circulator he_first; - typename Arrangement_2::Ccb_halfedge_circulator he_curr; + bool leftmost_on_right_boundary = false; - CGAL::Object iobj; - const Intersect_point_2 *int_p; - const X_monotone_curve_2 *icv; - Point_2 ip; - bool left_equals_curr_endpoint; - bool intersection_on_right_boundary; - bool leftmost_on_right_boundary = false; - - for (occb_it = face->outer_ccbs_begin(); + // Traverse the face outer-boundaries; iterate through all outer CCBs. + typedef typename Arrangement_2::Outer_ccb_iterator Outer_ccb_iterator; + for (Outer_ccb_iterator occb_it = face->outer_ccbs_begin(); occb_it != face->outer_ccbs_end(); ++occb_it) { - // Get circulators for the boundary of the current outer component. - he_first = *occb_it; - he_curr = he_first; + Ccb_halfedge_circulator he_first = *occb_it; + Ccb_halfedge_circulator he_curr = he_first; + do _leftmost_intersection(he_curr, on_boundary, leftmost_on_right_boundary); + while (++he_curr != he_first); + } - do - { - // If this edge is fictitious, skip it. - if (he_curr->is_fictitious()) - { - ++he_curr; - continue; - } - - // If we have already found an intersection with the twin halfedge, - // we do not have to compute intersections with the current halfedge. - if (found_intersect && intersect_he == he_curr->twin()) - { - ++he_curr; - continue; - } - - // If we already have an intersection point, compare it to the - // endpoints of the curve associated with the current halfedge, - // in order to filter unnecessary intersection computations. - if (found_intersect && ! leftmost_on_right_boundary && - _is_to_left (intersect_p, he_curr)) - { - // The current x-monotone curve lies entirely to the right of - // ip_left, so its intersection with cv (if any) cannot lie to - // the left of this point. We therefore do not need to compute - // this intersection. - ++he_curr; - continue; - } - - left_equals_curr_endpoint = false; - if (on_boundary) - { - // Check if the left endpoint of the inserted curve (which is located - // on the boundary of our face) equals one of the endpoints of the - // current halfedge. If it equals the right endpoint of the current - // halfedge, we can skip this edge, as there is no true overlap in - // the x-range. Otherwise, we keep track of the fact that left_v is - // the left end-vertex of the current halfedge. - if (he_curr->target() == left_v) - { - left_equals_curr_endpoint = true; - - if (he_curr->direction() == ARR_LEFT_TO_RIGHT) - { - ++he_curr; - continue; - } - } - else if (he_curr->source() == left_v) - { - left_equals_curr_endpoint = true; - - if (he_curr->direction() == ARR_RIGHT_TO_LEFT) - { - ++he_curr; - continue; - } - } - } - - // Check whether the two curves overlap in their x-range (in order - // to avoid unnecessary intersection computations). - if (! left_equals_curr_endpoint && - ((! left_on_boundary && _is_to_right (left_pt, he_curr)) || - ! is_in_x_range (cv, he_curr->curve()))) - { - // In case there is no overlap, the two x-monotone curves obviously - // do not intersect. - ++he_curr; - continue; - } - - // Compute the next intersection of cv and the current halfedge. - iobj = _compute_next_intersection (he_curr, - left_equals_curr_endpoint, - intersection_on_right_boundary); - - if (! iobj.is_empty()) - { - // We have found an intersection (either a simple point or an - // overlapping x-monotone curve). - int_p = object_cast (&iobj); - if (int_p != NULL) - { - ip = int_p->first; - - // Found a simple intersection point. Check if it is the leftmost - // intersection point so far. - if (! found_intersect || - (! intersection_on_right_boundary && - (leftmost_on_right_boundary || - compare_xy (ip, intersect_p) == SMALLER))) - { - // Store the leftmost intersection point and the halfedge handle. - intersect_p = ip; - ip_mult = int_p->second; - intersect_he = he_curr; - found_overlap = false; - leftmost_on_right_boundary = intersection_on_right_boundary; - } - } - else - { - // We have located an overlapping curve. Assign ip as its left - // endpoint. - icv = object_cast (&iobj); - CGAL_assertion (icv != NULL); - - ip = min_vertex (*icv); - - // Check if this endpoint it is the leftmost intersection point so - // far. - if (! found_intersect || - compare_xy (ip, intersect_p) == SMALLER) - { - // Store the leftmost intersection point and the halfedge handle. - intersect_p = ip; - ip_mult = 0; - overlap_cv = *icv; - intersect_he = he_curr; - found_overlap = true; - } - } - - // Mark that we found an intersection. - found_intersect = true; - } - - // Move to the next edge along the outer boundary, - ++he_curr; - - } while (he_curr != he_first); // End loop on the current outer CCB. - - } // End: traversal of the outer CCBs of the face. - - // Traverse the inner boundary of the face by going over all inner CCBs - // (the holes) of the face. - typename Arrangement_2::Inner_ccb_iterator iccb_it; - - for (iccb_it = face->inner_ccbs_begin(); + // Traverse the face inner-boundaries; iterate through all inner CCBs (holes). + typedef typename Arrangement_2::Inner_ccb_iterator Inner_ccb_iterator; + for (Inner_ccb_iterator iccb_it = face->inner_ccbs_begin(); iccb_it != face->inner_ccbs_end(); ++iccb_it) { - // Get circulators for the boundary of the current inner component. - he_first = *iccb_it; - he_curr = he_first; + Ccb_halfedge_circulator he_first = *iccb_it; + Ccb_halfedge_circulator he_curr = he_first; + do _leftmost_intersection(he_curr, on_boundary, leftmost_on_right_boundary); + while (++he_curr != he_first); + } - do - { - // If we have already found an intersection with the twin halfedge, - // we do not have to compute intersections with the current halfedge. - if (found_intersect && intersect_he == he_curr->twin()) - { - ++he_curr; - continue; - } + typename Traits_adaptor_2::Compare_y_at_x_2 compare_y_at_x = + m_geom_traits->compare_y_at_x_2_object(); - // If we already have an intersection point, compare it to the - // endpoints of the curve associated with the current halfedge, - // in order to filter unnecessary intersection computations. - if (found_intersect && ! leftmost_on_right_boundary && - _is_to_left (intersect_p, he_curr)) - { - // The current x-monotone curve lies entirely to the right of - // ip_left, so its intersection with cv (if any) cannot lie to - // the left of this point. We therefore do not need to compute - // this intersection. - ++he_curr; - continue; - } - - left_equals_curr_endpoint = false; - if (on_boundary) - { - // Check if the left endpoint of the inserted curve (which is located - // on the boundary of our face) equals one of the endpoints of the - // current halfedge. If it equals the right endpoint of the current - // halfedge, we can skip this edge, as there is no true overlap in - // the x-range. Otherwise, we keep track of the fact that left_v is - // the left end-vertex of the current halfedge. - if (he_curr->target() == left_v) - { - left_equals_curr_endpoint = true; - - if (he_curr->direction() == ARR_LEFT_TO_RIGHT) - { - ++he_curr; - continue; - } - } - else if (he_curr->source() == left_v) - { - left_equals_curr_endpoint = true; - - if (he_curr->direction() == ARR_RIGHT_TO_LEFT) - { - ++he_curr; - continue; - } - } - } - - // Check whether the two curves overlap in their x-range (in order - // to avoid unnecessary intersection computations). - if (! left_equals_curr_endpoint && - ((! left_on_boundary && _is_to_right (left_pt, he_curr)) || - ! is_in_x_range (cv, he_curr->curve()))) - { - // In case there is no overlap, the two x-monotone curves obviously - // do not intersect. - ++he_curr; - continue; - } - - // Compute the next intersection of cv and the current halfedge. - iobj = _compute_next_intersection (he_curr, - left_equals_curr_endpoint, - intersection_on_right_boundary); - - if (! iobj.is_empty()) - { - // We have found an intersection (either a simple point or an - // overlapping x-monotone curve). - int_p = object_cast (&iobj); - if (int_p != NULL) - { - ip = int_p->first; - - // Found a simple intersection point. Check if it is the leftmost - // intersection point so far. - if (! found_intersect || - (! intersection_on_right_boundary && - (leftmost_on_right_boundary || - compare_xy (ip, intersect_p) == SMALLER))) - { - // Store the leftmost intersection point and the halfedge - // handle. - intersect_p = ip; - ip_mult = int_p->second; - intersect_he = he_curr; - found_overlap = false; - leftmost_on_right_boundary = intersection_on_right_boundary; - } - } - else - { - // We have located an overlapping curve. Assign ip as its left - // endpoint. - icv = object_cast (&iobj); - CGAL_assertion (icv != NULL); - - ip = min_vertex (*icv); - - // Check if this endpoint it is the leftmost intersection point - // so far. - if (! found_intersect || - compare_xy (ip, intersect_p) == SMALLER) - { - // Store the leftmost intersection point and the halfedge - // handle. - intersect_p = ip; - ip_mult = 0; - overlap_cv = *icv; - intersect_he = he_curr; - found_overlap = true; - } - } - - // Mark that we found an intersection. - found_intersect = true; - } - - // Move to the next edge along the outer boundary, - ++he_curr; - - } while (he_curr != he_first); // End loop on the current inner CCB. - - } // End: traversal of the inner CCBs of the face. - - // Go over the boundary of the isolated vertices inside the face (if there - // exist any), and check whether an isolated vertex lies on the curve. - typename Arrangement_2::Isolated_vertex_iterator iv_it; - - for (iv_it = face->isolated_vertices_begin(); + // Traverse the isolated vertices inside the face (if there exist any), and + // check whether an isolated vertex lies on the curve. + typedef typename Arrangement_2::Isolated_vertex_iterator + Isolated_vertex_iterator; + for (Isolated_vertex_iterator iv_it = face->isolated_vertices_begin(); iv_it != face->isolated_vertices_end(); ++iv_it) { // If the isolated vertex is not in the x-range of our curve, disregard it. - if (! is_in_x_range (cv, iv_it->point())) - continue; + if (! is_in_x_range(m_cv, iv_it->point())) continue; // If we already have an intersection point, compare it to the current // isolated vertex, in order to filter unnecessary computations. - if (found_intersect && - compare_xy (iv_it->point(), intersect_p) == LARGER) - { + if (m_found_intersect && compare_xy(iv_it->point(), m_intersect_p) == LARGER) continue; - } // In case the isolated vertex lies on the curve, update the intersection // point accordingly. - if (compare_y_at_x (iv_it->point(), cv) == EQUAL && - (! has_left_pt || - compare_xy (iv_it->point(), left_pt) == LARGER)) + if ((compare_y_at_x(iv_it->point(), m_cv) == EQUAL) && + (! m_has_left_pt || (compare_xy(iv_it->point(), m_left_pt) == LARGER))) { - intersect_v = iv_it; - intersect_p = intersect_v->point(); - ip_mult = 0; - found_intersect = true; - found_iso_vert = true; + m_intersect_v = iv_it; + m_intersect_p = m_intersect_v->point(); + m_ip_multiplicity = 0; + m_found_intersect = true; + m_found_iso_vert = true; } - } // End:: traversal of the isolated vertices inside the face. - // Remove the next intersection associated with intersect_he, as we have + // Remove the next intersection associated with m_intersect_he, as we have // now reported it and do not want to encounter it again. - if (found_intersect && !found_iso_vert) - _remove_next_intersection (intersect_he); - - return; + if (m_found_intersect && !m_found_iso_vert) + _remove_next_intersection(m_intersect_he); } //----------------------------------------------------------------------------- @@ -1146,141 +1248,131 @@ void Arrangement_zone_2:: // The left endpoint of the curve either lies in the face interior or on // the boundary of the face. // -template -bool Arrangement_zone_2:: -_zone_in_face (Face_handle face, bool on_boundary) +template +bool Arrangement_zone_2:: +_zone_in_face(Face_handle face, bool on_boundary) { - CGAL_precondition ((! on_boundary && - ((left_v == invalid_v && left_he == invalid_he) || - left_v->is_isolated())) || - (on_boundary && left_he != invalid_he)); + // Obtain some geometry-traits functors. + typename Traits_adaptor_2::Equal_2 equal = m_geom_traits->equal_2_object(); + + CGAL_precondition((! on_boundary && + (((m_left_v == m_invalid_v) && + (m_left_he == m_invalid_he)) || + m_left_v->is_isolated())) || + (on_boundary && (m_left_he != m_invalid_he))); // Find the first intersection of the curve with the face boundary. - _leftmost_intersection_with_face_boundary (face, on_boundary); + _leftmost_intersection_with_face_boundary(face, on_boundary); - if (! found_intersect) - { + if (! m_found_intersect) { // Notify the visitor that the entire curve lies within the given face, // such that its right endpoint is not incident to any arrangement feature. - visitor->found_subcurve (cv, face, left_v, left_he, invalid_v, invalid_he); + m_visitor->found_subcurve(m_cv, face, m_left_v, m_left_he, + m_invalid_v, m_invalid_he); // Inidicate that we are done with the zone-computation process. - return (true); + return true; } - // In this case found_intersect is true and intersect_he is the edge that - // cv next intersects (or overlaps). If found_overlap is also true, - // then overlap_cv is set and intersect_p is the left endpoint of the - // overlapping subcurve. Otherwise, intersect_p is a simple intersection + // In this case m_found_intersect is true and m_intersect_he is the edge that + // m_cv next intersects (or overlaps). If m_found_overlap is also true, + // then m_overlap_cv is set and m_intersect_p is the left endpoint of the + // overlapping subcurve. Otherwise, m_intersect_p is a simple intersection // point. - // Alternatively, if found_iso_vert is true, then the next intersection point - // intersect_p lies on the isolated vertex intersect_v. - bool done = false; + // Alternatively, if m_found_iso_vert is true, then the next intersection point + // m_intersect_p lies on the isolated vertex m_intersect_v. + bool done = false; - if (has_right_pt && - m_geom_traits->equal_2_object() (intersect_p, right_pt)) - { - // If the intersection point is cv's right endpoint, the interior of cv + if (m_has_right_pt && equal(m_intersect_p, m_right_pt)) { + // If the intersection point is m_cv's right endpoint, the interior of cv // does not intersect any existing halfedge. In this case, we only have - // to insert cv to the arrangement and we are done. - sub_cv1 = cv; + // to insert m_cv to the arrangement and we are done. + m_sub_cv1 = m_cv; done = true; } - else - { + else { // Split cv at the intersection point. - m_geom_traits->split_2_object() (cv, intersect_p, sub_cv1, sub_cv2); + m_geom_traits->split_2_object()(m_cv, m_intersect_p, m_sub_cv1, m_sub_cv2); - // Set cv to be the remaining portion. - has_left_pt = true; - left_on_boundary = false; - left_pt = intersect_p; - cv = sub_cv2; + // Set m_cv to be the remaining portion. + m_has_left_pt = true; + m_left_on_boundary = false; + m_left_pt = m_intersect_p; + m_cv = m_sub_cv2; } - const X_monotone_curve_2 *p_orig_curve = NULL; + const X_monotone_curve_2*p_orig_curve = NULL; - if (! found_iso_vert) - { - // Check whether intersect_p coincides with one of the end-vertices of the - // halfedge that cv intersects. - if (! intersect_he->source()->is_at_open_boundary() && - m_geom_traits->equal_2_object() (intersect_p, - intersect_he->source()->point())) + if (! m_found_iso_vert) { + // Check whether m_intersect_p coincides with one of the end-vertices of the + // halfedge that m_cv intersects. + if (! m_intersect_he->source()->is_at_open_boundary() && + equal(m_intersect_p, m_intersect_he->source()->point())) { - // We know that the right endpoint of sub_cv1 lies on the source vertex: - right_v = intersect_he->source(); - right_he = invalid_he; + // We know that the right endpoint of m_sub_cv1 lies on the source vertex: + m_right_v = m_intersect_he->source(); + m_right_he = m_invalid_he; } - else if (! intersect_he->target()->is_at_open_boundary() && - m_geom_traits->equal_2_object() (intersect_p, - intersect_he->target()->point())) + else if (! m_intersect_he->target()->is_at_open_boundary() && + equal(m_intersect_p, m_intersect_he->target()->point())) { - // We know that the right endpoint of sub_cv1 lies on the target vertex: - right_v = intersect_he->target(); - right_he = invalid_he; + // We know that the right endpoint of m_sub_cv1 lies on the target vertex: + m_right_v = m_intersect_he->target(); + m_right_he = m_invalid_he; } - else - { - // The right endpoint of sub_cv1 lies on the interior of intersect_he: + else { + // The right endpoint of m_sub_cv1 lies on the interior of m_intersect_he: // Obtain the halfedge with the correct direction (which should be the - // predecessor of sub_cv1 if we split the edge around this vertex). - right_v = invalid_v; - right_he = _direct_intersecting_edge_to_left (sub_cv1, intersect_he); + // predecessor of m_sub_cv1 if we split the edge around this vertex). + m_right_v = m_invalid_v; + m_right_he = _direct_intersecting_edge_to_left(m_sub_cv1, m_intersect_he); } // Store the curve currently associated with the intersecting halfedge. - p_orig_curve = &(intersect_he->curve()); + p_orig_curve = &(m_intersect_he->curve()); } - else - { + else { // The right endpoint of the subcurve coincides with an isolated vertex: - right_v = intersect_v; - right_he = invalid_he; + m_right_v = m_intersect_v; + m_right_he = m_invalid_he; } - // Notify the visitor that the left endpoint of the first subcurve is // located within the current face and both its endpoint are located // on its boundary. - Visitor_result visitor_res = visitor->found_subcurve (sub_cv1, face, - left_v, left_he, - right_v, right_he); + Visitor_result visitor_res = m_visitor->found_subcurve(m_sub_cv1, face, + m_left_v, m_left_he, + m_right_v, m_right_he); // Check if we are done (either we have no remaining curve or if the // visitor has indicated we should end the process). - if (done || visitor_res.second) - return (true); + if (done || visitor_res.second) return true; // Move to the remaining portion of the curve, whose left endpoint is the - // same as the right endpoint of sub_cv1. Note that we check if the visitor + // same as the right endpoint of m_sub_cv1. Note that we check if the visitor // has inserted the subcurve (in which case it should return a handle to // the resulting halfedge). - Halfedge_handle inserted_he = visitor_res.first; + Halfedge_handle inserted_he = visitor_res.first; - if (inserted_he != invalid_he) - { - if (right_v == invalid_v) - { + if (inserted_he != m_invalid_he) { + if (m_right_v == m_invalid_v) { // If the right endpoint of the subcurve we have just detected was // not associated with an existing vertex, the inserted halfedge is - // now targeted toward a newly created vertex that splits intersect_he + // now targeted toward a newly created vertex that splits m_intersect_he // into two halfedges: (a) the next halfedge after inserted_he and (b) // the previous halfedge before inserted_he's twin. // The two halfedges (a) and (b) are now associated with the two - // subcurves that result from splitting intersect_he->curve() at the + // subcurves that result from splitting m_intersect_he->curve() at the // intersection point we have just detected, one extends to the left // and one to the right of this split point. - const X_monotone_curve_2 *p_left_subcurve = NULL; - const X_monotone_curve_2 *p_right_subcurve = NULL; + const X_monotone_curve_2* p_left_subcurve = NULL; + const X_monotone_curve_2* p_right_subcurve = NULL; - if (inserted_he->next()->direction() == ARR_LEFT_TO_RIGHT) - { + if (inserted_he->next()->direction() == ARR_LEFT_TO_RIGHT) { // The next halfedge extends to the right of the split point: p_left_subcurve = &(inserted_he->twin()->prev()->curve()); p_right_subcurve = &(inserted_he->next()->curve()); } - else - { + else { // The next halfedge extends to the left of the split point: p_right_subcurve = &(inserted_he->twin()->prev()->curve()); p_left_subcurve = &(inserted_he->next()->curve()); @@ -1289,250 +1381,216 @@ _zone_in_face (Face_handle face, bool on_boundary) // Associate the intersection list of the original curve with the // right subcurve, while we can associate an empty list with the // left subcurve, as we are now done with it. - Intersect_map_iterator iter = inter_map.find (p_orig_curve); - Intersect_list empty_inter_list; + Intersect_map_iterator iter = m_inter_map.find(p_orig_curve); + Intersect_list empty_inter_list; - inter_map[p_right_subcurve] = iter->second; - inter_map[p_left_subcurve] = empty_inter_list; + m_inter_map[p_right_subcurve] = iter->second; + m_inter_map[p_left_subcurve] = empty_inter_list; // If necessary, erase the original curve from the intersection map. if (p_orig_curve != p_right_subcurve && p_orig_curve !=p_left_subcurve) - inter_map.erase (p_orig_curve); + m_inter_map.erase(p_orig_curve); } - if (found_overlap && right_v == invalid_v) - { - // In case we have split the overlapping intersect_he, it now refers + if (m_found_overlap && m_right_v == m_invalid_v) { + // In case we have split the overlapping m_intersect_he, it now refers // to the wrong halfedge. the overlapping edge is either the successor // of the inserted halfedge or the predecessor of its twin, depending // on which one of these halfedges lies to the right of the split point. if (inserted_he->next()->direction() == ARR_LEFT_TO_RIGHT) - { // The successor is directed to the right: - intersect_he = inserted_he->next(); - } - else - { + m_intersect_he = inserted_he->next(); + else { // The predecessor is directed to the left: - CGAL_assertion (inserted_he->twin()->prev()->direction() == - ARR_RIGHT_TO_LEFT); + CGAL_assertion(inserted_he->twin()->prev()->direction() == + ARR_RIGHT_TO_LEFT); - intersect_he = inserted_he->twin()->prev(); + m_intersect_he = inserted_he->twin()->prev(); } } - // The visitor has created an edge that corresponds to sub_cv1 and inserted - // it into the arrangement. In this case, left_pt should be associated - // with the target vertex of the new halfedge. - CGAL_assertion - (m_geom_traits->equal_2_object() (left_pt, - inserted_he->target()->point())); + // The visitor has created an edge that corresponds to m_sub_cv1 and + // inserted it into the arrangement. In this case, m_left_pt should be + // associated with the target vertex of the new halfedge. + CGAL_assertion(equal(m_left_pt, inserted_he->target()->point())); - left_v = inserted_he->target(); + m_left_v = inserted_he->target(); - // If right_he is known, it is possible to set left_he according to the + // If m_right_he is known, it is possible to set m_left_he according to the // geometric information we have. - if (right_he != invalid_he) - { - if ((ip_mult % 2) == 1) - { - // cv crosses right_he (which is now split into two), so the remaining - // portion must be inserted after the next halfedge going clockwise - // around left_v: + if (m_right_he != m_invalid_he) { + if ((m_ip_multiplicity % 2) == 1) { + // m_cv crosses m_right_he (which is now split into two), so the + // remaining portion must be inserted after the next halfedge going + // clockwise around m_left_v: // // \ . . - // \ . remaining portion of cv . + // \ . remaining portion of m_cv . // x . // inserted_he / \ . // / \ . - left_he = inserted_he->next()->twin(); + m_left_he = inserted_he->next()->twin(); } - else if (ip_mult != 0) - { - // We have a tangency point. If right_he is directed from left to - // right, we take the inserted halfedge to be left_he, otherwise - // right_he itself becomes left_he: - if (right_he->direction() == ARR_LEFT_TO_RIGHT) - left_he = inserted_he; - else - left_he = right_he; - } - else - { + else if (m_ip_multiplicity != 0) + // We have a tangency point. If m_right_he is directed from left to + // right, we take the inserted halfedge to be m_left_he, otherwise + // m_right_he itself becomes m_left_he: + m_left_he = (m_right_he->direction() == ARR_LEFT_TO_RIGHT) ? + inserted_he : m_right_he; + else { // Mutliplicity is unkown: - left_he = invalid_he; + m_left_he = m_invalid_he; } } - else - { - // In case left_v used to be an isolated vertex, we know that the + else { + // In case m_left_v used to be an isolated vertex, we know that the // inserted halfedge is its only incident halfedge and we can use it. - // Otherwise, we do not know the identity of left_he. - if (found_iso_vert) - left_he = inserted_he; - else - left_he = invalid_he; + // Otherwise, we do not know the identity of m_left_he. + m_left_he = (m_found_iso_vert) ? inserted_he : m_invalid_he; } } - else - { + else { // The visitor has not created a new edge. We proceed using the previously // computed arrangement features. - left_v = right_v; + m_left_v = m_right_v; - if (right_he != invalid_he) - { - // In case cv crosses the interior of the right_he halfedge (the + if (m_right_he != m_invalid_he) { + // In case m_cv crosses the interior of the m_right_he halfedge (the // multiplicity of the intersection is odd), we know that the ramaining // portion of the curve lies in the face incident to the twin halfedge. // If the multiplicity is known and is even, we stay with the same // halfedge. - if ((ip_mult % 2) == 1) - left_he = right_he->twin(); - else if (ip_mult != 0) - left_he = right_he; - else - left_he = invalid_he; - } - else - { - left_he = invalid_he; + if ((m_ip_multiplicity % 2) == 1) m_left_he = m_right_he->twin(); + else if (m_ip_multiplicity != 0) m_left_he = m_right_he; + else m_left_he = m_invalid_he; } + else m_left_he = m_invalid_he; } // We are not done with the zone-computation process yet: - return (false); + return false; } //----------------------------------------------------------------------------- -// Compute the zone of an overlapping subcurve overlap_cv of cv and the -// curve currently associated with intersect_he. +// Compute the zone of an overlapping subcurve m_overlap_cv of m_cv and the +// curve currently associated with m_intersect_he. // -template -bool Arrangement_zone_2::_zone_in_overlap () +template +bool Arrangement_zone_2::_zone_in_overlap() { - // Check if the right end of overlap_cv is bounded. If so, compute its - // right endpoint. - const bool cv_has_right_pt = - m_geom_traits->is_closed_2_object() (overlap_cv, ARR_MAX_END); + // Obtain some geometry-traits functors. + typename Traits_adaptor_2::Equal_2 equal = m_geom_traits->equal_2_object(); - Point_2 cv_right_pt; + // Check if the right end of m_overlap_cv is bounded. If so, compute its + // right endpoint. + const bool cv_has_right_pt = + m_geom_traits->is_closed_2_object()(m_overlap_cv, ARR_MAX_END); + + Point_2 cv_right_pt; if (cv_has_right_pt) - cv_right_pt = m_geom_traits->construct_max_vertex_2_object() (overlap_cv); + cv_right_pt = m_geom_traits->construct_max_vertex_2_object()(m_overlap_cv); - // Get right end-vertex of the overlapping halfedge intersect_he. Also make + // Get right end-vertex of the overlapping halfedge m_intersect_he. Also make // sure that the overlapping halfedge is always directed to the right. - Vertex_handle he_right_v; + Vertex_handle he_right_v; - if (intersect_he->direction() == ARR_LEFT_TO_RIGHT) - { - he_right_v = intersect_he->target(); + if (m_intersect_he->direction() == ARR_LEFT_TO_RIGHT) { + he_right_v = m_intersect_he->target(); } - else - { - he_right_v = intersect_he->source(); - intersect_he = intersect_he->twin(); + else { + he_right_v = m_intersect_he->source(); + m_intersect_he = m_intersect_he->twin(); } - // Compare the two right endpoints. Note that overlap_cv cannot extend to - // the right longer than the halfedge it overlaps. Thus, if the curve is - // not bounded, the right vertex of intersect_he must lie on open boundary as + // Compare the two right endpoints. Note that m_overlap_cv cannot extend to + // the right longer than the halfedge it overlaps. Thus, if the curve is not + // bounded, the right vertex of m_intersect_he must lie on open boundary as // well. - if (! cv_has_right_pt) - { + if (! cv_has_right_pt) { CGAL_assertion_code - (const Arr_parameter_space cv_ps_x = - m_geom_traits->parameter_space_in_x_2_object() (overlap_cv, ARR_MAX_END); - const Arr_parameter_space cv_ps_y = - m_geom_traits->parameter_space_in_y_2_object() (overlap_cv, ARR_MAX_END); + (const Arr_parameter_space cv_ps_x = + m_geom_traits->parameter_space_in_x_2_object()(m_overlap_cv, ARR_MAX_END); + const Arr_parameter_space cv_ps_y = + m_geom_traits->parameter_space_in_y_2_object()(m_overlap_cv, ARR_MAX_END); ); - CGAL_assertion (he_right_v->parameter_space_in_x() == cv_ps_x && - he_right_v->parameter_space_in_y() == cv_ps_y); + CGAL_assertion(he_right_v->parameter_space_in_x() == cv_ps_x && + he_right_v->parameter_space_in_y() == cv_ps_y); - right_v = he_right_v; + m_right_v = he_right_v; } - else - { - // In this case overlap_cv has a finite right endpoint. In this case, - // if the right vertex of intersect_he is associated with a finite point, + else { + // In this case m_overlap_cv has a finite right endpoint. In this case, + // if the right vertex of m_intersect_he is associated with a finite point, // we check whether it is equal to cv_right_pt. Otherwise, we know that - // intersect_he extends to the the right of overlap_cv, and there is no - // vertex currently associated with overlap_cv's right endpoint. + // m_intersect_he extends to the the right of m_overlap_cv, and there is no + // vertex currently associated with m_overlap_cv's right endpoint. if (! he_right_v->is_at_open_boundary() && - m_geom_traits->equal_2_object() (cv_right_pt, he_right_v->point())) + equal(cv_right_pt, he_right_v->point())) { // The overlap is with the entire halfedge. In this case we set the // right end-vertex of the overlapping zone. - right_v = he_right_v; + m_right_v = he_right_v; } - else - { - // In this case intersect_he overlaps just a portion of prev_he. + else { + // In this case m_intersect_he overlaps just a portion of prev_he. // The right end-vertex of the overlapping zone is not known. - right_v = invalid_v; + m_right_v = m_invalid_v; } } // Store the curve currently associated with the overlapping halfedge. - const X_monotone_curve_2 *p_orig_curve = &(intersect_he->curve()); + const X_monotone_curve_2* p_orig_curve = &(m_intersect_he->curve()); // Notify the visitor on the overlapping zone. - Visitor_result visitor_res = visitor->found_overlap (overlap_cv, - intersect_he, - left_v, right_v); + Visitor_result visitor_res = + m_visitor->found_overlap(m_overlap_cv, m_intersect_he, m_left_v, m_right_v); // If the visitor has indicated we should halt the process, or it the right - // endpoint of the overlapping curve is the right endpoint of cv then we are + // endpoint of the overlapping curve is the right endpoint of m_cv then we are // done (or both extend to an open boundary). if (visitor_res.second || - (cv_has_right_pt && has_right_pt && - m_geom_traits->equal_2_object() (cv_right_pt, right_pt)) || - (! cv_has_right_pt && ! has_right_pt)) + (cv_has_right_pt && m_has_right_pt && equal(cv_right_pt, m_right_pt)) || + (! cv_has_right_pt && ! m_has_right_pt)) { - return (true); + return true; } // Erase the original curve from the intersection map, so we will have to // recompute intersections with it in the future. - inter_map.erase (p_orig_curve); + m_inter_map.erase(p_orig_curve); // Mark that we have dealt with the overlap. - found_overlap = false; + m_found_overlap = false; - // Split cv at right endpoint of the overlapping curve. - m_geom_traits->split_2_object() (cv, cv_right_pt, sub_cv1, sub_cv2); + // Split m_cv at right endpoint of the overlapping curve. + m_geom_traits->split_2_object()(m_cv, cv_right_pt, m_sub_cv1, m_sub_cv2); - // Set cv to be the remaining portion. - has_left_pt = true; - left_on_boundary = false; - left_pt = cv_right_pt; - cv = sub_cv2; + // Set m_cv to be the remaining portion. + m_has_left_pt = true; + m_left_on_boundary = false; + m_left_pt = cv_right_pt; + m_cv = m_sub_cv2; // Move to the remaining portion of the curve, whose left endpoint is the // same as the right endpoint of the overlapping curve. Note that we check // if the visitor has inserted the subcurve (in which case it should return // a handle to the resulting halfedge). - Halfedge_handle updated_he = visitor_res.first; + Halfedge_handle updated_he = visitor_res.first; - if (updated_he != invalid_he) - { - // In this case, left_pt should be associated with the target vertex of + if (updated_he != m_invalid_he) { + // In this case, m_left_pt should be associated with the target vertex of // the updated halfedge. - CGAL_assertion - (m_geom_traits->equal_2_object() (left_pt, updated_he->target()->point())); - - left_v = updated_he->target(); - } - else - { - left_v = right_v; - } + CGAL_assertion(equal(m_left_pt, updated_he->target()->point())); - left_he = invalid_he; + m_left_v = updated_he->target(); + } + else m_left_v = m_right_v; + + m_left_he = m_invalid_he; // We are not done with the zone-computation process yet: - return (false); + return false; } } //namespace CGAL diff --git a/Arrangement_on_surface_2/include/CGAL/Arrangement_zone_2.h b/Arrangement_on_surface_2/include/CGAL/Arrangement_zone_2.h index c84efe2068c..4dfb2d7964b 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arrangement_zone_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Arrangement_zone_2.h @@ -15,11 +15,11 @@ // $URL$ // $Id$ // SPDX-License-Identifier: GPL-3.0+ -// // -// Author(s) : Ron Wein -// Efi Fogel -// (based on old version by Eyal Flato) +// +// Author(s): Ron Wein +// Efi Fogel +// (based on old version by Eyal Flato) #ifndef CGAL_ARRANGEMENT_ZONE_2_H #define CGAL_ARRANGEMENT_ZONE_2_H @@ -61,17 +61,14 @@ namespace CGAL { * by the visitor (if valid), and the Boolean value indicates whether we * should halt the zone-computation process. */ -template -class Arrangement_zone_2 -{ +template +class Arrangement_zone_2 { public: - typedef Arrangement_ Arrangement_2; typedef typename Arrangement_2::Geometry_traits_2 Geometry_traits_2; typedef typename Arrangement_2::Topology_traits Topology_traits; protected: - typedef Arr_traits_adaptor_2 Traits_adaptor_2; typedef typename Traits_adaptor_2::Left_side_category Left_side_category; @@ -79,14 +76,13 @@ protected: typedef typename Traits_adaptor_2::Top_side_category Top_side_category; typedef typename Traits_adaptor_2::Right_side_category Right_side_category; - BOOST_MPL_ASSERT( - (typename - Arr_sane_identified_tagging< Left_side_category, Bottom_side_category, - Top_side_category, Right_side_category >::result) - ); + BOOST_MPL_ASSERT + ((typename Arr_sane_identified_tagging::result)); public: - typedef ZoneVisitor_ Visitor; typedef typename Arrangement_2::Vertex_handle Vertex_handle; @@ -100,194 +96,260 @@ public: typedef typename Geometry_traits_2::Multiplicity Multiplicity; protected: - - typedef typename Arr_are_all_sides_oblivious_tag< - Left_side_category, Bottom_side_category, - Top_side_category, Right_side_category >::result + typedef typename Arr_are_all_sides_oblivious_tag::result Are_all_sides_oblivious_category; - + typedef typename Arrangement_2::Vertex_const_handle Vertex_const_handle; typedef typename Arrangement_2::Halfedge_const_handle Halfedge_const_handle; typedef typename Arrangement_2::Face_const_handle Face_const_handle; - // Types used for caching intersection points: - typedef std::pair Intersect_point_2; - typedef std::list Intersect_list; - typedef std::map Intersect_map; - typedef typename Intersect_map::iterator Intersect_map_iterator; + typedef typename Arrangement_2::Ccb_halfedge_circulator + Ccb_halfedge_circulator; - typedef std::set Curves_set; - typedef typename Curves_set::iterator Curves_set_iterator; + // Types used for caching intersection points: + typedef std::pair Intersect_point_2; + typedef std::list Intersect_list; + typedef std::map + Intersect_map; + typedef typename Intersect_map::iterator Intersect_map_iterator; + + typedef std::set Curves_set; + typedef typename Curves_set::iterator Curves_set_iterator; // Data members: - Arrangement_2& arr; // The associated arrangement. - const Traits_adaptor_2 * m_geom_traits; // Its associated geometry traits. - Arr_accessor arr_access; // An accessor for the arrangement. - - Visitor *visitor; // The zone visitor. + Arrangement_2& m_arr; // The associated arrangement. + const Traits_adaptor_2* m_geom_traits; // Its associated geometry traits. + Arr_accessor m_arr_access; // An accessor for the arrangement. - Intersect_map inter_map; // Stores all computed intersections. + Visitor* m_visitor; // The zone visitor. - const Vertex_handle invalid_v; // An invalid vertex handle. - const Halfedge_handle invalid_he; // An invalid halfedge handle. + Intersect_map m_inter_map; // Stores all computed intersections. - X_monotone_curve_2 cv; // The current portion of the + const Vertex_handle m_invalid_v; // An invalid vertex handle. + const Halfedge_handle m_invalid_he; // An invalid halfedge handle. + + X_monotone_curve_2 m_cv; // The current portion of the // inserted curve. - CGAL::Object obj; // The location of the left endpoint. - bool has_left_pt; // Is the left end of the curve - // bounded. - bool left_on_boundary; // Is the left point on the boundary. - Point_2 left_pt; // Its current left endpoint. - bool has_right_pt; // Is the right end of the curve - // bounded. - bool right_on_boundary;// Is the right point on the boundary. - Point_2 right_pt; // Its right endpoint (if bounded). + CGAL::Object m_obj; // The location of the left endpoint. + bool m_has_left_pt; // Is the left end of the curve bounded. + bool m_left_on_boundary; // Is the left point on the boundary. + Point_2 m_left_pt; // Its current left endpoint. + bool m_has_right_pt; // Is the right end of the curve bounded. + bool m_right_on_boundary; // Is the right point on the boundary. + Point_2 m_right_pt; // Its right endpoint (if bounded). - Vertex_handle left_v; // The arrangement vertex associated + Vertex_handle m_left_v; // The arrangement vertex associated // with the current left_pt (if any). - Halfedge_handle left_he; // If left_v is valid, left_he is the + Halfedge_handle m_left_he; // If left_v is valid, left_he is the // predecessor for cv around this // vertex. Otherwise, if it is valid, // it is the halfedge that contains // the left endpoint it its interior. - Vertex_handle right_v; // The arrangement vertex associated - // with the current right_pt (if any). - Halfedge_handle right_he; // If right_v is valid, left_he is the + Vertex_handle m_right_v; // The arrangement vertex associated + // with the current m_right_pt (if any). + Halfedge_handle m_right_he; // If m_right_v is valid, left_he is the // predecessor for cv around this // vertex. Otherwise, if it is valid, // it is the halfedge that contains // the right endpoint it its interior. - Point_2 intersect_p; // The next intersection point. - unsigned int ip_mult; // Its multiplicity + Point_2 m_intersect_p; // The next intersection point. + unsigned int m_ip_multiplicity; // Its multiplicity // (0 in case of an overlap). - bool found_intersect; // Have we found an intersection + bool m_found_intersect; // An intersection has been found. // (or an overlap). - X_monotone_curve_2 overlap_cv; // The currently discovered overlap. - bool found_overlap; // Have we found an overlap. - bool found_iso_vert; // Check if an isolated vertex induces - // the next intersection. - Vertex_handle intersect_v; // The vertex that intersects cv. - Halfedge_handle intersect_he; // The halfedge that intersects cv + X_monotone_curve_2 m_overlap_cv; // The currently discovered overlap. + bool m_found_overlap; // An overlap has been found. + bool m_found_iso_vert; // Check whether an isolated vertex + // induces the next intersection. + Vertex_handle m_intersect_v; // The vertex that intersects cv. + Halfedge_handle m_intersect_he; // The halfedge that intersects cv // (or overlaps it). - X_monotone_curve_2 sub_cv1; // Auxiliary variable (for curve split). - X_monotone_curve_2 sub_cv2; // Auxiliary variable (for curve split). + X_monotone_curve_2 m_sub_cv1; // Auxiliary variable (for curve split). + X_monotone_curve_2 m_sub_cv2; // Auxiliary variable (for curve split). public: - - /*! - * Constructor. + /*! Constructor. * \param _arr The arrangement for which we compute the zone. * \param _visitor A pointer to a zone-visitor object. */ - Arrangement_zone_2 (Arrangement_2& _arr, Visitor *_visitor) : - arr (_arr), - arr_access (_arr), - visitor (_visitor), - invalid_v (), - invalid_he () + Arrangement_zone_2(Arrangement_2& arr, Visitor* visitor) : + m_arr(arr), + m_arr_access(arr), + m_visitor(visitor), + m_invalid_v(), + m_invalid_he() { - m_geom_traits = static_cast (arr.geometry_traits()); - - CGAL_assertion (visitor != NULL); + m_geom_traits = static_cast(arr.geometry_traits()); + CGAL_assertion(visitor != NULL); // Initialize the visitor. - visitor->init (&arr); + visitor->init(&arr); } - /*! - * Initialize the zone-computation process with a given curve. + /*! Initialize the zone-computation process with a given curve. * \param _cv The query curve. * \param pl A point-location object associated with the arrangement. */ - template - void init (const X_monotone_curve_2& _cv, const PointLocation& pl) + template + void init(const X_monotone_curve_2& cv, const PointLocation& pl) { // Set the curve and check whether its left end has boundary conditions. - cv = _cv; + m_cv = cv; - const Arr_parameter_space bx1 = - m_geom_traits->parameter_space_in_x_2_object()(cv, ARR_MIN_END); - const Arr_parameter_space by1 = - m_geom_traits->parameter_space_in_y_2_object()(cv, ARR_MIN_END); + const Arr_parameter_space bx1 = + m_geom_traits->parameter_space_in_x_2_object()(m_cv, ARR_MIN_END); + const Arr_parameter_space by1 = + m_geom_traits->parameter_space_in_y_2_object()(m_cv, ARR_MIN_END); if (bx1 == ARR_INTERIOR && by1 == ARR_INTERIOR) { // The curve has a finite left endpoint with no boundary conditions: // locate it in the arrangement. - has_left_pt = true; - left_on_boundary = (bx1 != ARR_INTERIOR || by1 != ARR_INTERIOR); - left_pt = m_geom_traits->construct_min_vertex_2_object() (cv); + m_has_left_pt = true; + m_left_on_boundary = (bx1 != ARR_INTERIOR || by1 != ARR_INTERIOR); + m_left_pt = m_geom_traits->construct_min_vertex_2_object()(m_cv); - obj = pl.locate (left_pt); + m_obj = pl.locate(m_left_pt); } else { // The left end of the curve has boundary conditions: use the topology // traits use the arrangement accessor to locate it. - // Note that if the curve-end is unbounded, left_pt does not exist. - // Note that if the curve-end is unbounded, left_pt does not exist. - has_left_pt = m_geom_traits->is_closed_2_object()(cv, ARR_MIN_END); - left_on_boundary = true; - if (has_left_pt) - left_pt = m_geom_traits->construct_min_vertex_2_object() (cv); - obj = arr_access.locate_curve_end (cv, ARR_MIN_END, bx1, by1); + // Note that if the curve-end is unbounded, m_left_pt does not exist. + // Note that if the curve-end is unbounded, m_left_pt does not exist. + m_has_left_pt = m_geom_traits->is_closed_2_object()(m_cv, ARR_MIN_END); + m_left_on_boundary = true; + if (m_has_left_pt) + m_left_pt = m_geom_traits->construct_min_vertex_2_object()(m_cv); + m_obj = m_arr_access.locate_curve_end(m_cv, ARR_MIN_END, bx1, by1); } // Check the boundary conditions of th right curve end. - if (m_geom_traits->is_closed_2_object()(cv, ARR_MAX_END)) { - const Arr_parameter_space bx2 = - m_geom_traits->parameter_space_in_x_2_object()(cv, ARR_MAX_END); - const Arr_parameter_space by2 = - m_geom_traits->parameter_space_in_y_2_object()(cv, ARR_MAX_END); + if (m_geom_traits->is_closed_2_object()(m_cv, ARR_MAX_END)) { + const Arr_parameter_space bx2 = + m_geom_traits->parameter_space_in_x_2_object()(m_cv, ARR_MAX_END); + const Arr_parameter_space by2 = + m_geom_traits->parameter_space_in_y_2_object()(m_cv, ARR_MAX_END); // The right endpoint is valid. - has_right_pt = true; - right_pt = m_geom_traits->construct_max_vertex_2_object() (cv); - right_on_boundary = (bx2 != ARR_INTERIOR) || (by2 != ARR_INTERIOR); + m_has_right_pt = true; + m_right_pt = m_geom_traits->construct_max_vertex_2_object()(m_cv); + m_right_on_boundary = (bx2 != ARR_INTERIOR) || (by2 != ARR_INTERIOR); } else { // The right end of the curve lies at infinity. - has_right_pt = false; - right_on_boundary = true; + m_has_right_pt = false; + m_right_on_boundary = true; } - - return; } - /*! - * Initialize the zone-computation process with a given curve and an object + /*! Initialize the zone-computation process with a given curve and an object * that wraps the location of the curve's left end. - * \param _cv The query curve. - * \param _obj An object that represents the location of the left end - * of the curve. + * \param cv The query curve. + * \param obj An object that represents the location of the left end of the + * curve. */ - void init_with_hint (const X_monotone_curve_2& _cv, const Object& _obj); + void init_with_hint(const X_monotone_curve_2& cv, const Object& obj); - /*! - * Compute the zone of the given curve and issue the apporpriate + /*! Compute the zone of the given curve and issue the apporpriate * notifications for the visitor. */ - void compute_zone (); + void compute_zone(); private: + /*! Check whether two curves with a common endpoint overlap. + * \pre p == min_point(cv1) + * \pre p == min_point(cv2) + * \todo move this function to a more accessible place so that it can be reused + */ + bool do_overlap(const X_monotone_curve_2& cv1, const X_monotone_curve_2& cv2, + const Point_2& p) const + { return do_overlap_impl(cv1, cv2, p, Are_all_sides_oblivious_category()); } - /*! - * Find a face containing the query curve cv around the given vertex. - * In case an overlap occurs, sets intersect_he to be the overlapping edge. + /*! Check whether two curves with a common min endpoint overlap. + */ + bool do_overlap_impl(const X_monotone_curve_2& cv1, + const X_monotone_curve_2& cv2, + const Point_2& p, Arr_all_sides_oblivious_tag) const + { + return m_geom_traits->compare_y_at_x_right_2_object()(cv1, cv2, p) == EQUAL; + } + + /*! Check whether two curves with a common min endpoint overlap. + */ + bool do_overlap_impl(const X_monotone_curve_2& cv1, + const X_monotone_curve_2& cv2, + const Point_2& p, Arr_not_all_sides_oblivious_tag) const; + + /* Check whether the given query curve is encountered when rotating the + * first curve in a clockwise direction around a given point until reaching + * the second curve. + * \pre p == min_point(xcv) + * \pre p == min_point(xcv1) + * \pre p == min_point(cxv2) + * \pre xcv_to_right == TRUE + * \todo move this function to a more accessible place so that it can be reused + */ + bool is_between_cw(const X_monotone_curve_2& xcv, bool xcv_to_right, + const X_monotone_curve_2& xcv1, bool xcv1_to_right, + const X_monotone_curve_2& xcv2, bool xcv2_to_right, + const Point_2& p, + bool& xcv_equal_xcv1, bool& xcv_equal_xcv2) const + { + return is_between_cw_impl(xcv, xcv_to_right, + xcv1, xcv1_to_right, + xcv2, xcv2_to_right, + p, xcv_equal_xcv1, xcv_equal_xcv2, + Are_all_sides_oblivious_category()); + } + + /* Check whether the given query curve is encountered when rotating the + * first curve in a clockwise direction around a given point until reaching + * the second curve. + */ + bool is_between_cw_impl(const X_monotone_curve_2& xcv, bool xcv_to_right, + const X_monotone_curve_2& xcv1, bool xcv1_to_right, + const X_monotone_curve_2& xcv2, bool xcv2_to_right, + const Point_2& p, + bool& xcv_equal_xcv1, bool& xcv_equal_xcv2, + Arr_all_sides_oblivious_tag) const + { + return m_geom_traits->is_between_cw_2_object()(xcv, xcv_to_right, + xcv1, xcv1_to_right, + xcv2, xcv2_to_right, + p, + xcv_equal_xcv1, + xcv_equal_xcv2); + } + + /* Check whether the given query curve is encountered when rotating the + * first curve in a clockwise direction around a given point until reaching + * the second curve. + */ + bool is_between_cw_impl(const X_monotone_curve_2& xcv, bool xcv_to_right, + const X_monotone_curve_2& xcv1, bool xcv1_to_right, + const X_monotone_curve_2& xcv2, bool xcv2_to_right, + const Point_2& p, + bool& xcv_equal_xcv1, bool& xcv_equal_xcv2, + Arr_not_all_sides_oblivious_tag) const; + + /*! Find a face containing the query curve m_cv around the given vertex. + * In case an overlap occurs, sets m_intersect_he to be the overlapping edge. * \param v The query vertex. - * \param he Output: The predecessor of cv around the vertex. - * \return (true) if cv overlaps with the curve associated with he; + * \param he Output: The predecessor of m_cv around the vertex. + * \return (true) if m_cv overlaps with the curve associated with he; * (false) if there is no overlap. */ - bool _find_prev_around_vertex (Vertex_handle v, Halfedge_handle& he); + bool _find_prev_around_vertex(Vertex_handle v, Halfedge_handle& he); - /*! - * Direct the halfedge for the location of the given subcurve around a split + /*! Direct the halfedge for the location of the given subcurve around a split * point that occurs in the interior of a given edge, when the subcurve lies * to the right of the split point. - * In case of overlaps, it sets also found_overlap and intersect_he. + * In case of overlaps, it sets also m_found_overlap and m_intersect_he. * \param cv_ins The curve to be inserted, whose left endpoint coincides * with the edge to be split. * \param cv_left_pt The left endpoint of cv_ins. @@ -302,8 +364,7 @@ private: const Point_2& cv_left_pt, Halfedge_handle query_he); - /*! - * Direct the halfedge for the location of the given subcurve around a split + /*! Direct the halfedge for the location of the given subcurve around a split * point that occurs in the interior of a given edge, when the subcurve lies * to the left of the split point. * \param cv_ins The curve to be inserted, whose right endpoint coincides @@ -318,8 +379,7 @@ private: _direct_intersecting_edge_to_left(const X_monotone_curve_2& cv_ins, Halfedge_handle query_he); - /*! - * Get the next intersection of cv with the given halfedge. + /*! Get the next intersection of m_cv with the given halfedge. * \param he A handle to the halfedge. * \param skip_first_point Should we skip the first intersection point. * \param intersect_on_right_boundary Output: If an intersetion point is @@ -332,20 +392,19 @@ private: * case of an overlap, and an empty object if there is no * intersection. */ - CGAL::Object _compute_next_intersection (Halfedge_handle he, - bool skip_first_point, - bool& intersect_on_right_boundary); + CGAL::Object _compute_next_intersection(Halfedge_handle he, + bool skip_first_point, + bool& intersect_on_right_boundary); - /*! - * Remove the next intersection of cv with the given halfedge from the map. + /*! Remove the next intersection of m_cv with the given halfedge from the map. * \param he A handle to the halfedge. * \pre The list of intersections with the curve of he has already been * computed, and it is not empty. */ void _remove_next_intersection (Halfedge_handle he); - /*! - * Check if the given point lies completely to the left of the given egde. + /*! Check whether the given point lies completely to the left of the given + * egde. * \param p The point. * \param he The halfedge. * \pre he is not a fictitious edge. @@ -359,19 +418,19 @@ private: bool _is_to_left_impl(const Point_2& p, Halfedge_handle he, Arr_all_sides_oblivious_tag) const { - return ((he->direction() == ARR_LEFT_TO_RIGHT && - m_geom_traits->compare_xy_2_object() + return (((he->direction() == ARR_LEFT_TO_RIGHT) && + m_geom_traits->compare_xy_2_object() (p, he->source()->point()) == SMALLER) || (he->direction() == ARR_RIGHT_TO_LEFT && - m_geom_traits->compare_xy_2_object() + m_geom_traits->compare_xy_2_object() (p, he->target()->point()) == SMALLER)); } bool _is_to_left_impl(const Point_2& p, Halfedge_handle he, Arr_not_all_sides_oblivious_tag) const; - - /*! - * Check if the given point lies completely to the right of the given egde. + + /*! Check whether the given point lies completely to the right of the given + * egde. * \param p The point. * \param he The halfedge. * \pre he is not a fictitious edge. @@ -385,59 +444,62 @@ private: bool _is_to_right_impl(const Point_2& p, Halfedge_handle he, Arr_all_sides_oblivious_tag) const { - return ((he->direction() == ARR_LEFT_TO_RIGHT && - m_geom_traits->compare_xy_2_object() - (p, he->target()->point()) == LARGER) || - (he->direction() == ARR_RIGHT_TO_LEFT && - m_geom_traits->compare_xy_2_object() - (p, he->source()->point()) == LARGER)); + return (((he->direction() == ARR_LEFT_TO_RIGHT) && + m_geom_traits->compare_xy_2_object()(p, he->target()->point()) == + LARGER) || + ((he->direction() == ARR_RIGHT_TO_LEFT) && + m_geom_traits->compare_xy_2_object()(p, he->source()->point()) == + LARGER)); } bool _is_to_right_impl(const Point_2& p, Halfedge_handle he, Arr_not_all_sides_oblivious_tag) const; - /*! - * Compute the (lexicographically) leftmost intersection of the query + /*! Compute the (lexicographically) leftmost intersection of the query + * curve with a given halfedge on the boundary of a face in the arrangement. + */ + void + _leftmost_intersection(Ccb_halfedge_circulator he_curr, bool on_boundary, + bool& leftmost_on_right_boundary); + + /*! Compute the (lexicographically) leftmost intersection of the query * curve with the boundary of a given face in the arrangement. - * The function computes sets intersect_p, intersect_he (or alternatively - * overlap_cv and intersect_he) and set the flags found_intersect and - * found_overlap accordingly. + * The function computes sets m_intersect_p, m_intersect_he (or alternatively + * m_overlap_cv and m_intersect_he) and set the flags m_found_intersect and + * m_found_overlap accordingly. * \param face A handle to the face. * \param on_boundary Specifies whether the left endpoint of the curve lies * on the face boundary. */ - void _leftmost_intersection_with_face_boundary (Face_handle face, - bool on_boundary); + void _leftmost_intersection_with_face_boundary(Face_handle face, + bool on_boundary); - /*! - * Compute the zone of an x-monotone curve in a given arrangement face. + /*! Compute the zone of an x-monotone curve in a given arrangement face. * The left endpoint of the curve either lies in the face interior or on * the boundary of the face. - * This function updates cv and its left endpoint and also sets left_v - * and left_he for the remaining portion of the curve. - * In case of overlaps, it sets also overlap_cv and intersect_he. + * This function updates m_cv and its left endpoint and also sets m_left_v + * and m_left_he for the remaining portion of the curve. + * In case of overlaps, it sets also m_overlap_cv and m_intersect_he. * \param face The given face. * \param on_boundary Specifies whether the left endpoint of the curve lies * on the face boundary. - * \pre If on_boundary is (true) then left_he must be valid; if it is (false) - * then both left_v anf left_he must be invalid. + * \pre If on_boundary is (true) then m_left_he must be valid; if it is + * (false), then both m_left_v anf m_left_he must be invalid. * \return (true) if we are done with the zone-computation process; - * (false) if we still have a remaining portion of cv to continue + * (false) if we still have a remaining portion of m_cv to continue * with. */ - bool _zone_in_face (Face_handle face, - bool on_boundary); + bool _zone_in_face(Face_handle face, bool on_boundary); - /*! - * Compute the zone of an overlapping subcurve overlap_cv of cv and the - * curve currently associated with intersect_he. - * This function updates cv and its left endpoint and also sets left_v - * and left_he for the remaining portion of the curve. + /*! Compute the zone of an overlapping subcurve m_overlap_cv of m_cv and the + * curve currently associated with m_intersect_he. + * This function updates m_cv and its left endpoint and also sets m_left_v + * and m_left_he for the remaining portion of the curve. * \return (true) if we are done with the zone-computation process; - * (false) if we still have a remaining portion of cv to continue + * (false) if we still have a remaining portion of m_cv to continue * with. */ - bool _zone_in_overlap (); + bool _zone_in_overlap(); }; } //namespace CGAL diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/CMakeLists.txt b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/CMakeLists.txt index 1e9b152f714..6df47f3371d 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/CMakeLists.txt +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/CMakeLists.txt @@ -12,11 +12,7 @@ find_package(CGAL QUIET COMPONENTS Core) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") + include(${CGAL_USE_FILE}) if(COMMAND target_compile_options) # Since CMake-2.8.12: New CMake script, that defines the targets and diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/Construction_test.h b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/Construction_test.h index 765d810c4e0..9aae6a62e83 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/Construction_test.h +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/Construction_test.h @@ -270,10 +270,9 @@ bool Construction_test::are_same_results() typename Xcurve_container::iterator xcit = curves_res.begin(); Edge_const_iterator eit; - for (eit = m_arr->edges_begin(); eit != m_arr->edges_end(); ++eit) { - if (is_interior(eit->source()) && is_interior(eit->target())) - *xcit++ = eit->curve(); - } + for (eit = m_arr->edges_begin(); eit != m_arr->edges_end(); ++eit) + *xcit++ = eit->curve(); + Curve_compare curve_compare(m_geom_traits); std::sort(curves_res.begin(), xcit, curve_compare); diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/Traits_adaptor_test.h b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/Traits_adaptor_test.h index a131d189f26..aa908722862 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/Traits_adaptor_test.h +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/Traits_adaptor_test.h @@ -6,17 +6,20 @@ #include "Traits_base_test.h" -template +template class Traits_adaptor_test : - public Traits_base_test + public Traits_base_test { public: - typedef Geom_traits_T Geom_traits; - typedef Traits_base_test Base; + typedef GeomTraits Geom_traits; + typedef BaseGeomTraits Base_geom_traits; + typedef Traits_base_test Base; private: + typedef Traits_adaptor_test Self; + /*! A map between (strings) commands and (member functions) operations */ - typedef bool (Traits_adaptor_test::* Wrapper)(std::istringstream &); + typedef bool (Traits_adaptor_test::* Wrapper)(std::istringstream&); typedef std::map Wrapper_map; typedef typename Wrapper_map::iterator Wrapper_iter; Wrapper_map m_wrappers; @@ -34,6 +37,8 @@ private: } //@{ + bool ta_compare_xy(std::istringstream&); + bool ta_compare_xy_imp(std::istringstream&); bool ta_compare_y_at_x_left_wrapper(std::istringstream&); bool ta_compare_y_at_x_left_wrapper_imp(std::istringstream&, @@ -61,67 +66,78 @@ protected: const Geom_traits& m_geom_traits; public: - /*! Constructor */ + /*! Construct. + */ Traits_adaptor_test(const Geom_traits& geom_traits); - /*! Destructor */ + /*! Destruct. + */ virtual ~Traits_adaptor_test(); }; -/*! - * Constructor. +/*! Construct. * Accepts test data file name. */ -template -Traits_adaptor_test:: -Traits_adaptor_test(const Geom_traits_T& geom_traits) : +template +Traits_adaptor_test:: +Traits_adaptor_test(const GeomTraits& geom_traits) : Base(geom_traits), m_geom_traits(geom_traits) { - typedef Geom_traits_T Geom_traits; - + m_wrappers[std::string("compare_xy")] = &Self::ta_compare_xy; m_wrappers[std::string("compare_y_at_x_left")] = - &Traits_adaptor_test::ta_compare_y_at_x_left_wrapper; - m_wrappers[std::string("is_in_x_range")] = - &Traits_adaptor_test::ta_is_in_x_range_wrapper; + &Self::ta_compare_y_at_x_left_wrapper; + m_wrappers[std::string("is_in_x_range")] = &Self::ta_is_in_x_range_wrapper; m_wrappers[std::string("compare_y_position")] = - &Traits_adaptor_test::ta_compare_y_position_wrapper; - m_wrappers[std::string("is_between_cw")] = - &Traits_adaptor_test::ta_is_between_cw_wrapper; + &Self::ta_compare_y_position_wrapper; + m_wrappers[std::string("is_between_cw")] = &Self::ta_is_between_cw_wrapper; m_wrappers[std::string("compare_cw_around_point")] = - &Traits_adaptor_test::ta_compare_cw_around_point_wrapper; - m_wrappers[std::string("are_mergeable")] = - &Traits_adaptor_test::ta_are_mergeable_wrapper; - m_wrappers[std::string("merge")] = - &Traits_adaptor_test::ta_merge_wrapper; + &Self::ta_compare_cw_around_point_wrapper; + m_wrappers[std::string("are_mergeable")] = &Self::ta_are_mergeable_wrapper; + m_wrappers[std::string("merge")] = &Self::ta_merge_wrapper; } -/*! - * Destructor. +/*! Destruct. * Declares as virtual. */ -template -Traits_adaptor_test::~Traits_adaptor_test() {} +template +Traits_adaptor_test::~Traits_adaptor_test() {} -template -bool Traits_adaptor_test:: -ta_compare_y_at_x_left_wrapper(std::istringstream & str_stream) +template +bool Traits_adaptor_test:: +ta_compare_xy(std::istringstream& str_stream) { - typedef typename Geom_traits_T::Has_left_category Has_left_category; + unsigned int id1, id2; + str_stream >> id1 >> id2; + unsigned int exp_answer = this->get_expected_enum(str_stream); + std::cout << "Test: compare_xy( " << this->m_xcurves[id1] + << "," << this->m_xcurves[id2] << " ) ? " << exp_answer << " "; + + unsigned int real_answer = + m_geom_traits.compare_xy_2_object()(this->m_xcurves[id1] , + this->m_xcurves[id2]); + return this->compare(exp_answer, real_answer); +} + +template +bool Traits_adaptor_test:: +ta_compare_y_at_x_left_wrapper(std::istringstream& str_stream) +{ + typedef typename Geom_traits::Has_left_category Has_left_category; return ta_compare_y_at_x_left_wrapper_imp(str_stream, Has_left_category()); } -template -bool Traits_adaptor_test:: -ta_compare_y_at_x_left_wrapper_imp(std::istringstream &, CGAL::Tag_false) +template +bool Traits_adaptor_test:: +ta_compare_y_at_x_left_wrapper_imp(std::istringstream&, CGAL::Tag_false) { CGAL_error(); return false; } -template -bool Traits_adaptor_test:: -ta_compare_y_at_x_left_wrapper_imp(std::istringstream & str_stream, +template +bool Traits_adaptor_test:: +ta_compare_y_at_x_left_wrapper_imp(std::istringstream& str_stream, CGAL::Tag_true) { unsigned int id1, id2, id3; @@ -138,21 +154,18 @@ ta_compare_y_at_x_left_wrapper_imp(std::istringstream & str_stream, return this->compare(exp_answer, real_answer); } -template -bool Traits_adaptor_test:: -ta_is_in_x_range_wrapper(std::istringstream & str_stream) +template +bool Traits_adaptor_test:: +ta_is_in_x_range_wrapper(std::istringstream& str_stream) { unsigned int id1, id2; char c; str_stream >> c >> id1 >> id2; bool exp_answer = this->get_expected_boolean(str_stream); std::cout << "Test: is_in_x_range( " << this->m_xcurves[id1] << ","; - if (c == 'p') - std::cout << this->m_points[id2]; - else if (c == 'x') - std::cout << this->m_xcurves[id2]; - else - CGAL_error(); + if (c == 'p') std::cout << this->m_points[id2]; + else if (c == 'x') std::cout << this->m_xcurves[id2]; + else CGAL_error(); std::cout << " ) ? " << " "; bool real_answer = (c == 'p') ? @@ -163,9 +176,9 @@ ta_is_in_x_range_wrapper(std::istringstream & str_stream) return this->compare(exp_answer, real_answer); } -template -bool Traits_adaptor_test:: -ta_compare_y_position_wrapper(std::istringstream & str_stream) +template +bool Traits_adaptor_test:: +ta_compare_y_position_wrapper(std::istringstream& str_stream) { unsigned int id1, id2; str_stream >> id1 >> id2; @@ -179,9 +192,9 @@ ta_compare_y_position_wrapper(std::istringstream & str_stream) return this->compare(exp_answer, real_answer); } -template -bool Traits_adaptor_test:: -ta_is_between_cw_wrapper(std::istringstream & str_stream) +template +bool Traits_adaptor_test:: +ta_is_between_cw_wrapper(std::istringstream& str_stream) { unsigned int xcv , b , xcv1 , b1 , xcv2 , b2 , p; //note that b_ref1 b_ref2 are outputs so they can be tested also @@ -205,9 +218,9 @@ ta_is_between_cw_wrapper(std::istringstream & str_stream) return this->compare(exp_answer, real_answer); } -template -bool Traits_adaptor_test:: -ta_compare_cw_around_point_wrapper(std::istringstream & str_stream) +template +bool Traits_adaptor_test:: +ta_compare_cw_around_point_wrapper(std::istringstream& str_stream) { unsigned int xcv1 , b1 , xcv2 , b2 , p , b3; str_stream >> xcv1 >> b1 >> xcv2 >> b2 >> p >> b3; @@ -231,25 +244,25 @@ ta_compare_cw_around_point_wrapper(std::istringstream & str_stream) return this->compare(exp_answer, real_answer); } -template -bool Traits_adaptor_test:: -ta_are_mergeable_wrapper(std::istringstream & str_stream) +template +bool Traits_adaptor_test:: +ta_are_mergeable_wrapper(std::istringstream& str_stream) { - typedef typename Geom_traits_T::Has_merge_category Has_merge_category; + typedef typename GeomTraits::Has_merge_category Has_merge_category; return ta_are_mergeable_wrapper_imp(str_stream, Has_merge_category()); } -template -bool Traits_adaptor_test:: -ta_are_mergeable_wrapper_imp(std::istringstream &, CGAL::Tag_false) +template +bool Traits_adaptor_test:: +ta_are_mergeable_wrapper_imp(std::istringstream&, CGAL::Tag_false) { CGAL_error(); return false; } -template -bool Traits_adaptor_test:: -ta_are_mergeable_wrapper_imp (std::istringstream & str_stream, CGAL::Tag_true) +template +bool Traits_adaptor_test:: +ta_are_mergeable_wrapper_imp(std::istringstream& str_stream, CGAL::Tag_true) { unsigned int id1, id2; str_stream >> id1 >> id2; @@ -263,27 +276,26 @@ ta_are_mergeable_wrapper_imp (std::istringstream & str_stream, CGAL::Tag_true) return this->compare(exp_answer, real_answer); } -template -bool Traits_adaptor_test::ta_merge_wrapper -(std::istringstream & str_stream) +template +bool Traits_adaptor_test::ta_merge_wrapper +(std::istringstream& str_stream) { - typedef typename Geom_traits_T::Has_merge_category Has_merge_category; + typedef typename GeomTraits::Has_merge_category Has_merge_category; return ta_merge_wrapper_imp(str_stream, Has_merge_category()); } -template -bool Traits_adaptor_test:: -ta_merge_wrapper_imp(std::istringstream &, CGAL::Tag_false) +template +bool Traits_adaptor_test:: +ta_merge_wrapper_imp(std::istringstream&, CGAL::Tag_false) { CGAL_error(); return false; } -template -bool Traits_adaptor_test:: -ta_merge_wrapper_imp(std::istringstream & str_stream, CGAL::Tag_true) +template +bool Traits_adaptor_test:: +ta_merge_wrapper_imp(std::istringstream& str_stream, CGAL::Tag_true) { - typedef Geom_traits_T Geom_traits; typedef typename Geom_traits::X_monotone_curve_2 X_monotone_curve_2; typedef typename Geom_traits::Equal_2 Equal_2; CGAL_USE_TYPE(Equal_2); diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/cgal_test.cmake b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/cgal_test.cmake index 3d1c81422e4..1baad5bed5f 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/cgal_test.cmake +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/cgal_test.cmake @@ -479,6 +479,7 @@ function(execute_commands_traits_adaptor data_dir traits_type_name) set(commands_indicator_PARAMETER_SPACE_X 0) set(commands_indicator_PARAMETER_SPACE_Y 0) + set(commands_indicator_COMPARE_XY 0) set(commands_indicator_COMPARE_X_AT_LIMIT 0) set(commands_indicator_COMPARE_X_NEAR_LIMIT 0) set(commands_indicator_COMPARE_X_ON_BOUNDARY 0) @@ -508,6 +509,11 @@ function(execute_commands_traits_adaptor data_dir traits_type_name) data/test_adaptor/${data_dir}/xcurves data/test_adaptor/${data_dir}/curves data/test_adaptor/${data_dir}/parameter_space_y ${traits_type_name}) endif() + if(commands_indicator_COMPARE_XY) + run_trapped_test(test_traits_adaptor data/test_adaptor/${data_dir}/points + data/test_adaptor/${data_dir}/xcurves data/test_adaptor/${data_dir}/curves + data/test_adaptor/${data_dir}/compare_xy ${traits_type_name}) + endif() if(commands_indicator_COMPARE_X_AT_LIMIT) run_trapped_test(test_traits_adaptor data/test_adaptor/${data_dir}/points data/test_adaptor/${data_dir}/xcurves data/test_adaptor/${data_dir}/curves @@ -599,7 +605,7 @@ function(test_segment_traits_adaptor) compile_test_with_flags(test_traits_adaptor segments "${flags}") # if [ -n "${SUCCESS}" ] ; then execute_commands_traits_adaptor( segments segments_traits_adaptor - COMPARE_Y_POSITION COMPARE_CW_AROUND_POINT COMPARE_Y_AT_X_LEFT + COMPARE_XY COMPARE_Y_POSITION COMPARE_CW_AROUND_POINT COMPARE_Y_AT_X_LEFT ARE_MERGEABLE MERGE IS_IN_X_RANGE IS_BETWEEN_CW) endfunction() @@ -615,7 +621,7 @@ function(test_linear_traits_adaptor) compile_test_with_flags( test_traits_adaptor linear "${flags}") execute_commands_traits_adaptor( linear linear_traits_adaptor - COMPARE_Y_AT_X_LEFT ARE_MERGEABLE MERGE IS_IN_X_RANGE + COMPARE_XY COMPARE_Y_AT_X_LEFT ARE_MERGEABLE MERGE IS_IN_X_RANGE COMPARE_Y_POSITION IS_BETWEEN_CW COMPARE_CW_AROUND_POINT) endfunction() @@ -632,7 +638,7 @@ function(test_spherical_arcs_traits_adaptor) compile_test_with_flags( test_traits_adaptor geodesic_arcs_on_sphere "${flags}") execute_commands_traits_adaptor( spherical_arcs spherical_arcs_traits_adaptor - COMPARE_Y_AT_X_LEFT ARE_MERGEABLE MERGE IS_IN_X_RANGE + COMPARE_XY COMPARE_Y_AT_X_LEFT ARE_MERGEABLE MERGE IS_IN_X_RANGE COMPARE_Y_POSITION IS_BETWEEN_CW COMPARE_CW_AROUND_POINT) endfunction() diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_adaptor/linear/compare_xy b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_adaptor/linear/compare_xy new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_adaptor/segments/compare_xy b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_adaptor/segments/compare_xy new file mode 100644 index 00000000000..a7e415642d6 --- /dev/null +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_adaptor/segments/compare_xy @@ -0,0 +1 @@ +compare_xy 0 8 SMALLER diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_adaptor/spherical_arcs/compare_xy b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_adaptor/spherical_arcs/compare_xy new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test02.txt b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test02.txt index b1ab6f94e35..d2e02685a7b 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test02.txt +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test02.txt @@ -19,10 +19,10 @@ 0 0 1 2 1 0 1 -2 0 0 1 -1 -1 1 2 1 0 0 1 -1 0 1 2 1 0 0 1 -1 1 0 2 1 0 0 1 0 0 1 1 -2 0 0 1 +1 -1 1 2 1 0 0 1 1 -1 1 0 0 1 0 1 +1 0 1 2 1 0 0 1 1 0 1 0 0 1 0 1 +1 1 0 2 1 0 0 1 0 0 1 1 1 0 0 1 diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test02.wrl b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test02.wrl index dc2e1d212d5..b0b0340b5f5 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test02.wrl +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test02.wrl @@ -9,8 +9,6 @@ ColorBackground { NavigationInfo { type [ "EXAMINE" "ANY" ] } Viewpoint { type "ORTHOGONAL" - fieldOfView 2.96 - # radiusScale 0.7 } DEF TRANSFORMER_NAV NavigationInfo { type [ "TRANSFORM" ] } @@ -56,7 +54,7 @@ DEF SNAP Snapshot { Transform { rotation 1 0 0 -1.5708 bboxCenter 0 0 0 - bboxSize 1.5 1.5 1.5 + bboxSize 2 2 2 children [ Switch { whichChoice 0 @@ -96,15 +94,14 @@ Transform { aosIsolatedVertexStyle "disc" # insertionStrategy "increment" aosMarkedEdgeIndex 100 - coord DEF COORD ExactCoordinate { - ratPoint [ - 0 0 1 - 1 -2 0 - 1 -1 1 - 2 1 0 - 1 0 1 - 1 1 0 - ] + coord DEF COORD EpecCoordinate { + exactPoint [0 0 1 + 1 -2 0 + 1 -1 1 + 2 1 0 + 1 0 1 + 1 1 0 + ] } # Pointindex [6 7] curveIndex [ @@ -145,7 +142,14 @@ Transform { } } Shape { - appearance USE AXES_APP + appearance DEF AXES_APP Appearance { + material Material { + # ambientIntensity 1 + diffuseColor 0.4 0.4 0.4 + # specularColor 0.3 0.3 0.3 + # transparency 0.0001 + } + } geometry Sphere { center 0 0 -1 radius 0.05 @@ -207,20 +211,13 @@ Transform { } ] } - + # The axes: DEF AXES Transform { scale 0.1 0.1 0.1 children [ Shape { - appearance DEF AXES_APP Appearance { - material Material { - # ambientIntensity 1 - diffuseColor 0.4 0.4 0.4 - # specularColor 0.3 0.3 0.3 - # transparency 0.0001 - } - } + appearance USE AXES_APP geometry Sphere { radius 0.1 } } DEF CS_AXIS Transform { diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test03.txt b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test03.txt index ad307e34575..536b0e2a3ef 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test03.txt +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test03.txt @@ -13,6 +13,6 @@ 0 0 1 -1 0 -1 -1 -1 0 0 1 -1 -1 0 0 0 1 0 1 - 0 0 1 -1 2 0 0 1 -1 2 0 -1 0 -1 0 1 + 0 0 1 -1 2 0 0 1 -1 1 0 0 0 1 0 1 diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test03.wrl b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test03.wrl index e454612c276..cd6e82a854a 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test03.wrl +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test03.wrl @@ -9,8 +9,6 @@ ColorBackground { NavigationInfo { type [ "EXAMINE" "ANY" ] } Viewpoint { type "ORTHOGONAL" - fieldOfView 2.96 - # radiusScale 0.7 } DEF TRANSFORMER_NAV NavigationInfo { type [ "TRANSFORM" ] } @@ -56,7 +54,7 @@ DEF SNAP Snapshot { Transform { rotation 1 0 0 -1.5708 bboxCenter 0 0 0 - bboxSize 1.5 1.5 1.5 + bboxSize 2 2 2 children [ Switch { whichChoice 0 @@ -98,13 +96,13 @@ Transform { # insertionStrategy "increment" aosMarkedEdgeIndex 100 aosMarkedVertexIndex 0 - coord DEF COORD ExactCoordinate { - ratPoint [-1 0 -1, - -1 -1 0, - 0 0 1, - -1 2 0, - -1 1 0 - ] + coord DEF COORD EpecCoordinate { + exactPoint [-1 0 -1, + -1 -1 0, + 0 0 1, + -1 2 0, + -1 1 0 + ] } # Pointindex [6 7] curveIndex [0 1 1 2 2 3 3 0 4 2] @@ -136,7 +134,14 @@ Transform { } } Shape { - appearance USE AXES_APP + appearance DEF AXES_APP Appearance { + material Material { + # ambientIntensity 1 + diffuseColor 0.4 0.4 0.4 + # specularColor 0.3 0.3 0.3 + # transparency 0.0001 + } + } geometry Sphere { center 0 0 -1 radius 0.05 @@ -198,20 +203,13 @@ Transform { } ] } - + # The axes: DEF AXES Transform { scale 0.1 0.1 0.1 children [ Shape { - appearance DEF AXES_APP Appearance { - material Material { - # ambientIntensity 1 - diffuseColor 0.4 0.4 0.4 - # specularColor 0.3 0.3 0.3 - # transparency 0.0001 - } - } + appearance USE AXES_APP geometry Sphere { radius 0.1 } } DEF CS_AXIS Transform { diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test04.txt b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test04.txt index c20a698706e..bcfab95ed3b 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test04.txt +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test04.txt @@ -11,6 +11,6 @@ 1 -1 0 0 0 1 -1 -1 0 1 -1 0 0 1 +0 0 1 -1 -1 0 0 1 -1 -2 1 1 -2 1 0 1 1 -1 0 0 0 1 0 1 -0 0 1 -1 -1 0 0 1 diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test04.wrl b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test04.wrl index a443773bb47..9e8b79bbed1 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test04.wrl +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test04.wrl @@ -9,8 +9,6 @@ ColorBackground { NavigationInfo { type [ "EXAMINE" "ANY" ] } Viewpoint { type "ORTHOGONAL" - fieldOfView 2.96 - # radiusScale 0.7 } DEF TRANSFORMER_NAV NavigationInfo { type [ "TRANSFORM" ] } @@ -56,7 +54,7 @@ DEF SNAP Snapshot { Transform { rotation 1 0 0 -1.5708 bboxCenter 0 0 0 - bboxSize 1.5 1.5 1.5 + bboxSize 2 2 2 children [ Switch { whichChoice 0 @@ -98,13 +96,13 @@ Transform { # insertionStrategy "increment" aosMarkedEdgeIndex 100 aosMarkedVertexIndex 0 - coord DEF COORD ExactCoordinate { - ratPoint [-1 -1 0 - 1 -1 0, - 0 0 1, - -1 -2 1, - 1 -2 1 - ] + coord DEF COORD EpecCoordinate { + exactPoint [-1 -1 0 + 1 -1 0, + 0 0 1, + -1 -2 1, + 1 -2 1 + ] } # Pointindex [6 7] curveIndex [0 1 1 2 2 0 3 4] @@ -136,7 +134,14 @@ Transform { } } Shape { - appearance USE AXES_APP + appearance DEF AXES_APP Appearance { + material Material { + # ambientIntensity 1 + diffuseColor 0.4 0.4 0.4 + # specularColor 0.3 0.3 0.3 + # transparency 0.0001 + } + } geometry Sphere { center 0 0 -1 radius 0.05 @@ -198,20 +203,13 @@ Transform { } ] } - + # The axes: DEF AXES Transform { scale 0.1 0.1 0.1 children [ Shape { - appearance DEF AXES_APP Appearance { - material Material { - # ambientIntensity 1 - diffuseColor 0.4 0.4 0.4 - # specularColor 0.3 0.3 0.3 - # transparency 0.0001 - } - } + appearance USE AXES_APP geometry Sphere { radius 0.1 } } DEF CS_AXIS Transform { diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test05.txt b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test05.txt index 44aa26cc32d..e4ed16a1ebc 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test05.txt +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test05.txt @@ -10,6 +10,6 @@ 1 -1 0 0 0 1 -1 -1 0 1 -1 0 0 1 -1 -1 0 0 0 1 0 1 0 0 1 -1 -1 0 0 1 0 0 1 0 -1 1 0 1 +1 -1 0 0 0 1 0 1 diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test05.wrl b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test05.wrl index f95dd63c57e..a661c66d873 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test05.wrl +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test05.wrl @@ -9,8 +9,6 @@ ColorBackground { NavigationInfo { type [ "EXAMINE" "ANY" ] } Viewpoint { type "ORTHOGONAL" - fieldOfView 2.96 - # radiusScale 0.7 } DEF TRANSFORMER_NAV NavigationInfo { type [ "TRANSFORM" ] } @@ -56,7 +54,7 @@ DEF SNAP Snapshot { Transform { rotation 1 0 0 -1.5708 bboxCenter 0 0 0 - bboxSize 1.5 1.5 1.5 + bboxSize 2 2 2 children [ Switch { whichChoice 0 @@ -98,12 +96,12 @@ Transform { # insertionStrategy "increment" aosMarkedEdgeIndex 100 aosMarkedVertexIndex 0 - coord DEF COORD ExactCoordinate { - ratPoint [-1 -1 0 - 1 -1 0, - 0 0 1, - 0 -1 1 - ] + coord DEF COORD EpecCoordinate { + exactPoint [-1 -1 0 + 1 -1 0, + 0 0 1, + 0 -1 1 + ] } # Pointindex [6 7] curveIndex [0 1 1 2 2 0 2 3] @@ -135,7 +133,14 @@ Transform { } } Shape { - appearance USE AXES_APP + appearance DEF AXES_APP Appearance { + material Material { + # ambientIntensity 1 + diffuseColor 0.4 0.4 0.4 + # specularColor 0.3 0.3 0.3 + # transparency 0.0001 + } + } geometry Sphere { center 0 0 -1 radius 0.05 @@ -197,20 +202,13 @@ Transform { } ] } - + # The axes: DEF AXES Transform { scale 0.1 0.1 0.1 children [ Shape { - appearance DEF AXES_APP Appearance { - material Material { - # ambientIntensity 1 - diffuseColor 0.4 0.4 0.4 - # specularColor 0.3 0.3 0.3 - # transparency 0.0001 - } - } + appearance USE AXES_APP geometry Sphere { radius 0.1 } } DEF CS_AXIS Transform { diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test06.txt b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test06.txt index 8792e363b5f..658fd5f068d 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test06.txt +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test06.txt @@ -14,6 +14,6 @@ 0 0 1 -1 0 -1 -1 -1 0 0 1 -1 -1 0 0 0 1 0 1 - 0 0 1 -1 2 0 0 1 -1 2 0 -1 0 -1 0 1 + 0 0 1 -1 2 0 0 1 -1 1 0 -1 0 0 0 1 diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test06.wrl b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test06.wrl index 5248aa896ae..ee37345c097 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test06.wrl +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test06.wrl @@ -9,8 +9,6 @@ ColorBackground { NavigationInfo { type [ "EXAMINE" "ANY" ] } Viewpoint { type "ORTHOGONAL" - fieldOfView 2.96 - # radiusScale 0.7 } DEF TRANSFORMER_NAV NavigationInfo { type [ "TRANSFORM" ] } @@ -56,7 +54,7 @@ DEF SNAP Snapshot { Transform { rotation 1 0 0 -1.5708 bboxCenter 0 0 0 - bboxSize 1.5 1.5 1.5 + bboxSize 2 2 2 children [ Switch { whichChoice 0 @@ -98,14 +96,14 @@ Transform { # insertionStrategy "increment" aosMarkedEdgeIndex 100 aosMarkedVertexIndex 0 1 - coord DEF COORD ExactCoordinate { - ratPoint [-1 0 -1, - -1 -1 0, - 0 0 1, - -1 2 0, - -1 1 0 - -1 0 0 - ] + coord DEF COORD EpecCoordinate { + exactPoint [-1 0 -1, + -1 -1 0, + 0 0 1, + -1 2 0, + -1 1 0 + -1 0 0 + ] } # Pointindex [6 7] curveIndex [0 1 1 2 2 3 3 0 4 5] @@ -137,7 +135,14 @@ Transform { } } Shape { - appearance USE AXES_APP + appearance DEF AXES_APP Appearance { + material Material { + # ambientIntensity 1 + diffuseColor 0.4 0.4 0.4 + # specularColor 0.3 0.3 0.3 + # transparency 0.0001 + } + } geometry Sphere { center 0 0 -1 radius 0.05 @@ -199,20 +204,13 @@ Transform { } ] } - + # The axes: DEF AXES Transform { scale 0.1 0.1 0.1 children [ Shape { - appearance DEF AXES_APP Appearance { - material Material { - # ambientIntensity 1 - diffuseColor 0.4 0.4 0.4 - # specularColor 0.3 0.3 0.3 - # transparency 0.0001 - } - } + appearance USE AXES_APP geometry Sphere { radius 0.1 } } DEF CS_AXIS Transform { diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test07.txt b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test07.txt index acbe5b65b46..ec675aa443a 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test07.txt +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test07.txt @@ -12,8 +12,8 @@ -1 1 0 -2 1 0 0 0 1 - 0 1 0 -1 1 0 0 1 -1 0 -1 -2 -1 0 0 1 -2 -1 0 0 0 1 0 1 - 0 0 1 -2 1 0 0 1 + 0 1 0 -1 1 0 0 1 -2 1 0 -1 0 -1 0 1 + 0 0 1 -2 1 0 0 1 diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test07.wrl b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test07.wrl index 6bdf7a0060e..45c720f39ef 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test07.wrl +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test07.wrl @@ -9,8 +9,6 @@ ColorBackground { NavigationInfo { type [ "EXAMINE" "ANY" ] } Viewpoint { type "ORTHOGONAL" - fieldOfView 2.96 - # radiusScale 0.7 } DEF TRANSFORMER_NAV NavigationInfo { type [ "TRANSFORM" ] } @@ -56,7 +54,7 @@ DEF SNAP Snapshot { Transform { rotation 1 0 0 -1.5708 bboxCenter 0 0 0 - bboxSize 1.5 1.5 1.5 + bboxSize 2 2 2 children [ Switch { whichChoice 0 @@ -98,13 +96,13 @@ Transform { # insertionStrategy "increment" aosMarkedEdgeIndex 100 aosMarkedVertexIndex 0 - coord DEF COORD ExactCoordinate { - ratPoint [-1 0 -1, - -2 -1 0, - 0 0 1, - -2 1 0, - 0 1 0 - -1 1 0 + coord DEF COORD EpecCoordinate { + exactPoint [-1 0 -1, + -2 -1 0, + 0 0 1, + -2 1 0, + 0 1 0 + -1 1 0 ] } # Pointindex [6 7] @@ -137,7 +135,14 @@ Transform { } } Shape { - appearance USE AXES_APP + appearance DEF AXES_APP Appearance { + material Material { + # ambientIntensity 1 + diffuseColor 0.4 0.4 0.4 + # specularColor 0.3 0.3 0.3 + # transparency 0.0001 + } + } geometry Sphere { center 0 0 -1 radius 0.05 @@ -199,20 +204,13 @@ Transform { } ] } - + # The axes: DEF AXES Transform { scale 0.1 0.1 0.1 children [ Shape { - appearance DEF AXES_APP Appearance { - material Material { - # ambientIntensity 1 - diffuseColor 0.4 0.4 0.4 - # specularColor 0.3 0.3 0.3 - # transparency 0.0001 - } - } + appearance USE AXES_APP geometry Sphere { radius 0.1 } } DEF CS_AXIS Transform { diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test08.txt b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test08.txt new file mode 100644 index 00000000000..61e574fb040 --- /dev/null +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test08.txt @@ -0,0 +1,13 @@ +3 +0 0 -1 0 -1 -1 0 +0 -1 1 0 -1 -1 0 +0 0 -1 0 -1 0 0 +0 +4 3 1 +0 0 -1 +0 -1 -1 +0 -1 0 +0 -1 1 +0 0 -1 0 -1 -1 0 2 +0 -1 -1 0 -1 0 0 2 +0 -1 1 0 -1 0 0 1 diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test08.wrl b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test08.wrl new file mode 100644 index 00000000000..c37bd6f5552 --- /dev/null +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/geodesic_arcs_on_sphere/test08.wrl @@ -0,0 +1,267 @@ +#VRML V2.0 utf8 +Configuration { + accumulation Accumulation { enabled TRUE } +} +ColorBackground { + color 1 1 1 1 + clearStencil TRUE +} +NavigationInfo { type [ "EXAMINE" "ANY" ] } +Viewpoint { + type "ORTHOGONAL" +} + +DEF TRANSFORMER_NAV NavigationInfo { type [ "TRANSFORM" ] } + +DEF DRAW_OPAQUE_KEY SingleKeySensor { key "o" } +DEF DRAW_HALOED_KEY SingleKeySensor { key "l" state TRUE } +DEF DRAW_SURFACE_KEY SingleKeySensor { key "b" state TRUE } +DEF EXPORT_KEY SingleKeySensor { key "O" } +DEF SNAP_KEY SingleKeySensor { key "S" } + +DEF VERTEX_SHAPE_KEY SingleKeySensor { + key "v" + boolean FALSE + numberOfStates 5 + intState 2 # disc +} + +DEF EDGE_SHAPE_KEY SingleKeySensor { + key "e" + boolean FALSE + numberOfStates 4 + intState 2 # strip +} + +DEF HIDE_SINGULARITIES_KEY SingleKeySensor { + boolean FALSE + key "s" +} + +DEF HIDE_DISCONTINUITY_KEY SingleKeySensor { + boolean FALSE + key "d" +} + +DEF SNAP Snapshot { + image Image { } + fileFormat "jpg" + sequence FALSE + dirName "." + fileName "test07" +} + +Transform { + rotation 1 0 0 -1.5708 + bboxCenter 0 0 0 + bboxSize 2 2 2 + children [ + Switch { + whichChoice 0 + children [ + DEF ARRANGMENT Group { + children [ + Shape { + drawDepth FALSE + appearance Appearance { + material Material { + diffuseColor 0.5 0.5 0.5 + ambientIntensity 0.7 + specularColor 0.5 0.5 0.5 + } + } + geometry Sphere { + slices 32 + stacks 32 + } + } + Shape { + appearance Appearance { + material Material { + transparency 0.0001 + } + } + geometry DEF GEOM ArrangementOnSphereMarked { + drawSurface FALSE +# drawOpaque TRUE + drawHaloed TRUE + aosEdgeStyle "strip" + aosEdgeRadius 0.03 + aosEdgeLineWidth 3 + aosVertexStyle "disc" + aosMarkedVertexStyle "none" + aosVertexRadius 0.1 + aosVertexPointSize 6 + aosIsolatedVertexStyle "disc" +# insertionStrategy "increment" + aosMarkedEdgeIndex 100 + aosMarkedVertexIndex 0 + coord DEF COORD EpecCoordinate { + exactPoint [0 0 -1, 0 -1 -1, + 0 -1 1, 0 -1 -1, + 0 0 -1, 0 -1 0 + ] + } + # Pointindex [6 7] + curveIndex [0 1 2 3 4 5] + } + } + ] + } + ] + } + + # The singularity points: + DEF SINGULARITIES_SWITCH Switch { + whichChoice 0 + children [ + Group { + children [ + Shape { + appearance DEF BOUNDARY_APP Appearance { + material Material { + # ambientIntensity 1 + diffuseColor 0.4 0.4 0.4 + # specularColor 0.8 0.8 0.8 + # transparency 0.0001 + } + } + geometry Sphere { + center 0 0 1 + radius 0.05 + } + } + Shape { + appearance DEF AXES_APP Appearance { + material Material { + # ambientIntensity 1 + diffuseColor 0.4 0.4 0.4 + # specularColor 0.3 0.3 0.3 + # transparency 0.0001 + } + } + geometry Sphere { + center 0 0 -1 + radius 0.05 + } + } + ] + } + ] + } + + # The discontinuity arc: + DEF DISCONTINUITY_SWITCH Switch { + whichChoice 0 + children [ + Shape { + appearance USE BOUNDARY_APP + geometry Extrusion { + creaseAngle 2.0 + beginCap TRUE + endCap TRUE + loop FALSE + crossSectionRadius 0.025 + spine [ + 0 0 1, + -0.0980171 0 0.995185, + -0.19509 0 0.980785, + -0.290285 0 0.95694, + -0.382683 0 0.92388, + -0.471397 0 0.881921, + -0.55557 0 0.83147, + -0.634393 0 0.77301, + -0.707107 0 0.707107, + -0.77301 0 0.634393, + -0.83147 0 0.55557, + -0.881921 0 0.471397, + -0.92388 0 0.382683, + -0.95694 0 0.290285, + -0.980785 0 0.19509, + -0.995185 0 0.0980171, + -1 0 0, + -0.995185 0 -0.0980171, + -0.980785 0 -0.19509, + -0.95694 0 -0.290285, + -0.92388 0 -0.382683, + -0.881921 0 -0.471397, + -0.83147 0 -0.55557, + -0.77301 0 -0.634393, + -0.707107 0 -0.707107, + -0.634393 0 -0.77301, + -0.55557 0 -0.83147, + -0.471397 0 -0.881921, + -0.382683 0 -0.92388, + -0.290285 0 -0.95694, + -0.19509 0 -0.980785, + -0.0980171 0 -0.995185, + 0 0 -1, + ] + } + } + ] + } + + # The axes: + DEF AXES Transform { + scale 0.1 0.1 0.1 + children [ + Shape { + appearance USE AXES_APP + geometry Sphere { radius 0.1 } + } + DEF CS_AXIS Transform { + translation 0 1.5 0 + children [ + Shape { + appearance USE AXES_APP + geometry Cylinder { + radius 0.1 + height 3 + set_is_bottom_visible FALSE + set_is_top_visible FALSE + } + } + Transform { + translation 0 1.7 0 + children [ + Shape { + appearance USE AXES_APP + geometry Cone { + bottomRadius 0.2 + height 0.4 + } + } + ] + } + ] + } + Transform { + rotation 0 0 -1 1.57 + children [ USE CS_AXIS ] + } + Transform { + rotation 1 0 0 1.57 + children [ USE CS_AXIS ] + } + ] + } +# Transform { +# translation 2 0 0 +# children [ +# USE ARRANGMENT +# ] +# } + ] +} + +ROUTE DRAW_OPAQUE_KEY.state TO GEOM.drawOpaque +ROUTE DRAW_HALOED_KEY.state TO GEOM.drawHaloed +ROUTE SNAP_KEY.state TO SNAP.trigger +# ROUTE EXPORT_KEY.press TO GEOM.export + +ROUTE HIDE_DISCONTINUITY_KEY.intState TO DISCONTINUITY_SWITCH.whichChoice +ROUTE HIDE_SINGULARITIES_KEY.intState TO SINGULARITIES_SWITCH.whichChoice + +ROUTE VERTEX_SHAPE_KEY.intState TO GEOM.aosVertexStyleId +ROUTE EDGE_SHAPE_KEY.intState TO GEOM.aosEdgeStyleId diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/linear/test02.txt b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/linear/test02.txt index 19d47e982d0..aad4b278b1f 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/linear/test02.txt +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/data/test_construction/linear/test02.txt @@ -8,7 +8,7 @@ r 0 0 0 1 3 0 0 0 1 -s 0 0 0 1 1 r 0 0 1 0 1 +s 0 0 0 1 1 r 0 1 1 1 1 r 0 1 0 2 1 diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_construction.geodesic_arcs_on_sphere.cmd b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_construction.geodesic_arcs_on_sphere.cmd index 7815b7d3418..fd1ff7f2196 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_construction.geodesic_arcs_on_sphere.cmd +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_construction.geodesic_arcs_on_sphere.cmd @@ -5,3 +5,4 @@ ./data/test_construction/geodesic_arcs_on_sphere/test05.txt ./data/test_construction/geodesic_arcs_on_sphere/test06.txt ./data/test_construction/geodesic_arcs_on_sphere/test07.txt +./data/test_construction/geodesic_arcs_on_sphere/test08.txt diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_traits_adaptor.cpp b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_traits_adaptor.cpp index ca64e4b5f15..8f0e88de89b 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_traits_adaptor.cpp +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_traits_adaptor.cpp @@ -11,7 +11,7 @@ int main (int argc, char * argv[]) { Geom_traits traits; - Traits_adaptor_test test(traits); + Traits_adaptor_test test(traits); if (!test.parse(argc, argv)) return -1; if (!test.init()) return -1; if (!test.perform()) return -1; diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_traits_adaptor.h b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_traits_adaptor.h index eea3199de9b..621bd3193ac 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_traits_adaptor.h +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_traits_adaptor.h @@ -5,7 +5,7 @@ #include "test_geom_traits.h" -typedef CGAL::Arr_traits_basic_adaptor_2 Geom_traits; +typedef CGAL::Arr_traits_adaptor_2 Geom_traits; typedef Geom_traits::Point_2 Point_2; typedef Geom_traits::Curve_2 Curve_2; typedef Geom_traits::X_monotone_curve_2 X_monotone_curve_2; diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/utils.h b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/utils.h index 6fe7467a20f..8ce1093e010 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/utils.h +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/utils.h @@ -3,6 +3,7 @@ #include #include #include +#include #include @@ -103,32 +104,25 @@ private: } }; -template +template class Curve_compare { private: - typedef T_Geom_traits Traits; + typedef GeomTraits Geom_traits; - const Traits& m_traits; + const Geom_traits& m_traits; public: - typedef typename Traits::X_monotone_curve_2 X_monotone_curve_2; - typedef typename Traits::Point_2 Point_2; + typedef typename Geom_traits::X_monotone_curve_2 X_monotone_curve_2; - Curve_compare(const Traits& traits) : m_traits(traits) {} + Curve_compare(const Geom_traits& traits) : m_traits(traits) {} bool operator()(const X_monotone_curve_2& c1, const X_monotone_curve_2& c2) { - const Point_2& c1_left = m_traits.construct_min_vertex_2_object()(c1); - const Point_2& c2_left = m_traits.construct_min_vertex_2_object()(c2); - - CGAL::Comparison_result res = - m_traits.compare_xy_2_object()(c1_left, c2_left); - - if (res == CGAL::SMALLER) return true; - if (res == CGAL::LARGER) return false; - CGAL_assertion(res == CGAL::EQUAL); - res = m_traits.compare_y_at_x_right_2_object()(c1, c2, c1_left); - return (res == CGAL::SMALLER) ? true : false; + typedef CGAL::Arr_traits_adaptor_2 Geom_traits_adaptor; + Geom_traits_adaptor geom_traits_adapter(m_traits); + typedef typename Geom_traits_adaptor::Compare_xy_2 Compare_xy_2; + Compare_xy_2 cmp_xy = geom_traits_adapter.compare_xy_2_object(); + return (CGAL::SMALLER == cmp_xy(c1, c2)); } }; diff --git a/BGL/doc/BGL/BGL.txt b/BGL/doc/BGL/BGL.txt index b5deb9702b6..6a319650062 100644 --- a/BGL/doc/BGL/BGL.txt +++ b/BGL/doc/BGL/BGL.txt @@ -22,7 +22,7 @@ Furthermore, this package extends the \sc{Bgl} by introducing concepts such as `HalfedgeGraph` and `FaceGraph` allowing to handle *halfedges* and *faces*. These concepts reflect the design of the halfedge data structure described -in Chapter \ref PkgHDSSummary, with opposite halfedges and circular +in Chapter \ref PkgHalfedgeDS, with opposite halfedges and circular sequences of halfedges around vertices and around faces. This chapter is organized as follows: @@ -31,10 +31,10 @@ This chapter is organized as follows: different libraries. - The four following sections give examples on how to use CGAL graph and mesh data structures such as -\link PkgSurfaceMeshSummary Surface_mesh \endlink, -\link PkgPolyhedronSummary Polyhedron \endlink, -\link PkgArrangement2Summary Arrangement_2 \endlink, and the -\link PkgTriangulation2Summary 2D triangulation \endlink classes as models of the \sc{Bgl} concepts. +\link PkgSurfaceMesh Surface_mesh \endlink, +\link PkgPolyhedron Polyhedron \endlink, +\link PkgArrangementOnSurface2 Arrangement_2 \endlink, and the +\link PkgTriangulation2 2D triangulation \endlink classes as models of the \sc{Bgl} concepts. - Starting with Section \ref BGLExtensions, we introduce new graph concepts, classes, and functions that extend the functionalities of the \sc{Bgl}. @@ -127,7 +127,7 @@ The data itself may be stored in the vertex or the edge, or it may be stored in an external data structure, or it may be computed on the fly. This is an implementation detail of a particular property map. -See also Chapter \ref PkgProperty_mapSummary. +See also Chapter \ref PkgPropertyMap. \subsection BGLVisitors Visitors @@ -218,7 +218,7 @@ the concepts provided by \cgal to implement a simple algorithm. The following example program computes the minimum spanning tree on a surface mesh. More examples can be found in Chapters -\ref PkgSurfaceMeshSimplificationSummary, \ref PkgSurfaceSegmentationSummary, and \ref PkgSurfaceMeshDeformationSummary. +\ref PkgSurfaceMeshSimplification, \ref PkgSurfaceMeshSegmentation, and \ref PkgSurfaceMeshDeformation. The surface mesh class uses integer indices to address vertices and edges, and it comes with a built-in property mechanism that maps nicely on the \sc{Bgl}. @@ -237,7 +237,7 @@ the concepts provided by \cgal to implement a simple algorithm. The following example program computes the minimum spanning tree on a polyhedral surface. More examples can be found in the Chapter -\ref PkgSurfaceMeshSimplificationSummary. +\ref PkgSurfaceMeshSimplification. \cgalExample{BGL_polyhedron_3/kruskal.cpp} @@ -423,7 +423,7 @@ by the functionalities of the \sc{Bgl}. \subsection BGLExtensionsGraphConcepts Graph concepts -In order to match \ref PkgHDSSummary more closely and to enable writing generic algorithms +In order to match \ref PkgHalfedgeDS more closely and to enable writing generic algorithms which operate on data structures that have faces and halfedges, we define a set of new concepts to extend the graph concepts of the BGL: @@ -636,7 +636,7 @@ Vertices of the seam mesh that are linked by a green dashed segment correspond to the same vertex in the underlying mesh. \cgalFigureEnd -Seam meshes are for example used in Chapter \ref PkgSurfaceParameterizationSummary +Seam meshes are for example used in Chapter \ref PkgSurfaceMeshParameterization to parameterize a topological sphere by first virtually cutting it into a topological disk. diff --git a/BGL/doc/BGL/Concepts/EdgeListGraph.h b/BGL/doc/BGL/Concepts/EdgeListGraph.h index 6a4d502d51e..685aed4fff5 100644 --- a/BGL/doc/BGL/Concepts/EdgeListGraph.h +++ b/BGL/doc/BGL/Concepts/EdgeListGraph.h @@ -33,7 +33,7 @@ edges(const EdgeListGraph& g); This is the case for implementations only marking edges deleted in the edge container. */ template -boost::graph_traits::ver_size_type +boost::graph_traits::edges_size_type num_edges(const EdgeListGraph& g); diff --git a/BGL/doc/BGL/Concepts/VertexListGraph.h b/BGL/doc/BGL/Concepts/VertexListGraph.h index 4f85afa651d..0b030083492 100644 --- a/BGL/doc/BGL/Concepts/VertexListGraph.h +++ b/BGL/doc/BGL/Concepts/VertexListGraph.h @@ -33,6 +33,6 @@ vertices(const VertexListGraph& g); This is the case for implementations only marking vertices deleted in the vertex container. */ template -boost::graph_traits::ver_size_type +boost::graph_traits::vertices_size_type num_vertices(const VertexListGraph& g); diff --git a/BGL/doc/BGL/NamedParameters.txt b/BGL/doc/BGL/NamedParameters.txt index 9100d01d6fd..f775e26ce48 100644 --- a/BGL/doc/BGL/NamedParameters.txt +++ b/BGL/doc/BGL/NamedParameters.txt @@ -1,6 +1,6 @@ /*! \defgroup bgl_namedparameters BGL Named Parameters -\ingroup PkgBGL +\ingroup PkgBGLRef The algorithms of the \sc{Bgl} often have many parameters with default values that are appropriate for most cases. In general, when no diff --git a/BGL/doc/BGL/PackageDescription.txt b/BGL/doc/BGL/PackageDescription.txt index 1aaf1804fbc..6ba2f1ba2d6 100644 --- a/BGL/doc/BGL/PackageDescription.txt +++ b/BGL/doc/BGL/PackageDescription.txt @@ -1,7 +1,7 @@ -/// \defgroup PkgBGL CGAL and the Boost Graph Library Reference +/// \defgroup PkgBGLRef CGAL and the Boost Graph Library Reference /*! \defgroup PkgBGLConcepts Concepts - \ingroup PkgBGL + \ingroup PkgBGLRef We extend the Boost Graph Library (\sc{Bgl} for short) with a set of new concepts. In order to make this documentation self-contained we here also document @@ -438,34 +438,34 @@ the requirement for traversal of all faces in a graph. /// The property tags model of the boost concept PropertyTag. /// These tags are used to retrieve default property maps using the traits class boost::property_map. /// \defgroup PkgBGLProperties Properties -/// \ingroup PkgBGL +/// \ingroup PkgBGLRef /// \defgroup PkgBGLPropertiesDynamic Dynamic Properties -/// \ingroup PkgBGL +/// \ingroup PkgBGLRef /// \defgroup PkgBGLHelper Helper Classes -/// \ingroup PkgBGL +/// \ingroup PkgBGLRef /// \defgroup PkgBGLHelperFct Helper Functions -/// \ingroup PkgBGL +/// \ingroup PkgBGLRef /// \defgroup PkgBGLIterators Iterators and Circulators -/// \ingroup PkgBGL +/// \ingroup PkgBGLRef /// \defgroup PkgBGLSelectionFct Selection Functions -/// \ingroup PkgBGL +/// \ingroup PkgBGLRef /// \defgroup PkgBGLAdaptors Graph Adaptors -/// \ingroup PkgBGL +/// \ingroup PkgBGLRef /// \defgroup PkgBGLEulerOperations Euler Operations -/// \ingroup PkgBGL +/// \ingroup PkgBGLRef /// \defgroup PkgBGLPartition Partitioning Operations -/// \ingroup PkgBGL +/// \ingroup PkgBGLRef /// \defgroup PkgBGLIOFct I/O Functions -/// \ingroup PkgBGL +/// \ingroup PkgBGLRef /*! \addtogroup PkgBGLPropertiesDynamic @@ -541,13 +541,13 @@ Methods to read and write graphs. /*! -\addtogroup PkgBGL -\cgalPkgDescriptionBegin{CGAL and the Boost Graph Library,PkgBGLSummary} +\addtogroup PkgBGLRef +\cgalPkgDescriptionBegin{CGAL and the Boost Graph Library,PkgBGL} \cgalPkgPicture{emst-detail.png} \cgalPkgSummaryBegin \cgalPkgAuthors{Andreas Fabri, Fernando Cacciola, Philipp Moeller, and Ron Wein} \cgalPkgDesc{This package provides a framework for interfacing \cgal data structures with the algorithms of the Boost Graph Library, or \sc{BGL} for short. It allows to run graph algorithms directly on \cgal data structures which are model of the \sc{BGL} graph concepts, for example the shortest path algorithm on a Delaunay triangulation in order to compute the Euclidean minimum spanning tree. Furthermore, it introduces several new graph concepts describing halfedge data structures.} -\cgalPkgManuals{Chapter_CGAL_and_the_Boost_Graph_Library,PkgBGL} +\cgalPkgManuals{Chapter_CGAL_and_the_Boost_Graph_Library,PkgBGLRef} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{3.3} diff --git a/BGL/doc/BGL/graph_traits.txt b/BGL/doc/BGL/graph_traits.txt index ce760aebcde..bbc9deabdd9 100644 --- a/BGL/doc/BGL/graph_traits.txt +++ b/BGL/doc/BGL/graph_traits.txt @@ -1,7 +1,7 @@ /*! \defgroup PkgBGLTraits Specializations of boost::graph_traits -\ingroup PkgBGL +\ingroup PkgBGLRef The \sc{Bgl} defines the class template `boost::graph_traits` diff --git a/BGL/examples/BGL_LCC/CMakeLists.txt b/BGL/examples/BGL_LCC/CMakeLists.txt index b503f39b9a0..1139bccedb8 100644 --- a/BGL/examples/BGL_LCC/CMakeLists.txt +++ b/BGL/examples/BGL_LCC/CMakeLists.txt @@ -4,7 +4,7 @@ project( BGL_LCC_Examples ) -cmake_minimum_required(VERSION 2.8.11) +cmake_minimum_required(VERSION 3.1) # CGAL and its components find_package( CGAL QUIET COMPONENTS ) @@ -16,10 +16,6 @@ if ( NOT CGAL_FOUND ) endif() -# include helper file -include( ${CGAL_USE_FILE} ) - - # Boost and its components find_package( Boost REQUIRED ) @@ -32,14 +28,10 @@ if ( NOT Boost_FOUND ) endif() # include for local directory -include_directories( BEFORE ../../include ) - # Creating entries for all C++ files with "main" routine # ########################################################## -include( CGAL_CreateSingleSourceCGALProgram ) - # create a target per cppfile file(GLOB_RECURSE cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.cpp) foreach(cppfile ${cppfiles}) diff --git a/BGL/examples/BGL_LCC/distance_lcc.cpp b/BGL/examples/BGL_LCC/distance_lcc.cpp index 452ffe9eb0c..2dec36620db 100644 --- a/BGL/examples/BGL_LCC/distance_lcc.cpp +++ b/BGL/examples/BGL_LCC/distance_lcc.cpp @@ -15,11 +15,11 @@ typedef CGAL::Linear_cell_complex_for_bgl_combinatorial_map_helper typedef boost::graph_traits::vertex_descriptor vertex_descriptor; typedef boost::graph_traits::vertex_iterator vertex_iterator; -int main(int, char** argv) +int main(int argc, char** argv) { LCC lcc; - CGAL::read_off(argv[1], lcc); - + CGAL::read_off((argc>1)?argv[1]:"cube.off", lcc); + // This is the vector where the distance gets written to std::vector distance(lcc.vertex_attributes().size()); diff --git a/BGL/examples/BGL_LCC/incident_vertices_lcc.cpp b/BGL/examples/BGL_LCC/incident_vertices_lcc.cpp index 5466b303bd0..2dcc9bb3699 100644 --- a/BGL/examples/BGL_LCC/incident_vertices_lcc.cpp +++ b/BGL/examples/BGL_LCC/incident_vertices_lcc.cpp @@ -46,10 +46,10 @@ OutputIterator adjacent_vertices_V2(const LCC& g, } -int main(int, char** argv) +int main(int argc, char** argv) { LCC lcc; - CGAL::read_off(argv[1], lcc); + CGAL::read_off((argc>1)?argv[1]:"cube.off", lcc); GraphTraits::vertex_iterator vi = vertices(lcc).first; std::list V; diff --git a/BGL/examples/BGL_LCC/normals_lcc.cpp b/BGL/examples/BGL_LCC/normals_lcc.cpp index 0563adb891e..3f2f4b29687 100644 --- a/BGL/examples/BGL_LCC/normals_lcc.cpp +++ b/BGL/examples/BGL_LCC/normals_lcc.cpp @@ -63,13 +63,13 @@ void calculate_face_normals(const HalfedgeGraph& g, } } -int main(int, char** argv) +int main(int argc, char** argv) { typedef boost::property_map::const_type Face_index_map; LCC lcc; - CGAL::read_off(argv[1], lcc); + CGAL::read_off((argc>1)?argv[1]:"cube.off", lcc); // Ad hoc property_map to store normals. Face_index_map is used to // map face_descriptors to a contiguous range of indices. See diff --git a/BGL/examples/BGL_LCC/range_lcc.cpp b/BGL/examples/BGL_LCC/range_lcc.cpp index 91e9a739877..f52254be8b6 100644 --- a/BGL/examples/BGL_LCC/range_lcc.cpp +++ b/BGL/examples/BGL_LCC/range_lcc.cpp @@ -55,10 +55,10 @@ void fct(const LCC& lcc) std::for_each(vb,ve, Fct()); } -int main(int, char** argv) +int main(int argc, char** argv) { LCC lcc; - CGAL::read_off(argv[1], lcc); + CGAL::read_off((argc>1)?argv[1]:"cube.off", lcc); fct(lcc); return 0; diff --git a/BGL/examples/BGL_LCC/transform_iterator_lcc.cpp b/BGL/examples/BGL_LCC/transform_iterator_lcc.cpp index 40f1f884fee..c865ce209b5 100644 --- a/BGL/examples/BGL_LCC/transform_iterator_lcc.cpp +++ b/BGL/examples/BGL_LCC/transform_iterator_lcc.cpp @@ -38,10 +38,10 @@ struct Source { } }; -int main(int, char** argv) +int main(int argc, char** argv) { LCC lcc; - CGAL::read_off(argv[1], lcc); + CGAL::read_off((argc>1)?argv[1]:"cube.off", lcc); GraphTraits::vertex_descriptor vd = *(vertices(lcc).first); typedef boost::transform_iterator,halfedge_around_target_iterator> adjacent_vertex_iterator; diff --git a/BGL/examples/BGL_OpenMesh/CMakeLists.txt b/BGL/examples/BGL_OpenMesh/CMakeLists.txt index 97f02a51da8..118d52a20df 100644 --- a/BGL/examples/BGL_OpenMesh/CMakeLists.txt +++ b/BGL/examples/BGL_OpenMesh/CMakeLists.txt @@ -4,7 +4,7 @@ project( BGL_OpenMesh_Examples ) -cmake_minimum_required(VERSION 2.8.11) +cmake_minimum_required(VERSION 3.1) # CGAL and its components find_package( CGAL QUIET COMPONENTS ) @@ -16,10 +16,6 @@ if ( NOT CGAL_FOUND ) endif() -# include helper file -include( ${CGAL_USE_FILE} ) - - # Boost and its components find_package( Boost REQUIRED ) @@ -45,14 +41,10 @@ endif() # include for local directory # include for local package -include_directories( BEFORE ../../include ) - # Creating entries for all C++ files with "main" routine # ########################################################## -include( CGAL_CreateSingleSourceCGALProgram ) - if(OpenMesh_FOUND) create_single_source_cgal_program( "TriMesh.cpp" ) target_link_libraries( TriMesh PRIVATE ${OPENMESH_LIBRARIES} ) diff --git a/BGL/examples/BGL_arrangement_2/CMakeLists.txt b/BGL/examples/BGL_arrangement_2/CMakeLists.txt index cd6170d2509..55c9036e43a 100644 --- a/BGL/examples/BGL_arrangement_2/CMakeLists.txt +++ b/BGL/examples/BGL_arrangement_2/CMakeLists.txt @@ -1,17 +1,11 @@ project( BGL_arrangement_2_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/BGL/examples/BGL_polyhedron_3/CMakeLists.txt b/BGL/examples/BGL_polyhedron_3/CMakeLists.txt index 098f6e17f07..9b1542ef967 100644 --- a/BGL/examples/BGL_polyhedron_3/CMakeLists.txt +++ b/BGL/examples/BGL_polyhedron_3/CMakeLists.txt @@ -4,7 +4,7 @@ project( BGL_polyhedron_3_Examples ) -cmake_minimum_required(VERSION 2.8.11) +cmake_minimum_required(VERSION 3.1) # CGAL and its components find_package( CGAL QUIET COMPONENTS ) @@ -16,10 +16,6 @@ if ( NOT CGAL_FOUND ) endif() -# include helper file -include( ${CGAL_USE_FILE} ) - - # Boost and its components find_package( Boost REQUIRED ) @@ -51,14 +47,10 @@ endif() # include for local directory # include for local package -include_directories( BEFORE ../../include ) - # Creating entries for all C++ files with "main" routine # ########################################################## -include( CGAL_CreateSingleSourceCGALProgram ) - create_single_source_cgal_program( "distance.cpp" ) create_single_source_cgal_program( "incident_vertices.cpp" ) diff --git a/BGL/examples/BGL_polyhedron_3/distance.cpp b/BGL/examples/BGL_polyhedron_3/distance.cpp index 51da1ac49d7..3cfc8e1aa0c 100644 --- a/BGL/examples/BGL_polyhedron_3/distance.cpp +++ b/BGL/examples/BGL_polyhedron_3/distance.cpp @@ -15,10 +15,10 @@ typedef boost::graph_traits::vertex_iterator vertex_iterator; -int main(int, char** argv) { +int main(int argc, char** argv) { Polyhedron P; - std::ifstream in(argv[1]); + std::ifstream in((argc>1)?argv[1]:"cube.off"); in >> P ; // associate indices to the vertices using the "id()" field of the vertex. diff --git a/BGL/examples/BGL_polyhedron_3/incident_vertices.cpp b/BGL/examples/BGL_polyhedron_3/incident_vertices.cpp index 6f7b8d24e00..4e79d97ca4f 100644 --- a/BGL/examples/BGL_polyhedron_3/incident_vertices.cpp +++ b/BGL/examples/BGL_polyhedron_3/incident_vertices.cpp @@ -44,9 +44,9 @@ adjacent_vertices_V2(const Polyhedron& g, } -int main(int, char** argv) +int main(int argc, char** argv) { - std::ifstream in(argv[1]); + std::ifstream in((argc>1)?argv[1]:"cube.off"); Polyhedron P; in >> P; GraphTraits::vertex_iterator vi = vertices(P).first; diff --git a/BGL/examples/BGL_polyhedron_3/normals.cpp b/BGL/examples/BGL_polyhedron_3/normals.cpp index eed947b01fd..efa95a34f72 100644 --- a/BGL/examples/BGL_polyhedron_3/normals.cpp +++ b/BGL/examples/BGL_polyhedron_3/normals.cpp @@ -63,14 +63,14 @@ void calculate_face_normals(const HalfedgeGraph& g, } } -int main(int, char** argv) +int main(int argc, char** argv) { typedef boost::property_map< Polyhedron, CGAL::face_index_t >::const_type Face_index_map; - std::ifstream in(argv[1]); + std::ifstream in((argc>1)?argv[1]:"cube.off"); Polyhedron P; in >> P ; diff --git a/BGL/examples/BGL_polyhedron_3/range.cpp b/BGL/examples/BGL_polyhedron_3/range.cpp index 35bac222042..4e4c11aa2a1 100644 --- a/BGL/examples/BGL_polyhedron_3/range.cpp +++ b/BGL/examples/BGL_polyhedron_3/range.cpp @@ -55,10 +55,10 @@ void fct(const Polyhedron& p) std::for_each(vb,ve, Fct()); } -int main(int, char** argv) +int main(int argc, char** argv) { Polyhedron P; - std::ifstream in(argv[1]); + std::ifstream in((argc>1)?argv[1]:"cube.off"); in >> P ; fct(P); diff --git a/BGL/examples/BGL_polyhedron_3/transform_iterator.cpp b/BGL/examples/BGL_polyhedron_3/transform_iterator.cpp index c03df6f0b7f..776805c7a09 100644 --- a/BGL/examples/BGL_polyhedron_3/transform_iterator.cpp +++ b/BGL/examples/BGL_polyhedron_3/transform_iterator.cpp @@ -37,9 +37,9 @@ struct Source { } }; -int main(int, char** argv) +int main(int argc, char** argv) { - std::ifstream in(argv[1]); + std::ifstream in((argc>1)?argv[1]:"cube.off"); Polyhedron P; in >> P; GraphTraits::vertex_descriptor vd = *(vertices(P).first); diff --git a/BGL/examples/BGL_surface_mesh/CMakeLists.txt b/BGL/examples/BGL_surface_mesh/CMakeLists.txt index 50736f8df6d..c885f703675 100644 --- a/BGL/examples/BGL_surface_mesh/CMakeLists.txt +++ b/BGL/examples/BGL_surface_mesh/CMakeLists.txt @@ -1,6 +1,6 @@ project( BGL_surface_mesh_Examples ) -cmake_minimum_required( VERSION 2.8.10 ) +cmake_minimum_required(VERSION 3.1) find_package( CGAL QUIET ) @@ -9,12 +9,7 @@ if ( NOT CGAL_FOUND ) return() endif() -include( ${CGAL_USE_FILE} ) - # include for local package -include_directories( BEFORE "../../include" ) - -include( CGAL_CreateSingleSourceCGALProgram ) create_single_source_cgal_program( "prim.cpp" ) create_single_source_cgal_program( "gwdwg.cpp" ) diff --git a/BGL/examples/BGL_surface_mesh/prim.cpp b/BGL/examples/BGL_surface_mesh/prim.cpp index 9a3e2d200ef..08ad8806170 100644 --- a/BGL/examples/BGL_surface_mesh/prim.cpp +++ b/BGL/examples/BGL_surface_mesh/prim.cpp @@ -13,11 +13,11 @@ typedef CGAL::Surface_mesh Mesh; typedef boost::graph_traits::vertex_descriptor vertex_descriptor; -int main(int, char* argv[]) +int main(int argc, char* argv[]) { Mesh P; //std::cin >> P; - std::ifstream in(argv[1]); + std::ifstream in((argc>1)?argv[1]:"data/prim.off"); in >> P; Mesh::Property_map predecessor; predecessor = P.add_property_map("v:predecessor").first; diff --git a/BGL/examples/BGL_triangulation_2/CMakeLists.txt b/BGL/examples/BGL_triangulation_2/CMakeLists.txt index c8d6a0b3145..b3e337d3040 100644 --- a/BGL/examples/BGL_triangulation_2/CMakeLists.txt +++ b/BGL/examples/BGL_triangulation_2/CMakeLists.txt @@ -1,24 +1,17 @@ project( BGL_triangulation_2_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) create_single_source_cgal_program( "${cppfile}" ) endforeach() - else() message(STATUS "This program requires the CGAL library, and will not be compiled.") diff --git a/BGL/include/CGAL/boost/graph/Seam_mesh.h b/BGL/include/CGAL/boost/graph/Seam_mesh.h index 8df36e3ff4c..429e38c98ee 100644 --- a/BGL/include/CGAL/boost/graph/Seam_mesh.h +++ b/BGL/include/CGAL/boost/graph/Seam_mesh.h @@ -1017,7 +1017,7 @@ public: /// of a vertex of the underlying mesh is given by its position /// in the container `tm_vds`. /// - /// \tparam VdContainer must be a model of SequenceContainer (that is, provide + /// \tparam VdContainer must be a model of `SequenceContainer` (that is, provide /// the functions: `operator[]` and `at()`). /// /// \returns one of the halfedges of the seam mesh that is on a seam. @@ -1062,7 +1062,7 @@ public: /// /// \returns one of the halfedges of the seam mesh that is on a seam. /// - /// \tparam VdContainer must be a model of SequenceContainer (that is, provide + /// \tparam VdContainer must be a model of `SequenceContainer` (that is, provide /// the functions: `operator[]` and `at()`). /// /// \pre filename should be the name of a CGAL selection file: edges are diff --git a/BGL/include/CGAL/boost/graph/helpers.h b/BGL/include/CGAL/boost/graph/helpers.h index 44bebed6a9f..c62b5c9ebba 100644 --- a/BGL/include/CGAL/boost/graph/helpers.h +++ b/BGL/include/CGAL/boost/graph/helpers.h @@ -794,6 +794,16 @@ make_quad(typename boost::graph_traits::vertex_descriptor v0, return opposite(h3,g); } +//default Functor for make_grid +template +struct Default_grid_maker + : public CGAL::Creator_uniform_3 +{ + Point operator()(const Size_type& i, const Size_type& j)const + { + return CGAL::Creator_uniform_3::operator ()(i,j,0); + } +}; } // namespace internal /** @@ -1249,6 +1259,7 @@ make_icosahedron( * * \brief Creates a row major ordered grid with `i` cells along the width and `j` cells * along the height and adds it to the graph `g`. + * An internal property map for `CGAL::vertex_point_t` must be available in `Graph`. * * \param i the number of cells along the width. * \param j the number of cells along the height. @@ -1257,19 +1268,14 @@ make_icosahedron( * \param triangulated decides if a cell is composed of one quad or two triangles. * If `triangulated` is `true`, the diagonal of each cell is oriented from (0,0) to (1,1) * in the cell coordinates. - * - * \tparam CoordinateFunctor that takes two `boost::graph_traits::%vertices_size_type` + *\tparam CoordinateFunctor a function object providing `Point_3 operator()(size_type I, size_type J)` with `Point_3` being + * the value_type of the internal property_map for `CGAL::vertex_point_t`. * and outputs a `boost::property_traits::%type>::%value_type`. + * It will be called with arguments (`w`, `h`), with `w` in [0..`i`] and `h` in [0..`j`]. *

%Default: a point with positive integer coordinates (`w`, `h`, 0), with `w` in [0..`i`] and `h` in [0..`j`] * \returns the non-border non-diagonal halfedge that has the target vertex associated with the first point of the grid (default is (0,0,0) ). */ -#ifndef DOXYGEN_RUNNING template -#else -template::vertices_size_type, - typename boost::property_traits::type>::value_type> > -#endif typename boost::graph_traits::halfedge_descriptor make_grid(typename boost::graph_traits::vertices_size_type i, typename boost::graph_traits::vertices_size_type j, @@ -1281,7 +1287,6 @@ make_grid(typename boost::graph_traits::vertices_size_type i, typedef typename boost::graph_traits::vertex_descriptor vertex_descriptor; typename boost::graph_traits::vertices_size_type w(i+1), h(j+1); Point_property_map vpmap = get(CGAL::vertex_point, g); - // create the initial icosahedron //create the vertices std::vector v_vertices; v_vertices.resize(static_cast(w*h)); @@ -1292,7 +1297,7 @@ make_grid(typename boost::graph_traits::vertices_size_type i, { for(typename boost::graph_traits::vertices_size_type b=0; b::vertices_size_type i, return halfedge(v_vertices[1], v_vertices[0], g).first; } -//default Functor + template typename boost::graph_traits::halfedge_descriptor make_grid(typename boost::graph_traits::vertices_size_type w, @@ -1340,7 +1345,7 @@ make_grid(typename boost::graph_traits::vertices_size_type w, { typedef typename boost::graph_traits::vertices_size_type Size_type; typedef typename boost::property_traits::type>::value_type Point; - return make_grid(w, h, g, CGAL::Creator_uniform_3(), triangulated); + return make_grid(w, h, g, internal::Default_grid_maker(), triangulated); } namespace internal { diff --git a/BGL/include/CGAL/boost/graph/iterator.h b/BGL/include/CGAL/boost/graph/iterator.h index fbbc6e81c9d..83b3c001d71 100644 --- a/BGL/include/CGAL/boost/graph/iterator.h +++ b/BGL/include/CGAL/boost/graph/iterator.h @@ -1281,7 +1281,7 @@ template Iterator_range > adjacent_vertices(typename boost::graph_traits::halfedge_descriptor h, const Graph& g) { - typedef Vertex_around_face_iterator I; + typedef Vertex_around_target_iterator I; return make_range(I(h,g), I(h,g,1)); } @@ -1290,7 +1290,7 @@ template Iterator_range > adjacent_vertices(typename boost::graph_traits::vertex_descriptor v, const Graph& g) { - typedef Vertex_around_face_iterator I; + typedef Vertex_around_target_iterator I; return make_range(I(halfedge(v,g),g), I(halfedge(v,g),g,1)); } diff --git a/BGL/include/CGAL/boost/graph/parameters_interface.h b/BGL/include/CGAL/boost/graph/parameters_interface.h index 01c9796e813..d2dd2208420 100644 --- a/BGL/include/CGAL/boost/graph/parameters_interface.h +++ b/BGL/include/CGAL/boost/graph/parameters_interface.h @@ -79,6 +79,8 @@ CGAL_add_named_parameter(throw_on_self_intersection_t, throw_on_self_intersectio CGAL_add_named_parameter(clip_volume_t, clip_volume, clip_volume) CGAL_add_named_parameter(use_compact_clipper_t, use_compact_clipper, use_compact_clipper) CGAL_add_named_parameter(output_iterator_t, output_iterator, output_iterator) +CGAL_add_named_parameter(erase_all_duplicates_t, erase_all_duplicates, erase_all_duplicates) +CGAL_add_named_parameter(require_same_orientation_t, require_same_orientation, require_same_orientation) // List of named parameters that we use in the package 'Surface Mesh Simplification' CGAL_add_named_parameter(get_cost_policy_t, get_cost_policy, get_cost) @@ -91,6 +93,7 @@ CGAL_add_named_parameter(do_project_t, do_project, do_project) //internal CGAL_add_named_parameter(weight_calculator_t, weight_calculator, weight_calculator) +CGAL_add_named_parameter(use_bool_op_to_clip_surface_t, use_bool_op_to_clip_surface, use_bool_op_to_clip_surface) // List of named parameters used in the Point Set Processing package CGAL_add_named_parameter(point_t, point_map, point_map) diff --git a/BGL/include/CGAL/boost/graph/partition.h b/BGL/include/CGAL/boost/graph/partition.h index 129e2421e13..a6bf761fccb 100644 --- a/BGL/include/CGAL/boost/graph/partition.h +++ b/BGL/include/CGAL/boost/graph/partition.h @@ -22,7 +22,7 @@ #define CGAL_BGL_PARTITION_H /** -* \ingroup PkgBGL +* \ingroup PkgBGLRef * \file CGAL/boost/graph/partition.h * Convenience header file including the headers for all the partitioning-related * free functions of this package. diff --git a/BGL/include/CGAL/boost/graph/properties.h b/BGL/include/CGAL/boost/graph/properties.h index c720256b591..9a86de3f6b8 100644 --- a/BGL/include/CGAL/boost/graph/properties.h +++ b/BGL/include/CGAL/boost/graph/properties.h @@ -26,6 +26,8 @@ #include #include #include +#include +#include #include #include @@ -267,7 +269,9 @@ struct Edge_index_accessor reference operator[](Handle h) const { return h.id(); } }; -template +template::type >::value> struct Point_accessor : boost::put_get_helper< Reference, Point_accessor > { @@ -279,6 +283,26 @@ struct Point_accessor reference operator[](Handle h) const { return h->point(); } }; +// partial specialization for const map to make them constructible from non-const map +template +struct Point_accessor + : boost::put_get_helper< ConstReference, Point_accessor > +{ + typedef boost::lvalue_property_map_tag category; + typedef ConstReference reference; + typedef ValueType value_type; + typedef Handle key_type; + + typedef typename boost::mpl::if_< boost::is_reference, + ValueType&, + ValueType >::type Reference; + + Point_accessor() {} + Point_accessor(Point_accessor) {} + + reference operator[](Handle h) const { return h->point(); } +}; + } // namespace internal // Needed by PMP::detec_features and Mesh_3 diff --git a/BGL/include/CGAL/boost/graph/property_maps.h b/BGL/include/CGAL/boost/graph/property_maps.h index 28f11307193..fb6c8b486da 100644 --- a/BGL/include/CGAL/boost/graph/property_maps.h +++ b/BGL/include/CGAL/boost/graph/property_maps.h @@ -73,6 +73,19 @@ struct Triangle_from_face_descriptor_map{ get(pmap.m_vpm, target(next(halfedge(f,tm),tm),tm)), get(pmap.m_vpm, source(halfedge(f,tm),tm)) ); } + + inline friend + reference + get(const Triangle_from_face_descriptor_map& pmap, + const std::pair& f) + { + typename boost::remove_const::type & tm = *(pmap.m_tm); + CGAL_precondition(halfedge(f.first,tm) == next(next(next(halfedge(f.first,tm),tm),tm),tm)); + + return value_type( get(pmap.m_vpm, target(halfedge(f.first,tm),tm)), + get(pmap.m_vpm, target(next(halfedge(f.first,tm),tm),tm)), + get(pmap.m_vpm, source(halfedge(f.first,tm),tm)) ); + } }; template < class PolygonMesh, @@ -114,6 +127,15 @@ struct Segment_from_edge_descriptor_map{ return value_type(get(pmap.m_vpm, source(h, *pmap.m_pm) ), get(pmap.m_vpm, target(h, *pmap.m_pm) ) ); } + + inline friend + reference + get(const Segment_from_edge_descriptor_map& pmap, + const std::pair& h) + { + return value_type(get(pmap.m_vpm, source(h.first, *pmap.m_pm) ), + get(pmap.m_vpm, target(h.first, *pmap.m_pm) ) ); + } }; //property map to access a point from a face_descriptor @@ -151,6 +173,14 @@ struct One_point_from_face_descriptor_map{ { return get(m.m_vpm, target(halfedge(f, *m.m_pm), *m.m_pm)); } + + inline friend + reference + get(const One_point_from_face_descriptor_map& m, + const std::pair& f) + { + return get(m.m_vpm, target(halfedge(f.first, *m.m_pm), *m.m_pm)); + } }; //property map to access a point from an edge @@ -187,6 +217,14 @@ struct Source_point_from_edge_descriptor_map{ { return get(pmap.m_vpm, source(h, *pmap.m_pm) ); } + + inline friend + reference + get(const Source_point_from_edge_descriptor_map& pmap, + const std::pair& h) + { + return get(pmap.m_vpm, source(h.first, *pmap.m_pm) ); + } }; } //namespace CGAL diff --git a/BGL/include/CGAL/boost/graph/selection.h b/BGL/include/CGAL/boost/graph/selection.h index 224d5f6b7e6..d44c297a696 100644 --- a/BGL/include/CGAL/boost/graph/selection.h +++ b/BGL/include/CGAL/boost/graph/selection.h @@ -570,14 +570,16 @@ void expand_face_selection_for_removal(const FaceRange& faces_to_be_deleted, vertex_descriptor vd = *vertices_queue.begin(); vertices_queue.erase( vertices_queue.begin() ); - // set hd to the last selected face of a connected component - // of selected faces around a vertex + // make sure hd is not a border halfedge halfedge_descriptor hd = halfedge(vd, tm); while(is_border(hd,tm) || ( !get(is_selected, face(hd, tm))) ) { hd = opposite( next(hd, tm), tm); CGAL_assertion( hd != halfedge(vd, tm) ); } + + // set hd to the last selected face of a connected component + // of selected faces around a vertex halfedge_descriptor start = hd; halfedge_descriptor next_around_vertex = opposite( next(hd, tm), tm); while(is_border(next_around_vertex,tm) || get(is_selected, face(next_around_vertex, tm) ) ) @@ -596,6 +598,9 @@ void expand_face_selection_for_removal(const FaceRange& faces_to_be_deleted, { faces_traversed.push_back(next_around_vertex); next_around_vertex = opposite( next(next_around_vertex, tm), tm); + if (is_border(next_around_vertex,tm)) + next_around_vertex = opposite( next(next_around_vertex, tm), tm); + CGAL_assertion(!is_border(next_around_vertex,tm)); } while( !get(is_selected, face(next_around_vertex, tm) ) ); @@ -640,7 +645,7 @@ bool is_selection_a_topological_disk(const FaceRange& face_selection, sel_edges.insert(edge(h,pm)); } } - return (sel_vertices.size() - sel_edges.size() + face_selection.size() == 1); + return (sel_vertices.size() - sel_edges.size() + face_selection.size() == 1); } } //end of namespace CGAL diff --git a/BGL/include/CGAL/boost/graph/split_graph_into_polylines.h b/BGL/include/CGAL/boost/graph/split_graph_into_polylines.h index 09fe353349b..2fc9ed6b461 100644 --- a/BGL/include/CGAL/boost/graph/split_graph_into_polylines.h +++ b/BGL/include/CGAL/boost/graph/split_graph_into_polylines.h @@ -203,7 +203,7 @@ void duplicate_terminal_vertices(Graph& graph, /*! -\ingroup PkgBGL +\ingroup PkgBGLRef splits into polylines the graph `g` at vertices of degree greater than 2 and at vertices for which `is_terminal(v,graph)==true`. The polylines are reported using a visitor. diff --git a/BGL/test/BGL/CMakeLists.txt b/BGL/test/BGL/CMakeLists.txt index 74efdb21fc3..8b6ef06e78d 100644 --- a/BGL/test/BGL/CMakeLists.txt +++ b/BGL/test/BGL/CMakeLists.txt @@ -4,7 +4,7 @@ project( BGL_Tests ) -cmake_minimum_required(VERSION 2.8.11) +cmake_minimum_required(VERSION 3.1) @@ -18,10 +18,6 @@ if ( NOT CGAL_FOUND ) endif() -# include helper file -include( ${CGAL_USE_FILE} ) - - # Boost and its components find_package( Boost ) @@ -42,13 +38,10 @@ endif() # include for local package -include_directories( BEFORE ../../include ) # Creating entries for all .cpp/.C files with "main" routine # ########################################################## -include( CGAL_CreateSingleSourceCGALProgram ) - if(OpenMesh_FOUND) create_single_source_cgal_program( "graph_concept_OpenMesh.cpp" ) target_link_libraries( graph_concept_OpenMesh PRIVATE ${OPENMESH_LIBRARIES} ) diff --git a/BGL/test/BGL/test_Manifold_face_removal.cpp b/BGL/test/BGL/test_Manifold_face_removal.cpp index f84b63175d5..851399d67cc 100644 --- a/BGL/test/BGL/test_Manifold_face_removal.cpp +++ b/BGL/test/BGL/test_Manifold_face_removal.cpp @@ -23,8 +23,8 @@ int main() // define my selection of faces to remove boost::unordered_map is_selected_map; - const int selection_indices[] = {501, 652, 646, 322, 328, 212, 347, 345, 352, 353, 696, 697, 698, 706, 714, 2892}; - std::set index_set(&selection_indices[0], &selection_indices[0]+16); + const int selection_indices[30] = {652,18,328,698,322,212,808,353,706,869,646,352,788,696,714,796,937,2892,374,697,227,501,786,794,345,16,21,581,347,723}; + std::set index_set(&selection_indices[0], &selection_indices[0]+30); std::vector faces_to_remove; int index = 0; @@ -40,6 +40,8 @@ int main() ++index; } + std::size_t nb_input_faces = sm.number_of_faces(); + expand_face_selection_for_removal(faces_to_remove, sm, boost::make_assoc_property_map(is_selected_map)); @@ -54,8 +56,10 @@ int main() } } - assert(index == 25); + CGAL_USE(nb_input_faces); + assert( sm.number_of_faces()+30 < nb_input_faces); assert(is_valid_polygon_mesh(sm)); + return 0; } diff --git a/BGL/test/BGL/test_cgal_bgl_named_params.cpp b/BGL/test/BGL/test_cgal_bgl_named_params.cpp index 22252abdd36..71cf1369565 100644 --- a/BGL/test/BGL/test_cgal_bgl_named_params.cpp +++ b/BGL/test/BGL/test_cgal_bgl_named_params.cpp @@ -85,6 +85,9 @@ void test(const NamedParameters& np) assert(get_param(np, CGAL::internal_np::throw_on_self_intersection).v == 43); assert(get_param(np, CGAL::internal_np::clip_volume).v == 44); assert(get_param(np, CGAL::internal_np::use_compact_clipper).v == 45); + assert(get_param(np, CGAL::internal_np::erase_all_duplicates).v == 48); + assert(get_param(np, CGAL::internal_np::require_same_orientation).v == 49); + assert(get_param(np, CGAL::internal_np::use_bool_op_to_clip_surface).v == 50); // Named parameters that we use in the package 'Surface Mesh Simplification' assert(get_param(np, CGAL::internal_np::get_cost_policy).v == 34); @@ -162,6 +165,9 @@ void test(const NamedParameters& np) check_same_type<43>(get_param(np, CGAL::internal_np::throw_on_self_intersection)); check_same_type<44>(get_param(np, CGAL::internal_np::clip_volume)); check_same_type<45>(get_param(np, CGAL::internal_np::use_compact_clipper)); + check_same_type<48>(get_param(np, CGAL::internal_np::erase_all_duplicates)); + check_same_type<49>(get_param(np, CGAL::internal_np::require_same_orientation)); + check_same_type<50>(get_param(np, CGAL::internal_np::use_bool_op_to_clip_surface)); // Named parameters that we use in the package 'Surface Mesh Simplification' check_same_type<34>(get_param(np, CGAL::internal_np::get_cost_policy)); @@ -239,8 +245,11 @@ int main() .throw_on_self_intersection(A<43>(43)) .clip_volume(A<44>(44)) .use_compact_clipper(A<45>(45)) + .use_bool_op_to_clip_surface(A<50>(50)) .apply_per_connected_component(A<46>(46)) .output_iterator(A<47>(47)) + .erase_all_duplicates(A<48>(48)) + .require_same_orientation(A<49>(49)) ); return EXIT_SUCCESS; diff --git a/BGL/test/BGL/test_circulator.cpp b/BGL/test/BGL/test_circulator.cpp index 8cd8ac1e6ec..1237d2e4801 100644 --- a/BGL/test/BGL/test_circulator.cpp +++ b/BGL/test/BGL/test_circulator.cpp @@ -30,7 +30,7 @@ typedef CGAL::Halfedge_around_target_iterator halfedge_around_target typedef CGAL::Halfedge_around_face_iterator halfedge_around_face_iterator; typedef CGAL::Face_around_face_iterator face_around_face_iterator; typedef CGAL::Vertex_around_target_iterator vertex_around_target_iterator; -int main(int, char* argv[]) +int main(int argc, char* argv[]) { BOOST_CONCEPT_ASSERT((CGAL::Concepts::BidirectionalCirculator)) CGAL_UNUSED; @@ -49,7 +49,7 @@ int main(int, char* argv[]) BOOST_CONCEPT_ASSERT((boost::BidirectionalIterator)) CGAL_UNUSED; BOOST_CONCEPT_ASSERT((boost::BidirectionalIterator)) CGAL_UNUSED; - std::ifstream in(argv[1]); + std::ifstream in((argc>1)?argv[1]:"data/cube.off"); Polyhedron P; in >> P; diff --git a/Barycentric_coordinates_2/doc/Barycentric_coordinates_2/Barycentric_coordinates_2.txt b/Barycentric_coordinates_2/doc/Barycentric_coordinates_2/Barycentric_coordinates_2.txt index da226aedf29..5c9edab1683 100644 --- a/Barycentric_coordinates_2/doc/Barycentric_coordinates_2/Barycentric_coordinates_2.txt +++ b/Barycentric_coordinates_2/doc/Barycentric_coordinates_2/Barycentric_coordinates_2.txt @@ -10,7 +10,7 @@ namespace CGAL { \section gbc_introduction Introduction -The package 2D Generalized Barycentric Coordinates offers an efficient and robust implementation of two-dimensional closed-form generalized barycentric coordinates defined for simple two-dimensional polygons. If coordinates with respect to multivariate scattered points instead of a polygon are required, please refer to natural neighbour coordinates from the package \ref PkgInterpolation2Summary "2D and Surface Function Interpolation". +The package 2D Generalized Barycentric Coordinates offers an efficient and robust implementation of two-dimensional closed-form generalized barycentric coordinates defined for simple two-dimensional polygons. If coordinates with respect to multivariate scattered points instead of a polygon are required, please refer to natural neighbour coordinates from the package \ref PkgInterpolation2 "2D and Surface Function Interpolation". In particular, the package includes an implementation of \ref wp_example "Wachspress", \ref mv_example "mean value", and \ref dh_example "discrete harmonic" coordinates and provides some extra functions to compute barycentric coordinates with respect to segments (\ref seg_example "segment coordinates") and triangles (\ref tri_example "triangle coordinates"). The section \ref gbc_theory gives a short introduction to the topic of barycentric coordinates. @@ -26,7 +26,7 @@ Segment and triangle coordinates can be computed by using either a global functi Any point in the plane may be taken as a query point. However, we do not recommend to use Wachspress and discrete harmonic coordinates with query points outside the closure of a polygon because at some of those points these coordinates are not well-defined, as explained in the Section \ref gbc_degeneracies. -Once instantiated for some polygon, the coordinates can be computed multiple times for different query points with respect to all the vertices of the provided polygon. Use the \ref PkgBarycentric_coordinates_2 "Reference Manual" for the detailed interface. +Once instantiated for some polygon, the coordinates can be computed multiple times for different query points with respect to all the vertices of the provided polygon. Use the \ref PkgBarycentricCoordinates2Ref "Reference Manual" for the detailed interface. The output of the computation is a set of coordinate values at the current query point with respect to all the vertices of the polygon. This output can be stored in an arbitrary container providing an appropriate output iterator. In addition, all the classes return a pointer to the last stored element and a status of the computation (Boolean true or false). @@ -85,7 +85,7 @@ This is an advanced example that shows how to use generalized barycentric coordi A 2D polygon with 50 vertices representing a piece of terrain with convex and concave parts. The height is not shown. \cgalFigureEnd -In this example we project a three-dimensional polygon orthogonally onto the two-dimensional plane using the class `CGAL::Projection_traits_xy_3`, triangulate its interior using the class `CGAL::Delaunay_mesher_2`, and compute mean value coordinates for all the obtained points with respect to all the polygon's vertices. Finally, we interpolate the height data from the polygon's boundary to its interior using the computed coordinates and the global interpolation function from the package \ref PkgInterpolation2Summary "2D and Surface Function Interpolation". +In this example we project a three-dimensional polygon orthogonally onto the two-dimensional plane using the class `CGAL::Projection_traits_xy_3`, triangulate its interior using the class `CGAL::Delaunay_mesher_2`, and compute mean value coordinates for all the obtained points with respect to all the polygon's vertices. Finally, we interpolate the height data from the polygon's boundary to its interior using the computed coordinates and the global interpolation function from the package \ref PkgInterpolation2 "2D and Surface Function Interpolation". \cgalExample{Barycentric_coordinates_2/Terrain_height_modeling.cpp} @@ -223,7 +223,7 @@ From the figure above it is easy to see that the \f$O(n^2)\f$ algorithm is as fa The generic design of the package was developed in 2013 by Dmitry Anisimov and David Bommes with many useful comments by Kai Hormann and Pierre Alliez. The package consists of 6 classes, 2 enumerations, and one namespace. Appropriate iterators are used to provide an efficient access to data and to pass them to one of the generic algorithms for computing coordinates. Once instantiated for a polygon (triangle, segment), the coordinates can be computed multiple times for different query points with respect to all the vertices of the provided polygon (triangle, segment). All the classes are fully templated and have a simple and similar design. In particular, we follow the same naming convention for all functions. Yet, the number of functions can differ from one class to another. -The implemented algorithms for computing coordinates do not depend on a particular kernel, and all the coordinates can be computed exactly, if an exact kernel is used, apart from mean value coordinates. The latter coordinates involve a square root operation, which results in a slightly worse precision with exact data types due to temporal conversion into a floating point type. The computed coordinates can be stored in an arbitrary container if an appropriate output iterator is provided. +The implemented algorithms for computing coordinates do not depend on a particular kernel, and all the coordinates can be computed exactly, if an exact kernel is used, apart from mean value coordinates. The latter coordinates involve a square root operation, which results in a slightly worse precision with exact data types due to temporal conversion into a floating point type. The computed coordinates can be stored in an arbitrary container if an appropriate output iterator is provided. It is worth noting that the class `CGAL::Barycentric_coordinates::Segment_coordinates_2` is used to compute generalized barycentric coordinates along the polygon's boundary. Hence, one can use the trick for segment coordinates from Section \ref gbc_degeneracies if one is convinced that a point must lie exactly on the polygon's boundary but due to some numerical instabilities it does not. @@ -256,7 +256,7 @@ Analogously to the previous cases, we want to plot the Wachspress coordinates an The Wachspress coordinate function with respect to the indicated vertex with values from zero to one as the colour bar indicates. \cgalFigureEnd -Another type of generalized barycentric coordinates goes back to Pinkall and Polthier in 1993 \cite cgal:pp-cdmsc-93 and Eck et al. in 1995 \cite cgal:bc:eddhls-maam-95 in the context of \ref PkgSurfaceParameterizationSummary "triangle mesh parameterization". They are called discrete harmonic coordinates. \ref gbc_deg_discrete_harmonic_coordinates "These coordinates" are well-defined, similarly to Wachspress coordinates, for arbitrary strictly convex polygons and inherit all the properties of triangle coordinates apart from the positivity inside a polygon because they can take on negative values \ref gbc_deg_discrete_harmonic_coordinates "for some polygons". Another interesting property of these coordinate functions is that they coincide with Wachspress coordinates for any polygon whose vertices lie on a common circle. +Another type of generalized barycentric coordinates goes back to Pinkall and Polthier in 1993 \cite cgal:pp-cdmsc-93 and Eck et al. in 1995 \cite cgal:bc:eddhls-maam-95 in the context of \ref PkgSurfaceMeshParameterization "triangle mesh parameterization". They are called discrete harmonic coordinates. \ref gbc_deg_discrete_harmonic_coordinates "These coordinates" are well-defined, similarly to Wachspress coordinates, for arbitrary strictly convex polygons and inherit all the properties of triangle coordinates apart from the positivity inside a polygon because they can take on negative values \ref gbc_deg_discrete_harmonic_coordinates "for some polygons". Another interesting property of these coordinate functions is that they coincide with Wachspress coordinates for any polygon whose vertices lie on a common circle. To plot discrete harmonic coordinates we take \ref wp_plot "the same polygon" as for Wachspress coordinates and plot the coordinate function with respect to the same vertex. Again, we get a smooth function, which is linear along all edges and grows from zero to one. Isolines in the plot show the difference between discrete harmonic and Wachspress coordinates for the chosen polygon and vertex. @@ -265,7 +265,7 @@ To plot discrete harmonic coordinates we take \ref wp_plot "the same polygon" as The discrete harmonic coordinate function with respect to the indicated vertex with values from zero to one as the colour bar indicates. \cgalFigureEnd -The last type of generalized barycentric coordinates that we discuss are mean value coordinates \cite cgal:f-mvc-03 proposed by M. Floater in 2003. Based on the mean value theorem, \ref gbc_deg_mean_value_coordinates "these coordinates", unlike Wachspress and discrete harmonic coordinates, are well-defined for arbitrary simple polygons, inherit all the properties of triangle coordinates for any convex polygon, and lack only the positivity property for general concave polygons. Hormann and Floater prove in \cite cgal:bc:hf-mvcapp-06 that these coordinates are positive inside the kernel of a star-shaped polygon. They are also positive in the closure of any quadrilateral. Like discrete harmonic weights, mean value weights are often used in the context of \ref PkgSurfaceParameterizationSummary "triangle mesh parameterization." +The last type of generalized barycentric coordinates that we discuss are mean value coordinates \cite cgal:f-mvc-03 proposed by M. Floater in 2003. Based on the mean value theorem, \ref gbc_deg_mean_value_coordinates "these coordinates", unlike Wachspress and discrete harmonic coordinates, are well-defined for arbitrary simple polygons, inherit all the properties of triangle coordinates for any convex polygon, and lack only the positivity property for general concave polygons. Hormann and Floater prove in \cite cgal:bc:hf-mvcapp-06 that these coordinates are positive inside the kernel of a star-shaped polygon. They are also positive in the closure of any quadrilateral. Like discrete harmonic weights, mean value weights are often used in the context of \ref PkgSurfaceMeshParameterization "triangle mesh parameterization." In order to show the particular behaviour of mean value coordinates with an application to concave polygons, we take \ref fig__mv__example "a star-shaped polygon" with ten vertices \f$[v_0, \dots, v_9]\f$, sample its interior and boundary, and plot the coordinate function with respect to the fourth vertex \f$v_3\f$. As the colour bar indicates, the obtained function grows from a slightly negative value to one at the chosen vertex. It is also smooth inside the polygon and linear along all edges. diff --git a/Barycentric_coordinates_2/doc/Barycentric_coordinates_2/Concepts/BarycentricCoordinates_2.h b/Barycentric_coordinates_2/doc/Barycentric_coordinates_2/Concepts/BarycentricCoordinates_2.h index 961c9de9c45..3d90dd14ef9 100644 --- a/Barycentric_coordinates_2/doc/Barycentric_coordinates_2/Concepts/BarycentricCoordinates_2.h +++ b/Barycentric_coordinates_2/doc/Barycentric_coordinates_2/Concepts/BarycentricCoordinates_2.h @@ -1,5 +1,5 @@ /*! -\ingroup PkgBarycentric_coordinates_2Concepts +\ingroup PkgBarycentricCoordinates2Concepts \cgalConcept Requirements of the template parameter `Coordinate_2` for the class `CGAL::Barycentric_coordinates::Generalized_barycentric_coordinates_2`. diff --git a/Barycentric_coordinates_2/doc/Barycentric_coordinates_2/Concepts/BarycentricTraits_2.h b/Barycentric_coordinates_2/doc/Barycentric_coordinates_2/Concepts/BarycentricTraits_2.h index b79617eea76..ae63a83a518 100644 --- a/Barycentric_coordinates_2/doc/Barycentric_coordinates_2/Concepts/BarycentricTraits_2.h +++ b/Barycentric_coordinates_2/doc/Barycentric_coordinates_2/Concepts/BarycentricTraits_2.h @@ -1,5 +1,5 @@ /*! -\ingroup PkgBarycentric_coordinates_2Concepts +\ingroup PkgBarycentricCoordinates2Concepts \cgalConcept Requirements of the template parameter `Traits` for all the classes with two-dimensional barycentric coordinates from the namespace `CGAL::Barycentric_coordinates`. diff --git a/Barycentric_coordinates_2/doc/Barycentric_coordinates_2/PackageDescription.txt b/Barycentric_coordinates_2/doc/Barycentric_coordinates_2/PackageDescription.txt index 29cae2cd33c..73e02ea085b 100644 --- a/Barycentric_coordinates_2/doc/Barycentric_coordinates_2/PackageDescription.txt +++ b/Barycentric_coordinates_2/doc/Barycentric_coordinates_2/PackageDescription.txt @@ -1,17 +1,17 @@ -/// \defgroup PkgBarycentric_coordinates_2 2D Generalized Barycentric Coordinates Reference +/// \defgroup PkgBarycentricCoordinates2Ref 2D Generalized Barycentric Coordinates Reference -/// \defgroup PkgBarycentric_coordinates_2Concepts Concepts -/// \ingroup PkgBarycentric_coordinates_2 +/// \defgroup PkgBarycentricCoordinates2Concepts Concepts +/// \ingroup PkgBarycentricCoordinates2Ref /*! -\addtogroup PkgBarycentric_coordinates_2 -\cgalPkgDescriptionBegin{2D Generalized Barycentric Coordinates, PkgBarycentric_coordinates_2Summary} +\addtogroup PkgBarycentricCoordinates2Ref +\cgalPkgDescriptionBegin{2D Generalized Barycentric Coordinates, PkgBarycentricCoordinates2} \cgalPkgPicture{barcoord_thumb.png} \cgalPkgSummaryBegin \cgalPkgAuthors{Dmitry Anisimov, David Bommes, Kai Hormann, and Pierre Alliez} -\cgalPkgDesc{The package 2D Generalized Barycentric Coordinates offers an efficient and robust implementation of two-dimensional closed-form generalized barycentric coordinates defined for simple two-dimensional polygons. If coordinates with respect to multivariate scattered points instead of a polygon are required, please refer to natural neighbor coordinates from the Package \ref PkgInterpolation2Summary.} -\cgalPkgManuals{Chapter_2D_Generalized_Barycentric_Coordinates, PkgBarycentric_coordinates_2} +\cgalPkgDesc{The package 2D Generalized Barycentric Coordinates offers an efficient and robust implementation of two-dimensional closed-form generalized barycentric coordinates defined for simple two-dimensional polygons. If coordinates with respect to multivariate scattered points instead of a polygon are required, please refer to natural neighbor coordinates from the Package \ref PkgInterpolation2.} +\cgalPkgManuals{Chapter_2D_Generalized_Barycentric_Coordinates, PkgBarycentricCoordinates2Ref} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{4.6} diff --git a/Barycentric_coordinates_2/examples/Barycentric_coordinates_2/CMakeLists.txt b/Barycentric_coordinates_2/examples/Barycentric_coordinates_2/CMakeLists.txt index 2622051db08..afb44332279 100644 --- a/Barycentric_coordinates_2/examples/Barycentric_coordinates_2/CMakeLists.txt +++ b/Barycentric_coordinates_2/examples/Barycentric_coordinates_2/CMakeLists.txt @@ -4,18 +4,12 @@ project( Barycentric_coordinates_2_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Barycentric_coordinates_2/include/CGAL/Barycentric_coordinates_2/Discrete_harmonic_2.h b/Barycentric_coordinates_2/include/CGAL/Barycentric_coordinates_2/Discrete_harmonic_2.h index 5ab84f16885..c906a697198 100644 --- a/Barycentric_coordinates_2/include/CGAL/Barycentric_coordinates_2/Discrete_harmonic_2.h +++ b/Barycentric_coordinates_2/include/CGAL/Barycentric_coordinates_2/Discrete_harmonic_2.h @@ -49,7 +49,7 @@ namespace Barycentric_coordinates { // [1] Reference: "M. S. Floater, K. Hormann, and G. Kos. A general construction of barycentric coordinates over convex polygons. Advances in Computational Mathematics, 24(1-4):311-331, 2006.". /*! - * \ingroup PkgBarycentric_coordinates_2 + * \ingroup PkgBarycentricCoordinates2Ref * The class `Discrete_harmonic_2` implements 2D discrete harmonic coordinates ( \cite cgal:bc:fhk-gcbcocp-06, \cite cgal:pp-cdmsc-93, \cite cgal:bc:eddhls-maam-95 ). * This class is parameterized by a traits class `Traits`, and it is used as a coordinate class to complete the class `Generalized_barycentric_coordinates_2`. * For a polygon with three vertices (triangle) it is better to use the class `Triangle_coordinates_2`. diff --git a/Barycentric_coordinates_2/include/CGAL/Barycentric_coordinates_2/Generalized_barycentric_coordinates_2.h b/Barycentric_coordinates_2/include/CGAL/Barycentric_coordinates_2/Generalized_barycentric_coordinates_2.h index 4bce42d7680..5a214236086 100644 --- a/Barycentric_coordinates_2/include/CGAL/Barycentric_coordinates_2/Generalized_barycentric_coordinates_2.h +++ b/Barycentric_coordinates_2/include/CGAL/Barycentric_coordinates_2/Generalized_barycentric_coordinates_2.h @@ -48,7 +48,7 @@ namespace Barycentric_coordinates { // Examples: see the User Manual here - https://doc.cgal.org/latest/Manual/index.html. /*! - * \ingroup PkgBarycentric_coordinates_2 + * \ingroup PkgBarycentricCoordinates2Ref * The class `Generalized_barycentric_coordinates_2` implements generalized barycentric coordinates along the polygon's boundary and provides a common interface for all coordinate classes. * This class is parameterized by a coordinate class `Coordinate_2`, and a traits class `Traits`. diff --git a/Barycentric_coordinates_2/include/CGAL/Barycentric_coordinates_2/Mean_value_2.h b/Barycentric_coordinates_2/include/CGAL/Barycentric_coordinates_2/Mean_value_2.h index e44a126dc56..af15ec92ac8 100644 --- a/Barycentric_coordinates_2/include/CGAL/Barycentric_coordinates_2/Mean_value_2.h +++ b/Barycentric_coordinates_2/include/CGAL/Barycentric_coordinates_2/Mean_value_2.h @@ -101,7 +101,7 @@ public: // [2] Reference: "M. S. Floater, Wachspress and mean value coordinates, to appear in the Proceedings of the 14th International Conference on Approximation Theory, G. Fasshauer and L. L. Schumaker (eds.)." /*! - * \ingroup PkgBarycentric_coordinates_2 + * \ingroup PkgBarycentricCoordinates2Ref * The class `Mean_value_2` implements 2D mean value coordinates ( \cite cgal:bc:hf-mvcapp-06, \cite cgal:bc:fhk-gcbcocp-06, \cite cgal:f-mvc-03 ). * This class is parameterized by a traits class `Traits`, and it is used as a coordinate class to complete the class `Generalized_barycentric_coordinates_2`. * For a polygon with three vertices (triangle) it is better to use the class `Triangle_coordinates_2`. diff --git a/Barycentric_coordinates_2/include/CGAL/Barycentric_coordinates_2/Segment_coordinates_2.h b/Barycentric_coordinates_2/include/CGAL/Barycentric_coordinates_2/Segment_coordinates_2.h index 34fe8b3ba3b..cbd74d8fb21 100644 --- a/Barycentric_coordinates_2/include/CGAL/Barycentric_coordinates_2/Segment_coordinates_2.h +++ b/Barycentric_coordinates_2/include/CGAL/Barycentric_coordinates_2/Segment_coordinates_2.h @@ -48,7 +48,7 @@ namespace Barycentric_coordinates { // Examples: see the User Manual - https://doc.cgal.org/latest/Manual/index.html. /*! - * \ingroup PkgBarycentric_coordinates_2 + * \ingroup PkgBarycentricCoordinates2Ref * The class `Segment_coordinates_2` implements barycentric coordinates with respect to an arbitrary non-degenerate segment along an arbitrary line in the plane. * This class is parameterized by a traits class `Traits`. diff --git a/Barycentric_coordinates_2/include/CGAL/Barycentric_coordinates_2/Triangle_coordinates_2.h b/Barycentric_coordinates_2/include/CGAL/Barycentric_coordinates_2/Triangle_coordinates_2.h index 8ef6af47752..8d8222db4aa 100644 --- a/Barycentric_coordinates_2/include/CGAL/Barycentric_coordinates_2/Triangle_coordinates_2.h +++ b/Barycentric_coordinates_2/include/CGAL/Barycentric_coordinates_2/Triangle_coordinates_2.h @@ -49,7 +49,7 @@ namespace Barycentric_coordinates { // [1] Reference: Weisstein, Eric W. "Barycentric Coordinates." From MathWorld--A Wolfram Web Resource. http://mathworld.wolfram.com/BarycentricCoordinates.html. /*! - * \ingroup PkgBarycentric_coordinates_2 + * \ingroup PkgBarycentricCoordinates2Ref * The class `Triangle_coordinates_2` implements barycentric coordinates ( [1], * [2] ) with respect to an arbitrary non-degenerate triangle in the plane. * This class is parameterized by a traits class `Traits`. diff --git a/Barycentric_coordinates_2/include/CGAL/Barycentric_coordinates_2/Wachspress_2.h b/Barycentric_coordinates_2/include/CGAL/Barycentric_coordinates_2/Wachspress_2.h index 09209606660..0e9d42fa317 100644 --- a/Barycentric_coordinates_2/include/CGAL/Barycentric_coordinates_2/Wachspress_2.h +++ b/Barycentric_coordinates_2/include/CGAL/Barycentric_coordinates_2/Wachspress_2.h @@ -49,7 +49,7 @@ namespace Barycentric_coordinates { // [1] Reference: "M. S. Floater, K. Hormann, and G. Kos. A general construction of barycentric coordinates over convex polygons. Advances in Computational Mathematics, 24(1-4):311-331, 2006.". /*! - * \ingroup PkgBarycentric_coordinates_2 + * \ingroup PkgBarycentricCoordinates2Ref * The class `Wachspress_2` implements 2D Wachspress coordinates ( \cite cgal:bc:fhk-gcbcocp-06, \cite cgal:bc:mlbd-gbcip-02, \cite cgal:bc:w-rfeb-75 ). * This class is parameterized by a traits class `Traits`, and it is used as a coordinate class to complete the class `Generalized_barycentric_coordinates_2`. * For a polygon with three vertices it is better to use the class `Triangle_coordinates_2`. diff --git a/Barycentric_coordinates_2/include/CGAL/Barycentric_coordinates_2/barycentric_enum_2.h b/Barycentric_coordinates_2/include/CGAL/Barycentric_coordinates_2/barycentric_enum_2.h index 3f8fe3541ca..9f79c0227bd 100644 --- a/Barycentric_coordinates_2/include/CGAL/Barycentric_coordinates_2/barycentric_enum_2.h +++ b/Barycentric_coordinates_2/include/CGAL/Barycentric_coordinates_2/barycentric_enum_2.h @@ -32,7 +32,7 @@ namespace CGAL { /*! - * \ingroup PkgBarycentric_coordinates_2 + * \ingroup PkgBarycentricCoordinates2Ref * The namespace Barycentric_coordinates contains implementations of all generalized barycentric coordinates: 2D, 3D, related enumerations, and so on. */ diff --git a/Barycentric_coordinates_2/test/Barycentric_coordinates_2/CMakeLists.txt b/Barycentric_coordinates_2/test/Barycentric_coordinates_2/CMakeLists.txt index 276306dbbba..1d55dbc2fd2 100644 --- a/Barycentric_coordinates_2/test/Barycentric_coordinates_2/CMakeLists.txt +++ b/Barycentric_coordinates_2/test/Barycentric_coordinates_2/CMakeLists.txt @@ -4,18 +4,12 @@ project( Barycentric_coordinates_2_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Boolean_set_operations_2/archive/demo/Boolean_set_operations_2_GraphicsView/CMakeLists.txt b/Boolean_set_operations_2/archive/demo/Boolean_set_operations_2_GraphicsView/CMakeLists.txt index 87cc1896278..2a05bfa5c19 100644 --- a/Boolean_set_operations_2/archive/demo/Boolean_set_operations_2_GraphicsView/CMakeLists.txt +++ b/Boolean_set_operations_2/archive/demo/Boolean_set_operations_2_GraphicsView/CMakeLists.txt @@ -11,13 +11,10 @@ endif() find_package(CGAL COMPONENTS Qt5 Core ) -include(${CGAL_USE_FILE}) - set( QT_USE_QTMAIN TRUE ) find_package(Qt5 QUIET COMPONENTS Widgets Script Svg) -include_directories (BEFORE ${CMAKE_CURRENT_SOURCE_DIR}/../../include ) include_directories (BEFORE ${CMAKE_CURRENT_BINARY_DIR}) include_directories (BEFORE ${CMAKE_CURRENT_SOURCE_DIR}/include ) diff --git a/Boolean_set_operations_2/doc/Boolean_set_operations_2/Boolean_set_operations_2.txt b/Boolean_set_operations_2/doc/Boolean_set_operations_2/Boolean_set_operations_2.txt index fefab6d04e6..f62ef5d35b8 100644 --- a/Boolean_set_operations_2/doc/Boolean_set_operations_2/Boolean_set_operations_2.txt +++ b/Boolean_set_operations_2/doc/Boolean_set_operations_2/Boolean_set_operations_2.txt @@ -23,7 +23,7 @@ intersection predicates, and point containment predicates. Ordinary Boolean set-operations, which distinguish between the interior and the boundary of a polygon, are not implemented within this -package. The Chapter \ref PkgNef2Summary supports these operations for (linear) +package. The Chapter \ref PkgNef2 supports these operations for (linear) polygons. In the rest of this chapter we use, unless otherwise stated, the diff --git a/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/Boolean_set_operations_2.h b/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/Boolean_set_operations_2.h index 4c918fffd2b..f22267db575 100644 --- a/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/Boolean_set_operations_2.h +++ b/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/Boolean_set_operations_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! \addtogroup boolean_complement Complement Functions -\ingroup PkgBooleanSetOperations2 +\ingroup PkgBooleanSetOperations2Ref \anchor ref_bso_complement The `complement` function is overloaded. Depending on the @@ -58,7 +58,7 @@ namespace CGAL { /*! \addtogroup boolean_difference Difference Functions -\ingroup PkgBooleanSetOperations2 +\ingroup PkgBooleanSetOperations2Ref \anchor ref_bso_difference Each one of these functions computes the difference between two given @@ -181,7 +181,7 @@ namespace CGAL { /*! \addtogroup boolean_do_intersect Intersection Testing Functions -\ingroup PkgBooleanSetOperations2 +\ingroup PkgBooleanSetOperations2Ref \anchor ref_bso_do_intersect Each one of these functions computes if the interior of two given @@ -305,7 +305,7 @@ namespace CGAL { /*! \addtogroup boolean_intersection Intersection Functions -\ingroup PkgBooleanSetOperations2 +\ingroup PkgBooleanSetOperations2Ref \anchor ref_bso_intersection Each one of these functions computes the intersection of two given @@ -467,7 +467,7 @@ namespace CGAL { /*! \addtogroup boolean_join Union Functions -\ingroup PkgBooleanSetOperations2 +\ingroup PkgBooleanSetOperations2Ref \anchor ref_bso_union Each one of these functions computes the union of two given polygons @@ -621,7 +621,7 @@ OutputIterator oi); namespace CGAL { /*! \addtogroup boolean_oriented_side Oriented Side Functions -\ingroup PkgBooleanSetOperations2 +\ingroup PkgBooleanSetOperations2Ref \anchor ref_bso_oriented_side Each one of these functions returns `ON_POSITIVE_SIDE` if the two @@ -706,7 +706,7 @@ namespace CGAL { /*! \addtogroup boolean_symmetric_difference Symmetric Difference Functions -\ingroup PkgBooleanSetOperations2 +\ingroup PkgBooleanSetOperations2Ref \anchor ref_bso_symmetric_difference Each one of these functions computes the symmetric difference between diff --git a/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/Boolean_set_operations_2/Gps_default_dcel.h b/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/Boolean_set_operations_2/Gps_default_dcel.h index f15067d1cfb..a70de3fc84d 100644 --- a/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/Boolean_set_operations_2/Gps_default_dcel.h +++ b/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/Boolean_set_operations_2/Gps_default_dcel.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgBooleanSetOperations2 +\ingroup PkgBooleanSetOperations2Ref An instance of this template serves as a basis type for any face record of the Dcel class used by instances of the @@ -22,7 +22,7 @@ further. class Gps_face_base : public Arr_face_base {}; /*! -\ingroup PkgBooleanSetOperations2 +\ingroup PkgBooleanSetOperations2Ref An instance of this teplate serves as a basis type for any halfedge record of the Dcel class used by instances of the @@ -44,7 +44,7 @@ class Gps_halfedge_base : public Arr_halfedge_base {}; /*! -\ingroup PkgBooleanSetOperations2 +\ingroup PkgBooleanSetOperations2Ref The default Dcel class template used by the `General_polygon_set_2` and `General_polygon_with_holes_2` class templates. diff --git a/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/General_polygon_2.h b/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/General_polygon_2.h index 0eef1b3b4bf..9f1b175d383 100644 --- a/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/General_polygon_2.h +++ b/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/General_polygon_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgBooleanSetOperations2 +\ingroup PkgBooleanSetOperations2Ref The class `General_polygon_2` models the concept `GeneralPolygon_2`. It represents a simple general-polygon. It is parameterized with the type diff --git a/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/General_polygon_set_2.h b/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/General_polygon_set_2.h index fbaf40f38b8..c11787975f8 100644 --- a/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/General_polygon_set_2.h +++ b/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/General_polygon_set_2.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgBooleanSetOperations2 +\ingroup PkgBooleanSetOperations2Ref An object of the `General_polygon_set_2` class-template represents a point set in the plane bounded by \f$ x\f$ monotone curves. Points in the set diff --git a/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/Gps_circle_segment_traits_2.h b/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/Gps_circle_segment_traits_2.h index de13d563186..663c1d11a4c 100644 --- a/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/Gps_circle_segment_traits_2.h +++ b/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/Gps_circle_segment_traits_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgBooleanSetOperations2 +\ingroup PkgBooleanSetOperations2Ref The traits class `Gps_circle_segment_traits_2` models the `GeneralPolygonSetTraits_2` concept. It enables Boolean set-operations on general polygons bounded by diff --git a/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/Gps_segment_traits_2.h b/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/Gps_segment_traits_2.h index adc2521cbfa..536b7dddd40 100644 --- a/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/Gps_segment_traits_2.h +++ b/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/Gps_segment_traits_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgBooleanSetOperations2 +\ingroup PkgBooleanSetOperations2Ref \cgalModels `GeneralPolygonSetTraits_2` diff --git a/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/Gps_traits_2.h b/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/Gps_traits_2.h index cb5172cbf06..d5155423f8e 100644 --- a/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/Gps_traits_2.h +++ b/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/Gps_traits_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgBooleanSetOperations2 +\ingroup PkgBooleanSetOperations2Ref The traits class `Gps_traits_2` models the concept `GeneralPolygonSetTraits_2`. It inherits from the instantiated diff --git a/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/Polygon_set_2.h b/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/Polygon_set_2.h index 1e9b5211e9a..3ed0e9cc728 100644 --- a/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/Polygon_set_2.h +++ b/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/Polygon_set_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgBooleanSetOperations2 +\ingroup PkgBooleanSetOperations2Ref The class `Polygon_set_2` represents sets of linear polygons with holes. The first two template parameters (`Kernel` and `Container`) diff --git a/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/connect_holes.h b/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/connect_holes.h index 939c8566e9f..928c0d1fc96 100644 --- a/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/connect_holes.h +++ b/Boolean_set_operations_2/doc/Boolean_set_operations_2/CGAL/connect_holes.h @@ -2,7 +2,7 @@ namespace CGAL { /*! \addtogroup boolean_connect_holes Functions on Polygon with Holes -\ingroup PkgBooleanSetOperations2 +\ingroup PkgBooleanSetOperations2Ref \anchor ref_bso_connect_holes diff --git a/Boolean_set_operations_2/doc/Boolean_set_operations_2/PackageDescription.txt b/Boolean_set_operations_2/doc/Boolean_set_operations_2/PackageDescription.txt index c9570ed6982..11947d410d4 100644 --- a/Boolean_set_operations_2/doc/Boolean_set_operations_2/PackageDescription.txt +++ b/Boolean_set_operations_2/doc/Boolean_set_operations_2/PackageDescription.txt @@ -1,24 +1,24 @@ -/// \defgroup PkgBooleanSetOperations2 2D Regularized Boolean Set-Operations Reference +/// \defgroup PkgBooleanSetOperations2Ref 2D Regularized Boolean Set-Operations Reference /// \defgroup PkgBooleanSetOperations2Concepts Concepts -/// \ingroup PkgBooleanSetOperations2 +/// \ingroup PkgBooleanSetOperations2Ref /// \cgalConceptNamespace /// The namespace containing concepts specific to 2D Boolean Set Operations. namespace ArrDirectionalTraits {} /*! -\addtogroup PkgBooleanSetOperations2 +\addtogroup PkgBooleanSetOperations2Ref \todo check generated documentation -\cgalPkgDescriptionBegin{2D Regularized Boolean Set-Operations,PkgBooleanSetOperations2Summary} +\cgalPkgDescriptionBegin{2D Regularized Boolean Set-Operations,PkgBooleanSetOperations2} \cgalPkgPicture{Boolean_set_operations_2.png} \cgalPkgSummaryBegin \cgalPkgAuthors{Efi Fogel, Ophir Setter, Ron Wein, Guy Zucker, Baruch Zukerman, and Dan Halperin} \cgalPkgDesc{This package consists of the implementation of Boolean set-operations on point sets bounded by weakly x-monotone curves in 2-dimensional Euclidean space. In particular, it contains the implementation of regularized Boolean set-operations, intersection predicates, and point containment predicates.} -\cgalPkgManuals{Chapter_2D_Regularized_Boolean_Set-Operations,PkgBooleanSetOperations2} +\cgalPkgManuals{Chapter_2D_Regularized_Boolean_Set-Operations,PkgBooleanSetOperations2Ref} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{3.2} -\cgalPkgDependsOn{\ref PkgArrangement2Summary} +\cgalPkgDependsOn{\ref PkgArrangementOnSurface2} \cgalPkgBib{cgal:fwzh-rbso2} \cgalPkgLicense{\ref licensesGPL "GPL"} \cgalPkgDemo{Boolean operations,boolean_operations_2.zip} diff --git a/Boolean_set_operations_2/examples/Boolean_set_operations_2/CMakeLists.txt b/Boolean_set_operations_2/examples/Boolean_set_operations_2/CMakeLists.txt index d91325c426a..98df7ce7446 100644 --- a/Boolean_set_operations_2/examples/Boolean_set_operations_2/CMakeLists.txt +++ b/Boolean_set_operations_2/examples/Boolean_set_operations_2/CMakeLists.txt @@ -4,17 +4,13 @@ project( Boolean_set_operations_2_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) -find_package(CGAL QUIET COMPONENTS Core ) +find_package(CGAL QUIET COMPONENTS Core) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") + include(${CGAL_USE_FILE}) # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) diff --git a/Boolean_set_operations_2/test/Boolean_set_operations_2/CMakeLists.txt b/Boolean_set_operations_2/test/Boolean_set_operations_2/CMakeLists.txt index 7b4c1b160ef..f1069ba938b 100644 --- a/Boolean_set_operations_2/test/Boolean_set_operations_2/CMakeLists.txt +++ b/Boolean_set_operations_2/test/Boolean_set_operations_2/CMakeLists.txt @@ -4,18 +4,12 @@ project( Boolean_set_operations_2_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Bounding_volumes/doc/Bounding_volumes/CGAL/Approximate_min_ellipsoid_d.h b/Bounding_volumes/doc/Bounding_volumes/CGAL/Approximate_min_ellipsoid_d.h index 8fbe5d25734..c53940face3 100644 --- a/Bounding_volumes/doc/Bounding_volumes/CGAL/Approximate_min_ellipsoid_d.h +++ b/Bounding_volumes/doc/Bounding_volumes/CGAL/Approximate_min_ellipsoid_d.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgBoundingVolumes +\ingroup PkgBoundingVolumesRef An object of class `Approximate_min_ellipsoid_d` is an approximation to the ellipsoid of smallest volume enclosing a finite multiset of points diff --git a/Bounding_volumes/doc/Bounding_volumes/CGAL/Approximate_min_ellipsoid_d_traits_2.h b/Bounding_volumes/doc/Bounding_volumes/CGAL/Approximate_min_ellipsoid_d_traits_2.h index edd58cacab9..8692b24c19a 100644 --- a/Bounding_volumes/doc/Bounding_volumes/CGAL/Approximate_min_ellipsoid_d_traits_2.h +++ b/Bounding_volumes/doc/Bounding_volumes/CGAL/Approximate_min_ellipsoid_d_traits_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgBoundingVolumes +\ingroup PkgBoundingVolumesRef The class `Approximate_min_ellipsoid_d_traits_2` is a traits class for `CGAL::Approximate_min_ellipsoid_d` using the diff --git a/Bounding_volumes/doc/Bounding_volumes/CGAL/Approximate_min_ellipsoid_d_traits_3.h b/Bounding_volumes/doc/Bounding_volumes/CGAL/Approximate_min_ellipsoid_d_traits_3.h index dd398e46456..b7f79cd4167 100644 --- a/Bounding_volumes/doc/Bounding_volumes/CGAL/Approximate_min_ellipsoid_d_traits_3.h +++ b/Bounding_volumes/doc/Bounding_volumes/CGAL/Approximate_min_ellipsoid_d_traits_3.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgBoundingVolumes +\ingroup PkgBoundingVolumesRef The class `Approximate_min_ellipsoid_d_traits_3` is a traits class for `CGAL::Approximate_min_ellipsoid_d` using the diff --git a/Bounding_volumes/doc/Bounding_volumes/CGAL/Approximate_min_ellipsoid_d_traits_d.h b/Bounding_volumes/doc/Bounding_volumes/CGAL/Approximate_min_ellipsoid_d_traits_d.h index b7bdcbe586e..75d4b45137d 100644 --- a/Bounding_volumes/doc/Bounding_volumes/CGAL/Approximate_min_ellipsoid_d_traits_d.h +++ b/Bounding_volumes/doc/Bounding_volumes/CGAL/Approximate_min_ellipsoid_d_traits_d.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgBoundingVolumes +\ingroup PkgBoundingVolumesRef The class `Approximate_min_ellipsoid_d_traits_d` is a traits class for `CGAL::Approximate_min_ellipsoid_d` using the diff --git a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_annulus_d.h b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_annulus_d.h index c7af75cd66f..fdcc62b8986 100644 --- a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_annulus_d.h +++ b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_annulus_d.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgBoundingVolumes +\ingroup PkgBoundingVolumesRef An object of the class `Min_annulus_d` is the unique annulus (region between two concentric spheres with radii \f$ r\f$ and \f$ R\f$, \f$ r \leq R\f$) enclosing a diff --git a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_circle_2.h b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_circle_2.h index f4e8d622eb0..62309eefebe 100644 --- a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_circle_2.h +++ b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_circle_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgBoundingVolumes +\ingroup PkgBoundingVolumesRef An object of the class `Min_circle_2` is the unique circle of smallest area enclosing a finite (multi)set of points in two-dimensional Euclidean diff --git a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_circle_2_traits_2.h b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_circle_2_traits_2.h index acba791f7dc..3fe2037bdc2 100644 --- a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_circle_2_traits_2.h +++ b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_circle_2_traits_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgBoundingVolumes +\ingroup PkgBoundingVolumesRef The class `Min_circle_2_traits_2` is a traits class for `Min_circle_2` using the two-dimensional \cgal kernel. diff --git a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_ellipse_2.h b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_ellipse_2.h index fc36ae9e095..a9edbb88bcd 100644 --- a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_ellipse_2.h +++ b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_ellipse_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgBoundingVolumes +\ingroup PkgBoundingVolumesRef An object of the class `Min_ellipse_2` is the unique ellipse of smallest area enclosing a finite (multi)set of points in two-dimensional euclidean diff --git a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_ellipse_2_traits_2.h b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_ellipse_2_traits_2.h index e6a1ec22a1e..3a1f2fd3e77 100644 --- a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_ellipse_2_traits_2.h +++ b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_ellipse_2_traits_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgBoundingVolumes +\ingroup PkgBoundingVolumesRef The class `Min_ellipse_2_traits_2` is a traits class for `CGAL::Min_ellipse_2` using the two-di-men-sional \cgal kernel. diff --git a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_quadrilateral_traits_2.h b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_quadrilateral_traits_2.h index 6562281723e..212e5188ba2 100644 --- a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_quadrilateral_traits_2.h +++ b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_quadrilateral_traits_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgBoundingVolumes +\ingroup PkgBoundingVolumesRef The class `Min_quadrilateral_default_traits_2` is a traits class for the functions `min_rectangle_2`, `min_parallelogram_2` and diff --git a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_annulus_d_traits_2.h b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_annulus_d_traits_2.h index d0806b47f50..9d0e4de3c88 100644 --- a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_annulus_d_traits_2.h +++ b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_annulus_d_traits_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgBoundingVolumes +\ingroup PkgBoundingVolumesRef The class `Min_sphere_annulus_d_traits_2` is a traits class for the \f$ d\f$-dimensional optimisation algorithms using the two-dimensional \cgal kernel. diff --git a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_annulus_d_traits_3.h b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_annulus_d_traits_3.h index e4627f99380..6d07f070b9e 100644 --- a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_annulus_d_traits_3.h +++ b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_annulus_d_traits_3.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgBoundingVolumes +\ingroup PkgBoundingVolumesRef The class `Min_sphere_annulus_d_traits_3` is a traits class for the \f$ d\f$-dimensional optimisation algorithms using the three-dimensional \cgal kernel. diff --git a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_annulus_d_traits_d.h b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_annulus_d_traits_d.h index 5fec804b71d..0e65c594f65 100644 --- a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_annulus_d_traits_d.h +++ b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_annulus_d_traits_d.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgBoundingVolumes +\ingroup PkgBoundingVolumesRef The class `Min_sphere_annulus_d_traits_d` is a traits class for the \f$ d\f$-dimensional optimisation algorithms using the \f$ d\f$-dimensional \cgal kernel. diff --git a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_d.h b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_d.h index 7c93a00b5e1..a682dd41650 100644 --- a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_d.h +++ b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_d.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgBoundingVolumes +\ingroup PkgBoundingVolumesRef An object of the class `Min_sphere_d` is the unique sphere of smallest volume enclosing a finite (multi)set of points in \f$ d\f$-dimensional diff --git a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_of_points_d_traits_2.h b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_of_points_d_traits_2.h index 778ee39f84d..5b5f00fc91f 100644 --- a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_of_points_d_traits_2.h +++ b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_of_points_d_traits_2.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgBoundingVolumes +\ingroup PkgBoundingVolumesRef The class `Min_sphere_of_points_d_traits_2` is a diff --git a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_of_points_d_traits_3.h b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_of_points_d_traits_3.h index 94fc8752a01..0a789e04e45 100644 --- a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_of_points_d_traits_3.h +++ b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_of_points_d_traits_3.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgBoundingVolumes +\ingroup PkgBoundingVolumesRef The class `Min_sphere_of_points_d_traits_3` is a diff --git a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_of_points_d_traits_d.h b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_of_points_d_traits_d.h index 20af328cf96..2fa016f2303 100644 --- a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_of_points_d_traits_d.h +++ b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_of_points_d_traits_d.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgBoundingVolumes +\ingroup PkgBoundingVolumesRef The class `Min_sphere_of_points_d_traits_d` is diff --git a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_of_spheres_d.h b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_of_spheres_d.h index 24de9ca7fd8..f7cb4a140ca 100644 --- a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_of_spheres_d.h +++ b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_of_spheres_d.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgBoundingVolumes +\ingroup PkgBoundingVolumesRef An object of the class `Min_sphere_of_spheres_d` is a data structure that represents the unique sphere of smallest volume enclosing a finite set of spheres diff --git a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_of_spheres_d_traits_2.h b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_of_spheres_d_traits_2.h index 6154e5dae39..a0e085ede92 100644 --- a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_of_spheres_d_traits_2.h +++ b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_of_spheres_d_traits_2.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgBoundingVolumes +\ingroup PkgBoundingVolumesRef The class `Min_sphere_of_spheres_d_traits_2` is a diff --git a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_of_spheres_d_traits_3.h b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_of_spheres_d_traits_3.h index b59539673e6..e366016a9e0 100644 --- a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_of_spheres_d_traits_3.h +++ b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_of_spheres_d_traits_3.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgBoundingVolumes +\ingroup PkgBoundingVolumesRef The class `Min_sphere_of_spheres_d_traits_3` is a diff --git a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_of_spheres_d_traits_d.h b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_of_spheres_d_traits_d.h index 81774e86735..6821e1e210c 100644 --- a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_of_spheres_d_traits_d.h +++ b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_of_spheres_d_traits_d.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgBoundingVolumes +\ingroup PkgBoundingVolumesRef The class `Min_sphere_of_spheres_d_traits_d` is diff --git a/Bounding_volumes/doc/Bounding_volumes/CGAL/min_quadrilateral_2.h b/Bounding_volumes/doc/Bounding_volumes/CGAL/min_quadrilateral_2.h index 84ce8286486..c9c0f1469ae 100644 --- a/Bounding_volumes/doc/Bounding_volumes/CGAL/min_quadrilateral_2.h +++ b/Bounding_volumes/doc/Bounding_volumes/CGAL/min_quadrilateral_2.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgBoundingVolumes +\ingroup PkgBoundingVolumesRef The function computes a minimum area enclosing parallelogram \f$ A(P)\f$ of a given convex point set \f$ P\f$. Note that @@ -72,7 +72,7 @@ Traits& t = Default_traits); namespace CGAL { /*! -\ingroup PkgBoundingVolumes +\ingroup PkgBoundingVolumesRef The function computes a minimum area enclosing rectangle \f$ R(P)\f$ of a given convex point set \f$ P\f$. Note that \f$ R(P)\f$ is not @@ -141,7 +141,7 @@ Traits& t = Default_traits); namespace CGAL { /*! -\ingroup PkgBoundingVolumes +\ingroup PkgBoundingVolumesRef The function computes a minimum width enclosing strip \f$ S(P)\f$ of a given convex point set \f$ P\f$. A strip is the closed region diff --git a/Bounding_volumes/doc/Bounding_volumes/CGAL/rectangular_p_center_2.h b/Bounding_volumes/doc/Bounding_volumes/CGAL/rectangular_p_center_2.h index debd0c3c8ea..77381b0cb91 100644 --- a/Bounding_volumes/doc/Bounding_volumes/CGAL/rectangular_p_center_2.h +++ b/Bounding_volumes/doc/Bounding_volumes/CGAL/rectangular_p_center_2.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgBoundingVolumes +\ingroup PkgBoundingVolumesRef The class `Rectangular_p_center_default_traits_2` defines types and operations needed to compute rectilinear \f$ p\f$-centers of a planar point set @@ -194,7 +194,7 @@ construct_iso_rectangle_2_above_right_point_2_object() const; }; /*! -\ingroup PkgBoundingVolumes +\ingroup PkgBoundingVolumesRef Computes rectilinear \f$ p\f$-centers of a planar point set, i.e.\ a set of \f$ p\f$ points such diff --git a/Bounding_volumes/doc/Bounding_volumes/PackageDescription.txt b/Bounding_volumes/doc/Bounding_volumes/PackageDescription.txt index 30b90996b35..761addad579 100644 --- a/Bounding_volumes/doc/Bounding_volumes/PackageDescription.txt +++ b/Bounding_volumes/doc/Bounding_volumes/PackageDescription.txt @@ -1,15 +1,15 @@ -/// \defgroup PkgBoundingVolumes Bounding Volumes Reference +/// \defgroup PkgBoundingVolumesRef Bounding Volumes Reference /// \defgroup PkgBoundingVolumesConcepts Concepts -/// \ingroup PkgBoundingVolumes +/// \ingroup PkgBoundingVolumesRef /*! -\addtogroup PkgBoundingVolumes +\addtogroup PkgBoundingVolumesRef \todo check generated documentation -\cgalPkgDescriptionBegin{Bounding Volumes,PkgBoundingVolumesSummary} +\cgalPkgDescriptionBegin{Bounding Volumes,PkgBoundingVolumes} \cgalPkgPicture{minCircle.png} \cgalPkgSummaryBegin \cgalPkgAuthors{Kaspar Fischer, Bernd Gärtner, Thomas Herrmann, Michael Hoffmann, and Sven Schönherr} \cgalPkgDesc{This package provides algorithms for computing optimal bounding volumes of point sets. In d-dimensional space, the smallest enclosing sphere, ellipsoid (approximate), and annulus can be computed. In 3-dimensional space, the smallest enclosing strip is available as well, and in 2-dimensional space, there are algorithms for a number of additional volumes (rectangles, parallelograms, \f$ k=2,3,4\f$ axis-aligned rectangles). The smallest enclosing sphere algorithm can also be applied to a set of d-dimensional spheres.} -\cgalPkgManuals{Chapter_Bounding_Volumes,PkgBoundingVolumes} +\cgalPkgManuals{Chapter_Bounding_Volumes,PkgBoundingVolumesRef} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{1.1} diff --git a/Bounding_volumes/examples/Approximate_min_ellipsoid_d/CMakeLists.txt b/Bounding_volumes/examples/Approximate_min_ellipsoid_d/CMakeLists.txt index 00764d546fc..16a7ff583b6 100644 --- a/Bounding_volumes/examples/Approximate_min_ellipsoid_d/CMakeLists.txt +++ b/Bounding_volumes/examples/Approximate_min_ellipsoid_d/CMakeLists.txt @@ -1,17 +1,11 @@ project( Approximate_min_ellipsoid_d_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # Use Eigen find_package(Eigen3 3.1.0 QUIET) #(3.1.0 or greater) if (EIGEN3_FOUND) diff --git a/Bounding_volumes/examples/Min_annulus_d/CMakeLists.txt b/Bounding_volumes/examples/Min_annulus_d/CMakeLists.txt index 488a5b88090..b406ed77552 100644 --- a/Bounding_volumes/examples/Min_annulus_d/CMakeLists.txt +++ b/Bounding_volumes/examples/Min_annulus_d/CMakeLists.txt @@ -1,24 +1,17 @@ project( Min_annulus_d_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) create_single_source_cgal_program( "${cppfile}" ) endforeach() - else() message(STATUS "This program requires the CGAL library, and will not be compiled.") diff --git a/Bounding_volumes/examples/Min_circle_2/CMakeLists.txt b/Bounding_volumes/examples/Min_circle_2/CMakeLists.txt index 1806818a17b..d1db7e242fe 100644 --- a/Bounding_volumes/examples/Min_circle_2/CMakeLists.txt +++ b/Bounding_volumes/examples/Min_circle_2/CMakeLists.txt @@ -1,17 +1,11 @@ project( Min_circle_2_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Bounding_volumes/examples/Min_ellipse_2/CMakeLists.txt b/Bounding_volumes/examples/Min_ellipse_2/CMakeLists.txt index a9e1c25d83e..d0e44baa048 100644 --- a/Bounding_volumes/examples/Min_ellipse_2/CMakeLists.txt +++ b/Bounding_volumes/examples/Min_ellipse_2/CMakeLists.txt @@ -1,17 +1,11 @@ project( Min_ellipse_2_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Bounding_volumes/examples/Min_quadrilateral_2/CMakeLists.txt b/Bounding_volumes/examples/Min_quadrilateral_2/CMakeLists.txt index 00f6398d517..b59e56f2286 100644 --- a/Bounding_volumes/examples/Min_quadrilateral_2/CMakeLists.txt +++ b/Bounding_volumes/examples/Min_quadrilateral_2/CMakeLists.txt @@ -1,17 +1,11 @@ project( Min_quadrilateral_2_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Bounding_volumes/examples/Min_sphere_d/CMakeLists.txt b/Bounding_volumes/examples/Min_sphere_d/CMakeLists.txt index f81e2da2fab..685ac2e938b 100644 --- a/Bounding_volumes/examples/Min_sphere_d/CMakeLists.txt +++ b/Bounding_volumes/examples/Min_sphere_d/CMakeLists.txt @@ -1,17 +1,11 @@ project( Min_sphere_d_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Bounding_volumes/examples/Min_sphere_of_spheres_d/CMakeLists.txt b/Bounding_volumes/examples/Min_sphere_of_spheres_d/CMakeLists.txt index d53ce971f12..39ba7fb4af5 100644 --- a/Bounding_volumes/examples/Min_sphere_of_spheres_d/CMakeLists.txt +++ b/Bounding_volumes/examples/Min_sphere_of_spheres_d/CMakeLists.txt @@ -1,17 +1,11 @@ project( Min_sphere_of_spheres_d_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Bounding_volumes/examples/Rectangular_p_center_2/CMakeLists.txt b/Bounding_volumes/examples/Rectangular_p_center_2/CMakeLists.txt index 3bae164b2d1..76fb954b161 100644 --- a/Bounding_volumes/examples/Rectangular_p_center_2/CMakeLists.txt +++ b/Bounding_volumes/examples/Rectangular_p_center_2/CMakeLists.txt @@ -1,24 +1,17 @@ project( Rectangular_p_center_2_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) create_single_source_cgal_program( "${cppfile}" ) endforeach() - else() message(STATUS "This program requires the CGAL library, and will not be compiled.") diff --git a/Bounding_volumes/include/CGAL/rectangular_3_center_2.h b/Bounding_volumes/include/CGAL/rectangular_3_center_2.h index f452d894a4f..6a74bf65e88 100644 --- a/Bounding_volumes/include/CGAL/rectangular_3_center_2.h +++ b/Bounding_volumes/include/CGAL/rectangular_3_center_2.h @@ -895,7 +895,8 @@ rectangular_3_center_2_type2( // lower bound for the diameter (2 * radius) // also store the corresponding positions of q_t and q_r FT rho_max = 0, rho_min = -1, q_t_q_r_cover_at_rho_min = 0; - Point q_t_at_rho_max, q_r_at_rho_max, q_t_at_rho_min, q_r_at_rho_min; + Point q_t_at_rho_max(CGAL::ORIGIN), q_r_at_rho_max(CGAL::ORIGIN), + q_t_at_rho_min(CGAL::ORIGIN), q_r_at_rho_min(CGAL::ORIGIN); RandomAccessIterator s_at_rho_min = s, e_at_rho_min = s; #ifndef CGAL_3COVER_NO_CHECK_OPTIMUM_FIRST diff --git a/Bounding_volumes/test/Bounding_volumes/CMakeLists.txt b/Bounding_volumes/test/Bounding_volumes/CMakeLists.txt index 30daac07fc0..f6a82d575ee 100644 --- a/Bounding_volumes/test/Bounding_volumes/CMakeLists.txt +++ b/Bounding_volumes/test/Bounding_volumes/CMakeLists.txt @@ -4,17 +4,13 @@ project( Bounding_volumes_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET COMPONENTS Core ) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") + include(${CGAL_USE_FILE}) # Use Eigen find_package(Eigen3 3.1.0 QUIET) #(3.1.0 or greater) diff --git a/Box_intersection_d/doc/Box_intersection_d/PackageDescription.txt b/Box_intersection_d/doc/Box_intersection_d/PackageDescription.txt index 272c41c14d5..1478c8a0cf1 100644 --- a/Box_intersection_d/doc/Box_intersection_d/PackageDescription.txt +++ b/Box_intersection_d/doc/Box_intersection_d/PackageDescription.txt @@ -1,33 +1,33 @@ -/// \defgroup PkgBoxIntersectionD Intersecting Sequences of dD Iso-oriented Boxes Reference +/// \defgroup PkgBoxIntersectionDRef Intersecting Sequences of dD Iso-oriented Boxes Reference /// \defgroup PkgBoxIntersectionDConcepts Concepts -/// \ingroup PkgBoxIntersectionD +/// \ingroup PkgBoxIntersectionDRef /// \defgroup PkgBoxIntersectionDClasses Classes -/// \ingroup PkgBoxIntersectionD +/// \ingroup PkgBoxIntersectionDRef /// \defgroup PkgBoxIntersectionD_box_intersection_d CGAL::box_intersection_d() -/// \ingroup PkgBoxIntersectionD +/// \ingroup PkgBoxIntersectionDRef /// \defgroup PkgBoxIntersectionD_box_intersection_all_pairs_d CGAL::box_intersection_all_pairs_d() -/// \ingroup PkgBoxIntersectionD +/// \ingroup PkgBoxIntersectionDRef /// \defgroup PkgBoxIntersectionD_box_self_intersection_d CGAL::box_self_intersection_d() -/// \ingroup PkgBoxIntersectionD +/// \ingroup PkgBoxIntersectionDRef /// \defgroup PkgBoxIntersectionD_box_self_intersection_all_pairs_d CGAL::box_self_intersection_all_pairs_d() -/// \ingroup PkgBoxIntersectionD +/// \ingroup PkgBoxIntersectionDRef /*! -\addtogroup PkgBoxIntersectionD +\addtogroup PkgBoxIntersectionDRef \todo de-math and change D to d for the dimension -\cgalPkgDescriptionBegin{Intersecting Sequences of dD Iso-oriented Boxes,PkgBoxIntersectionDSummary} +\cgalPkgDescriptionBegin{Intersecting Sequences of dD Iso-oriented Boxes,PkgBoxIntersectionD} \cgalPkgPicture{box_inters-small.png} \cgalPkgSummaryBegin \cgalPkgAuthors{Lutz Kettner, Andreas Meyer, and Afra Zomorodian} \cgalPkgDesc{An efficient algorithm for finding all intersecting pairs for large numbers of iso-oriented boxes, in order to apply a user defined callback on them. Typically these boxes will be bounding boxes of more complicated geometries. The algorithm is useful for (self-) intersection tests of surfaces etc. } -\cgalPkgManuals{Chapter_Intersecting_Sequences_of_dD_Iso-oriented_Boxes,PkgBoxIntersectionD} +\cgalPkgManuals{Chapter_Intersecting_Sequences_of_dD_Iso-oriented_Boxes,PkgBoxIntersectionDRef} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{3.1} diff --git a/Box_intersection_d/examples/Box_intersection_d/CMakeLists.txt b/Box_intersection_d/examples/Box_intersection_d/CMakeLists.txt index c2f2b3c8d61..1d5ab39100c 100644 --- a/Box_intersection_d/examples/Box_intersection_d/CMakeLists.txt +++ b/Box_intersection_d/examples/Box_intersection_d/CMakeLists.txt @@ -4,18 +4,12 @@ project( Box_intersection_d_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Box_intersection_d/test/Box_intersection_d/CMakeLists.txt b/Box_intersection_d/test/Box_intersection_d/CMakeLists.txt index 43f85186e90..bcdb064e633 100644 --- a/Box_intersection_d/test/Box_intersection_d/CMakeLists.txt +++ b/Box_intersection_d/test/Box_intersection_d/CMakeLists.txt @@ -4,18 +4,12 @@ project( Box_intersection_d_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/CGAL_Core/examples/Core/CMakeLists.txt b/CGAL_Core/examples/Core/CMakeLists.txt index d51b2ae90b7..ad932d6731a 100644 --- a/CGAL_Core/examples/Core/CMakeLists.txt +++ b/CGAL_Core/examples/Core/CMakeLists.txt @@ -1,16 +1,13 @@ project( Core_Examples ) -cmake_minimum_required(VERSION 2.8.11) +cmake_minimum_required(VERSION 3.1) # CGAL and its components find_package( CGAL QUIET COMPONENTS Core ) -# include helper file -include( ${CGAL_USE_FILE} ) - if ( NOT CGAL_Core_FOUND ) message(STATUS "This project requires the CGAL_Core library, and will not be compiled.") @@ -32,12 +29,9 @@ endif() # include for local directory # include for local package -include_directories( BEFORE ../../include ) - +include(${CGAL_USE_FILE}) # Creating entries for all .cpp/.C files with "main" routine # ########################################################## -include( CGAL_CreateSingleSourceCGALProgram ) - create_single_source_cgal_program( "delaunay.cpp" ) diff --git a/CGAL_ImageIO/archive/demo/CGALimageIO/CMakeLists.txt b/CGAL_ImageIO/archive/demo/CGALimageIO/CMakeLists.txt index 0d395812e09..a5f3c89d94b 100644 --- a/CGAL_ImageIO/archive/demo/CGALimageIO/CMakeLists.txt +++ b/CGAL_ImageIO/archive/demo/CGALimageIO/CMakeLists.txt @@ -25,7 +25,6 @@ endforeach() find_package(CGAL REQUIRED ImageIO) -include( ${CGAL_USE_FILE} ) find_package(VTK QUIET NO_MODULE) if(VTK_FOUND) diff --git a/CGAL_ImageIO/examples/CGALimageIO/CMakeLists.txt b/CGAL_ImageIO/examples/CGALimageIO/CMakeLists.txt index 038eb63d17b..abf713eb1c8 100644 --- a/CGAL_ImageIO/examples/CGALimageIO/CMakeLists.txt +++ b/CGAL_ImageIO/examples/CGALimageIO/CMakeLists.txt @@ -3,15 +3,13 @@ project( CGALimageIO_Examples ) -cmake_minimum_required(VERSION 2.8.11) - +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET COMPONENTS ImageIO ) -include( ${CGAL_USE_FILE} ) -include( CGAL_CreateSingleSourceCGALProgram ) - if(CGAL_ImageIO_FOUND) + include(${CGAL_USE_FILE}) + create_single_source_cgal_program( "convert_raw_image_to_inr.cpp" ) create_single_source_cgal_program( "test_imageio.cpp" ) else() diff --git a/CGAL_ImageIO/test/CGAL_ImageIO/CMakeLists.txt b/CGAL_ImageIO/test/CGAL_ImageIO/CMakeLists.txt index c70bb5c24cb..7b39be42ee8 100644 --- a/CGAL_ImageIO/test/CGAL_ImageIO/CMakeLists.txt +++ b/CGAL_ImageIO/test/CGAL_ImageIO/CMakeLists.txt @@ -4,18 +4,12 @@ project( CGAL_ImageIO_Tests ) -cmake_minimum_required(VERSION 2.8.11) - - -include_directories(../../include) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET COMPONENTS ImageIO ) if ( CGAL_FOUND ) - - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) + include(${CGAL_USE_FILE}) if (WITH_CGAL_ImageIO) create_single_source_cgal_program( "test_trilinear_interpolation.cpp" ) diff --git a/CGAL_ipelets/demo/CGAL_ipelets/CMakeLists.txt b/CGAL_ipelets/demo/CGAL_ipelets/CMakeLists.txt index 83f66e52253..b6419a7476c 100644 --- a/CGAL_ipelets/demo/CGAL_ipelets/CMakeLists.txt +++ b/CGAL_ipelets/demo/CGAL_ipelets/CMakeLists.txt @@ -23,7 +23,8 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}") find_package(CGAL QUIET COMPONENTS Core) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) + + include(${CGAL_USE_FILE}) find_package(Eigen3 3.1.0) #(requires 3.1.0 or greater) if (EIGEN3_FOUND) diff --git a/CGAL_ipelets/doc/CGAL_ipelets/CGAL/CGAL_Ipelet_base.h b/CGAL_ipelets/doc/CGAL_ipelets/CGAL/CGAL_Ipelet_base.h index 32c46524737..5152f1a50a2 100644 --- a/CGAL_ipelets/doc/CGAL_ipelets/CGAL/CGAL_Ipelet_base.h +++ b/CGAL_ipelets/doc/CGAL_ipelets/CGAL/CGAL_Ipelet_base.h @@ -1,5 +1,5 @@ /*! -\ingroup PkgCGALIpelets +\ingroup PkgCGALIpeletsRef The registration of a new ipelet can be done using the macro command `CGAL_IPELET`. Taking as a parameter the name of the class defining the new ipelet, that macro must be placed in the source file after the class definition. @@ -9,7 +9,7 @@ file after the class definition. namespace CGAL { /*! -\ingroup PkgCGALIpelets +\ingroup PkgCGALIpeletsRef `Ipelet_base` is an abstract base class for defining an ipelet. The only function that needs to be defined in a derived class is diff --git a/CGAL_ipelets/doc/CGAL_ipelets/PackageDescription.txt b/CGAL_ipelets/doc/CGAL_ipelets/PackageDescription.txt index d51312d18c2..61200e65b1f 100644 --- a/CGAL_ipelets/doc/CGAL_ipelets/PackageDescription.txt +++ b/CGAL_ipelets/doc/CGAL_ipelets/PackageDescription.txt @@ -1,12 +1,12 @@ -/// \defgroup PkgCGALIpelets CGAL Ipelets Reference +/// \defgroup PkgCGALIpeletsRef CGAL Ipelets Reference /*! -\addtogroup PkgCGALIpelets -\cgalPkgDescriptionBegin{CGAL Ipelets,PkgCGALIpeletsSummary} +\addtogroup PkgCGALIpeletsRef +\cgalPkgDescriptionBegin{CGAL Ipelets,PkgCGALIpelets} \cgalPkgPicture{ipeico.jpg} \cgalPkgSummaryBegin \cgalPkgAuthors{Olivier Devillers, Sébastien Loriot, and Sylvain Pion} \cgalPkgDesc{This package provides a generic framework to easily write ipelets (plug-in's) using \cgal for the the Ipe extensible drawing editor.} -\cgalPkgManuals{Chapter_CGAL_Ipelets,PkgCGALIpelets} +\cgalPkgManuals{Chapter_CGAL_Ipelets,PkgCGALIpeletsRef} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{3.5} diff --git a/CGAL_ipelets/examples/CGAL_ipelets/CMakeLists.txt b/CGAL_ipelets/examples/CGAL_ipelets/CMakeLists.txt index 56e033ef616..25e4407eaf9 100644 --- a/CGAL_ipelets/examples/CGAL_ipelets/CMakeLists.txt +++ b/CGAL_ipelets/examples/CGAL_ipelets/CMakeLists.txt @@ -4,18 +4,12 @@ project( CGAL_ipelets_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_2.h b/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_2.h index e3c836b438c..ca07a5066df 100644 --- a/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_2.h +++ b/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_2.h @@ -178,6 +178,21 @@ public: std::ostream & print(std::ostream &os) const; + + bool operator==(const Aff_transformationC2 &t)const + { + for(int i=0; i<3; ++i) + for(int j = 0; j< 3; ++j) + if(cartesian(i,j)!=t.cartesian(i,j)) + return false; + return true; + } + + bool operator!=(const Aff_transformationC2 &t)const + { + return !(*this == t); + } + }; template < class R > diff --git a/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_3.h b/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_3.h index 706b0747f05..e42f9ea5ca9 100644 --- a/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_3.h +++ b/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_3.h @@ -177,7 +177,21 @@ public: Aff_transformation_3 operator*(const Aff_transformationC3 &t) const { return (*this->Ptr()) * (*t.Ptr()); } - + + bool operator==(const Aff_transformationC3 &t)const + { + for(int i=0; i<3; ++i) + for(int j = 0; j< 4; ++j) + if(cartesian(i,j)!=t.cartesian(i,j)) + return false; + return true; + } + + bool operator!=(const Aff_transformationC3 &t)const + { + return !(*this == t); + } + protected: Aff_transformation_3 transpose() const { return this->Ptr()->transpose(); } }; diff --git a/Cartesian_kernel/include/CGAL/Cartesian_converter.h b/Cartesian_kernel/include/CGAL/Cartesian_converter.h index fb25953c85f..33f941b3305 100644 --- a/Cartesian_kernel/include/CGAL/Cartesian_converter.h +++ b/Cartesian_kernel/include/CGAL/Cartesian_converter.h @@ -393,6 +393,24 @@ public: return std::make_pair(operator()(pp.first), operator()(pp.second)); } + typename K2::Aff_transformation_3 + operator()(const typename K1::Aff_transformation_3 &a) const + { + typedef typename K2::Aff_transformation_3 Aff_transformation_3; + typename K2::FT t[12]; + for(int i=0; i< 3; ++i) + { + for(int j=0; j<4; ++j) + { + t[i*4+j] = a.m(i,j); + } + } + return Aff_transformation_3( + t[0],t[1],t[2],t[3], + t[4],t[5],t[6],t[7], + t[8],t[9],t[10],t[11], + a.m(3,3)); + } private: Converter c; K2 k; diff --git a/Cartesian_kernel/include/CGAL/constructions/kernel_ftC2.h b/Cartesian_kernel/include/CGAL/constructions/kernel_ftC2.h index ff81eb5582b..48dba7821ae 100644 --- a/Cartesian_kernel/include/CGAL/constructions/kernel_ftC2.h +++ b/Cartesian_kernel/include/CGAL/constructions/kernel_ftC2.h @@ -313,34 +313,24 @@ line_project_pointC2(const FT &la, const FT &lb, const FT &lc, const FT &px, const FT &py, FT &x, FT &y) { -#if 1 // FIXME - // Original old version - if (CGAL_NTS is_zero(la)) // horizontal line + if (certainly(is_zero(la))) // horizontal line { x = px; y = -lc/lb; } - else if (CGAL_NTS is_zero(lb)) // vertical line + else if (certainly(is_zero(lb))) // vertical line { x = -lc/la; y = py; } else { - FT ab = la/lb, ba = lb/la, ca = lc/la; - y = ( -px + ab*py - ca ) / ( ba + ab ); - x = -ba * y - ca; + FT a2 = CGAL_NTS square(la); + FT b2 = CGAL_NTS square(lb); + FT d = a2 + b2; + x = (b2*px - la*lb*py - la*lc) / d; + y = (-la*lb*px + a2*py - lb*lc) / d; } -#else - // New version, with more multiplications, but less divisions and tests. - // Let's compare the results of the 2, benchmark them, as well as check - // the precision with the intervals. - FT a2 = CGAL_NTS square(la); - FT b2 = CGAL_NTS square(lb); - FT d = a2 + b2; - x = (la * (lb * py - lc) - px * b2) / d; - y = (lb * (lc - la * px) + py * a2) / d; -#endif } template < class FT > diff --git a/Circular_kernel_2/doc/Circular_kernel_2/PackageDescription.txt b/Circular_kernel_2/doc/Circular_kernel_2/PackageDescription.txt index 5343842eb4a..e51308477a9 100644 --- a/Circular_kernel_2/doc/Circular_kernel_2/PackageDescription.txt +++ b/Circular_kernel_2/doc/Circular_kernel_2/PackageDescription.txt @@ -1,34 +1,34 @@ -/// \defgroup PkgCircularKernel2 2D Circular Geometry Kernel Reference +/// \defgroup PkgCircularKernel2Ref 2D Circular Geometry Kernel Reference /// \defgroup PkgCircularKernel2GeometricConcepts Geometric Concepts -/// \ingroup PkgCircularKernel2 +/// \ingroup PkgCircularKernel2Ref /// \defgroup PkgCircularKernel2GeometricClasses Geometric Kernel and Classes -/// \ingroup PkgCircularKernel2 +/// \ingroup PkgCircularKernel2Ref /// \defgroup PkgCircularKernel2GeometricFunctions Geometric Global Functions -/// \ingroup PkgCircularKernel2 +/// \ingroup PkgCircularKernel2Ref /// \defgroup PkgCircularKernel2AlgebraicConcepts Algebraic Concepts -/// \ingroup PkgCircularKernel2 +/// \ingroup PkgCircularKernel2Ref /// \defgroup PkgCircularKernel2AlgebraicClasses Algebraic Kernel and Classes -/// \ingroup PkgCircularKernel2 +/// \ingroup PkgCircularKernel2Ref /*! -\addtogroup PkgCircularKernel2 +\addtogroup PkgCircularKernel2Ref \todo check generated documentation -\cgalPkgDescriptionBegin{2D Circular Geometry Kernel,PkgCircularKernel2Summary} +\cgalPkgDescriptionBegin{2D Circular Geometry Kernel,PkgCircularKernel2} \cgalPkgPicture{Boolean_operation_detail.png} \cgalPkgSummaryBegin \cgalPkgAuthors{Pedro Machado Manhães de Castro, Sylvain Pion, and Monique Teillaud} \cgalPkgDesc{This package is an extension of the linear \cgal kernel. It offers functionalities on circles, circular arcs and line segments in the plane. } -\cgalPkgManuals{Chapter_2D_Circular_Geometry_Kernel,PkgCircularKernel2} +\cgalPkgManuals{Chapter_2D_Circular_Geometry_Kernel,PkgCircularKernel2Ref} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{3.2} diff --git a/Circular_kernel_2/examples/Circular_kernel_2/CMakeLists.txt b/Circular_kernel_2/examples/Circular_kernel_2/CMakeLists.txt index 02f290163fb..8072b3720da 100644 --- a/Circular_kernel_2/examples/Circular_kernel_2/CMakeLists.txt +++ b/Circular_kernel_2/examples/Circular_kernel_2/CMakeLists.txt @@ -4,18 +4,12 @@ project( Circular_kernel_2_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Circular_kernel_2/test/Circular_kernel_2/CMakeLists.txt b/Circular_kernel_2/test/Circular_kernel_2/CMakeLists.txt index dc4bb0315ef..8561adcfbcd 100644 --- a/Circular_kernel_2/test/Circular_kernel_2/CMakeLists.txt +++ b/Circular_kernel_2/test/Circular_kernel_2/CMakeLists.txt @@ -4,18 +4,13 @@ project( Circular_kernel_2_Tests ) -CMAKE_MINIMUM_REQUIRED(VERSION 2.8.11) +CMAKE_MINIMUM_REQUIRED(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - include_directories (BEFORE include) -include_directories (BEFORE ../../include) include_directories (BEFORE ../../../Kernel_23/test/Kernel_23/include) include_directories (BEFORE ../Kernel_23/include) include_directories (BEFORE ../Cartesian_kernel/include) diff --git a/Circular_kernel_3/demo/Circular_kernel_3/CMakeLists.txt b/Circular_kernel_3/demo/Circular_kernel_3/CMakeLists.txt index 690ba9517c3..7b855adddbf 100644 --- a/Circular_kernel_3/demo/Circular_kernel_3/CMakeLists.txt +++ b/Circular_kernel_3/demo/Circular_kernel_3/CMakeLists.txt @@ -7,15 +7,11 @@ if(NOT POLICY CMP0070 AND POLICY CMP0053) endif() find_package(CGAL COMPONENTS Qt5) -include(${CGAL_USE_FILE}) find_package(Qt5 QUIET COMPONENTS Xml Script OpenGL) if ( CGAL_FOUND AND CGAL_Qt5_FOUND AND Qt5_FOUND) - - include_directories (BEFORE ../../include ./ ) - add_executable (Circular_kernel_3 Circular_kernel_3.cpp Viewer.cpp ${CGAL_Qt5_RESOURCE_FILES} ${CGAL_Qt5_MOC_FILES}) add_to_cached_list( CGAL_EXECUTABLE_TARGETS Circular_kernel_3 ) diff --git a/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Algebraic_kernel_for_spheres_2_3.h b/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Algebraic_kernel_for_spheres_2_3.h index 6867ba05ee6..55a6093a78e 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Algebraic_kernel_for_spheres_2_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Algebraic_kernel_for_spheres_2_3.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgSphericalKernel3AlgebraicClasses +\ingroup PkgCircularKernel3AlgebraicClasses \cgalModels `AlgebraicKernelForSpheres` diff --git a/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Circle_type.h b/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Circle_type.h index ac96f07d415..430446ebc00 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Circle_type.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Circle_type.h @@ -1,6 +1,6 @@ namespace CGAL { /*! - \ingroup PkgSphericalKernel3GeometricClasses + \ingroup PkgCircularKernel3GeometricClasses The enum `Circle_type` is used to classify an object of type `Circle_3`, so as to specify its type (normal,polar,bipolar or threaded), as defined in Section \ref sectionSKobjects. diff --git a/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Circular_arc_3.h b/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Circular_arc_3.h index eea28fb3796..ae81c8a30b1 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Circular_arc_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Circular_arc_3.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgSphericalKernel3GeometricClasses +\ingroup PkgCircularKernel3GeometricClasses \cgalModels `SphericalKernel::CircularArc_3` diff --git a/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Circular_arc_point_3.h b/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Circular_arc_point_3.h index dedfefdbf5a..aa1faa8a9cf 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Circular_arc_point_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Circular_arc_point_3.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgSphericalKernel3GeometricClasses +\ingroup PkgCircularKernel3GeometricClasses \cgalModels `SphericalKernel::CircularArcPoint_3` diff --git a/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Exact_spherical_kernel_3.h b/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Exact_spherical_kernel_3.h index e39620dc8bb..00159f6b404 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Exact_spherical_kernel_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Exact_spherical_kernel_3.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgSphericalKernel3GeometricClasses +\ingroup PkgCircularKernel3GeometricClasses A typedef to a spherical kernel that provides both exact geometric predicates and exact geometric constructions. diff --git a/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Line_arc_3.h b/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Line_arc_3.h index 52916046472..3173d76855a 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Line_arc_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Line_arc_3.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgSphericalKernel3GeometricClasses +\ingroup PkgCircularKernel3GeometricClasses \cgalModels `SphericalKernel::LineArc_3` diff --git a/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Polynomials_1_3.h b/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Polynomials_1_3.h index f476455d9eb..025200ba4c1 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Polynomials_1_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Polynomials_1_3.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgSphericalKernel3AlgebraicClasses +\ingroup PkgCircularKernel3AlgebraicClasses \cgalModels `AlgebraicKernelForSpheres::Polynomial_1_3` diff --git a/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Polynomials_2_3.h b/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Polynomials_2_3.h index 6410811b92d..5adf730a43a 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Polynomials_2_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Polynomials_2_3.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgSphericalKernel3AlgebraicClasses +\ingroup PkgCircularKernel3AlgebraicClasses \cgalModels `AlgebraicKernelForSpheres::PolynomialForSpheres_2_3` diff --git a/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Polynomials_for_line_3.h b/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Polynomials_for_line_3.h index 8987c2aa93c..3a8ad778710 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Polynomials_for_line_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Polynomials_for_line_3.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgSphericalKernel3AlgebraicClasses +\ingroup PkgCircularKernel3AlgebraicClasses \cgalModels `AlgebraicKernelForSpheres::PolynomialsForLines_3` diff --git a/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Root_for_spheres_2_3.h b/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Root_for_spheres_2_3.h index 3afdd451378..b73f031e5d1 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Root_for_spheres_2_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Root_for_spheres_2_3.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgSphericalKernel3AlgebraicClasses +\ingroup PkgCircularKernel3AlgebraicClasses \cgalModels `AlgebraicKernelForSpheres::RootForSpheres_2_3` diff --git a/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Spherical_kernel_3.h b/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Spherical_kernel_3.h index 21d92e1a274..3016c5a4035 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Spherical_kernel_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/CGAL/Spherical_kernel_3.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgSphericalKernel3GeometricClasses +\ingroup PkgCircularKernel3GeometricClasses \cgalModels `SphericalKernel` diff --git a/Circular_kernel_3/doc/Circular_kernel_3/CGAL/global_functions_spherical_kernel_3.h b/Circular_kernel_3/doc/Circular_kernel_3/CGAL/global_functions_spherical_kernel_3.h index f1f52278e26..b00e2b99e20 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/CGAL/global_functions_spherical_kernel_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/CGAL/global_functions_spherical_kernel_3.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgSphericalKernel3GeometricFunctions +\ingroup PkgCircularKernel3GeometricFunctions Classify a circle according to `sphere`, as defined in Section \ref sectionSKobjects. \pre `c` lies on `sphere`. @@ -18,7 +18,7 @@ classify(const CGAL::Circle_3 & c, const CGAL::Sphere_3 & p, const CGAL::Circular_arc_point_3 & q,const CGAL::Sphere_3& sphere); /*! -\ingroup PkgSphericalKernel3GeometricFunctions +\ingroup PkgCircularKernel3GeometricFunctions Compares the \f$ \theta\f$-coordinates of `p` and of the meridian defined by `m` (see Section \ref sectionSKobjects) @@ -61,7 +61,7 @@ Comparison_result compare_theta(const CGAL::Circular_arc_point_3 &p, const CGAL::Vector_3 &m, const CGAL::Sphere_3& sphere ); /*! -\ingroup PkgSphericalKernel3GeometricFunctions +\ingroup PkgCircularKernel3GeometricFunctions Compares the \f$ \theta\f$-coordinates of the meridian defined by `m` and of `p` (see Section \ref sectionSKobjects) in the cylindrical coordinate system relative to `sphere`. @@ -85,7 +85,7 @@ compare_theta(const CGAL::Vector_3 &m,const CGAL::Circular_arc_ namespace CGAL { /*! -\ingroup PkgSphericalKernel3GeometricFunctions +\ingroup PkgCircularKernel3GeometricFunctions Compares `p` and `q` according to the lexicographic ordering on \f$ \theta\f$ and \f$ z\f$-coordinates in the cylindrical coordinate system relative to `sphere`. @@ -111,7 +111,7 @@ const CGAL::Circular_arc_point_3 & q, const CGAL::Sphere_3 & a,const CGAL::Sp namespace CGAL { /*! -\ingroup PkgSphericalKernel3GeometricFunctions +\ingroup PkgCircularKernel3GeometricFunctions Returns the point on the circle that is extremal in \f$ \theta\f$ using the cylindrical coordinate system relative to `sphere`, and that has the smallest (resp.\ largest) @@ -147,7 +147,7 @@ theta_extremal_point(const CGAL::Circle_3 & c, const CGAL::Sphe namespace CGAL { /*! -\ingroup PkgSphericalKernel3GeometricFunctions +\ingroup PkgCircularKernel3GeometricFunctions Copies in the output iterator the \f$ \theta\f$-extremal points of the circle relatively to `sphere`. `res` iterates on elements of type @@ -167,7 +167,7 @@ OutputIterator res); namespace CGAL { /*! -\ingroup PkgSphericalKernel3GeometricFunctions +\ingroup PkgCircularKernel3GeometricFunctions Returns the point on the sphere that is extremal in the \f$ x\f$-direction, and that is the smallest (resp.\ largest) of the two @@ -179,7 +179,7 @@ CGAL::Circular_arc_point_3 x_extremal_point(const CGAL::Sphere_3 & c, bool b); /*! -\ingroup PkgSphericalKernel3GeometricFunctions +\ingroup PkgCircularKernel3GeometricFunctions Same for a circle. \pre The circle is not contained in a plane orthogonal to the \f$ x\f$-axis. @@ -193,7 +193,7 @@ x_extremal_point(const CGAL::Circle_3 & c, bool b); namespace CGAL { /*! -\ingroup PkgSphericalKernel3GeometricFunctions +\ingroup PkgCircularKernel3GeometricFunctions Copies in the output iterator the \f$ x\f$-extremal points of the sphere. `res` iterates on elements of type @@ -205,7 +205,7 @@ x_extremal_points(const CGAL::Sphere_3 & c, OutputIterator res); /*! -\ingroup PkgSphericalKernel3GeometricFunctions +\ingroup PkgCircularKernel3GeometricFunctions Copies in the output iterator the \f$ x\f$-extremal points of the circle. `res` iterates on elements of type @@ -223,7 +223,7 @@ OutputIterator res); namespace CGAL { /*! -\ingroup PkgSphericalKernel3GeometricFunctions +\ingroup PkgCircularKernel3GeometricFunctions Returns the point on the sphere that is extremal in the \f$ y\f$-direction, and that is the smallest (resp.\ largest) of the two @@ -235,7 +235,7 @@ CGAL::Circular_arc_point_3 y_extremal_point(const CGAL::Sphere_3 & c, bool b); /*! -\ingroup PkgSphericalKernel3GeometricFunctions +\ingroup PkgCircularKernel3GeometricFunctions Same for a circle. \pre The circle is not contained in a plane orthogonal to the \f$ y\f$-axis. @@ -249,7 +249,7 @@ y_extremal_point(const CGAL::Circle_3 & c, bool b); namespace CGAL { /*! -\ingroup PkgSphericalKernel3GeometricFunctions +\ingroup PkgCircularKernel3GeometricFunctions Copies in the output iterator the \f$ y\f$-extremal points of the sphere. `res` iterates on elements of type @@ -261,7 +261,7 @@ y_extremal_points(const CGAL::Sphere_3 & c, OutputIterator res); /*! -\ingroup PkgSphericalKernel3GeometricFunctions +\ingroup PkgCircularKernel3GeometricFunctions Copies in the output iterator the \f$ y\f$-extremal points of the circle. `res` iterates on elements of type @@ -279,7 +279,7 @@ OutputIterator res); namespace CGAL { /*! -\ingroup PkgSphericalKernel3GeometricFunctions +\ingroup PkgCircularKernel3GeometricFunctions Returns the point on the sphere that is extremal in the \f$ z\f$-direction, and that is the smallest (resp.\ largest) of the two @@ -291,7 +291,7 @@ CGAL::Circular_arc_point_3 z_extremal_point(const CGAL::Sphere_3 & c, bool b); /*! -\ingroup PkgSphericalKernel3GeometricFunctions +\ingroup PkgCircularKernel3GeometricFunctions Same for a circle. \pre The circle is not contained in a plane orthogonal to the \f$ z\f$-axis. @@ -305,7 +305,7 @@ z_extremal_point(const CGAL::Circle_3 & c, bool b); namespace CGAL { /*! -\ingroup PkgSphericalKernel3GeometricFunctions +\ingroup PkgCircularKernel3GeometricFunctions Copies in the output iterator the \f$ z\f$-extremal points of the sphere. `res` iterates on elements of type @@ -317,7 +317,7 @@ z_extremal_points(const CGAL::Sphere_3 & c, OutputIterator res); /*! -\ingroup PkgSphericalKernel3GeometricFunctions +\ingroup PkgCircularKernel3GeometricFunctions Copies in the output iterator the \f$ z\f$-extremal points of the circle. `res` iterates on elements of type diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--CompareX.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--CompareX.h index 7ef5402dc3e..cf9c804d733 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--CompareX.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--CompareX.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3AlgebraicConcepts +\ingroup PkgCircularKernel3AlgebraicConcepts \cgalConcept \sa `AlgebraicKernelForSpheres::CompareY` diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--CompareXY.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--CompareXY.h index 60cfffab7ed..98b452d668c 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--CompareXY.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--CompareXY.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3AlgebraicConcepts +\ingroup PkgCircularKernel3AlgebraicConcepts \cgalConcept \sa `AlgebraicKernelForSpheres::CompareX` diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--CompareXYZ.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--CompareXYZ.h index 92dd9bc52d7..171641cc56e 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--CompareXYZ.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--CompareXYZ.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3AlgebraicConcepts +\ingroup PkgCircularKernel3AlgebraicConcepts \cgalConcept \sa `AlgebraicKernelForSpheres::CompareX` diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--CompareY.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--CompareY.h index 2d8cb30cf48..ff2b9d9ad74 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--CompareY.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--CompareY.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3AlgebraicConcepts +\ingroup PkgCircularKernel3AlgebraicConcepts \cgalConcept \sa `AlgebraicKernelForSpheres::CompareX` diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--CompareZ.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--CompareZ.h index 2a2743f67c4..e30f42b9865 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--CompareZ.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--CompareZ.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3AlgebraicConcepts +\ingroup PkgCircularKernel3AlgebraicConcepts \cgalConcept \sa `AlgebraicKernelForSpheres::CompareX` diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--ConstructPolynomialForSpheres_2_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--ConstructPolynomialForSpheres_2_3.h index 73517c1da08..074003ddad0 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--ConstructPolynomialForSpheres_2_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--ConstructPolynomialForSpheres_2_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3AlgebraicConcepts +\ingroup PkgCircularKernel3AlgebraicConcepts \cgalConcept \sa `SphericalKernel::ConstructSphere_3` diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--ConstructPolynomial_1_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--ConstructPolynomial_1_3.h index 1860c7088d5..66a7c953651 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--ConstructPolynomial_1_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--ConstructPolynomial_1_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3AlgebraicConcepts +\ingroup PkgCircularKernel3AlgebraicConcepts \cgalConcept \sa `SphericalKernel::ConstructPlane_3` diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--ConstructPolynomialsForLines_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--ConstructPolynomialsForLines_3.h index 766c1fa5833..9743e9eeb6b 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--ConstructPolynomialsForLines_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--ConstructPolynomialsForLines_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3AlgebraicConcepts +\ingroup PkgCircularKernel3AlgebraicConcepts \cgalConcept \sa `SphericalKernel::ConstructLine_3` diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--PolynomialForSpheres_2_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--PolynomialForSpheres_2_3.h index 9a41be9e609..6021e6ef0fa 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--PolynomialForSpheres_2_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--PolynomialForSpheres_2_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3AlgebraicConcepts +\ingroup PkgCircularKernel3AlgebraicConcepts \cgalConcept Concept to represent diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--Polynomial_1_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--Polynomial_1_3.h index 3d1de1a9e94..9401c645852 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--Polynomial_1_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--Polynomial_1_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3AlgebraicConcepts +\ingroup PkgCircularKernel3AlgebraicConcepts \cgalConcept Concept to represent trivariate polynomials of degree 1 whose diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--PolynomialsForCircles_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--PolynomialsForCircles_3.h index 1126a869bf9..a06bca51ecc 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--PolynomialsForCircles_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--PolynomialsForCircles_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3AlgebraicConcepts +\ingroup PkgCircularKernel3AlgebraicConcepts \cgalConcept Concept to represent a system of polynomials on `FieldNumberType` diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--PolynomialsForLines_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--PolynomialsForLines_3.h index 11da317d7c8..7f2a474f25e 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--PolynomialsForLines_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--PolynomialsForLines_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3AlgebraicConcepts +\ingroup PkgCircularKernel3AlgebraicConcepts \cgalConcept Concept to represent a system of polynomials on `FieldNumberType` diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--RootForSpheres_2_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--RootForSpheres_2_3.h index da3556e3fe8..0e76a7fd05d 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--RootForSpheres_2_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--RootForSpheres_2_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3AlgebraicConcepts +\ingroup PkgCircularKernel3AlgebraicConcepts \cgalConcept Concept to represent the roots of a system of three equations of degree 2 diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--SignAt.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--SignAt.h index e447c16569e..91a6d0ff7ab 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--SignAt.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--SignAt.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3AlgebraicConcepts +\ingroup PkgCircularKernel3AlgebraicConcepts \cgalConcept */ diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--Solve.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--Solve.h index 6c2cab02d7b..b4d8cc88a62 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--Solve.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--Solve.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3AlgebraicConcepts +\ingroup PkgCircularKernel3AlgebraicConcepts \cgalConcept */ diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--XCriticalPoints.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--XCriticalPoints.h index c1ec1bf7e91..449634f1758 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--XCriticalPoints.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--XCriticalPoints.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3AlgebraicConcepts +\ingroup PkgCircularKernel3AlgebraicConcepts \cgalConcept \sa `AlgebraicKernelForSpheres::YCriticalPoints` diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--YCriticalPoints.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--YCriticalPoints.h index 8201c661c4d..225b8d6032c 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--YCriticalPoints.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--YCriticalPoints.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3AlgebraicConcepts +\ingroup PkgCircularKernel3AlgebraicConcepts \cgalConcept \sa `AlgebraicKernelForSpheres::XCriticalPoints` diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--ZCriticalPoints.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--ZCriticalPoints.h index 68e5e99971f..45ba56ce839 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--ZCriticalPoints.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres--ZCriticalPoints.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3AlgebraicConcepts +\ingroup PkgCircularKernel3AlgebraicConcepts \cgalConcept \sa `AlgebraicKernelForSpheres::XCriticalPoints` diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres.h index 9d891eed1db..b07d5a7a7c3 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/AlgebraicKernelForSpheres.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3AlgebraicConcepts +\ingroup PkgCircularKernel3AlgebraicConcepts \cgalConcept The `AlgebraicKernelForSpheres` concept is meant to provide the diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--BoundedSide_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--BoundedSide_3.h index 5a427f81ad4..1229ea46042 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--BoundedSide_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--BoundedSide_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept \brief diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CircularArcPoint_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CircularArcPoint_3.h index c1727d5ce3b..6cab8d00438 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CircularArcPoint_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CircularArcPoint_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept Concept for points on spheres, circles, circular arcs or line arcs. diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CircularArc_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CircularArc_3.h index 365d734af94..913e3383742 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CircularArc_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CircularArc_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept Concept for arcs of circles. diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareThetaZ_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareThetaZ_3.h index 177382b53d2..27f341e6296 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareThetaZ_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareThetaZ_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareTheta_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareTheta_3.h index c89f57589bf..07044092c83 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareTheta_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareTheta_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareXYZ_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareXYZ_3.h index f591957d31e..95421dbdf9e 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareXYZ_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareXYZ_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept \cgalRefines `Kernel::CompareXYZ_3` diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareXY_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareXY_3.h index 857a9f1e6ff..99d384efd69 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareXY_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareXY_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept \brief diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareX_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareX_3.h index 596965a20aa..9f71286a30b 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareX_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareX_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept \brief diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareY_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareY_3.h index df7e7ee7c1e..09dfffb0b17 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareY_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareY_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept \brief diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareZAtTheta_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareZAtTheta_3.h index d7eabaf9662..bbdf4dda764 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareZAtTheta_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareZAtTheta_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept \sa `SphericalKernel::CompareZToRight_3` diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareZToRight_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareZToRight_3.h index afa30a84101..788af2c00a5 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareZToRight_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareZToRight_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareZ_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareZ_3.h index 231e08d4e58..3e6726d5bf3 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareZ_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--CompareZ_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept \cgalRefines `Kernel::CompareZ_3` diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ComputeApproximateAngle_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ComputeApproximateAngle_3.h index 9d1616784fe..b5ffc5fae0d 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ComputeApproximateAngle_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ComputeApproximateAngle_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept */ diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ComputeApproximateSquaredLength_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ComputeApproximateSquaredLength_3.h index 10790dfe157..6c7cdd07d11 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ComputeApproximateSquaredLength_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ComputeApproximateSquaredLength_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept \cgalRefines `Kernel::ComputeApproximateSquaredLength_3` diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ComputeCircularX_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ComputeCircularX_3.h index 1066b75b12f..2d52c075a4b 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ComputeCircularX_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ComputeCircularX_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept */ diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ComputeCircularY_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ComputeCircularY_3.h index cd7832e5945..ffde6e295ba 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ComputeCircularY_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ComputeCircularY_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept */ class SphericalKernel::ComputeCircularY_3 { diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ComputeCircularZ_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ComputeCircularZ_3.h index 980b4fa459a..1c17649edb6 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ComputeCircularZ_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ComputeCircularZ_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept */ diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructBbox_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructBbox_3.h index 4b8973145b1..a2e9ee38d3d 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructBbox_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructBbox_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept \cgalRefines Kernel::ConstructBbox_3 diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructCircle_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructCircle_3.h index 971ee15a6c7..4b3359d8fbe 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructCircle_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructCircle_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept \sa `SphericalKernel::GetEquation` diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructCircularArcPoint_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructCircularArcPoint_3.h index 199e8642715..760bc6d7e0b 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructCircularArcPoint_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructCircularArcPoint_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept */ diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructCircularArc_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructCircularArc_3.h index a98395e59ff..44b8c1fa74f 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructCircularArc_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructCircularArc_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept The circular arc constructed from a circle, a source, and a target, is diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructCircularMaxVertex_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructCircularMaxVertex_3.h index 19a9ed9cdfb..0c4676e8718 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructCircularMaxVertex_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructCircularMaxVertex_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept */ diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructCircularMinVertex_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructCircularMinVertex_3.h index ff0685de062..bd57fb767fb 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructCircularMinVertex_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructCircularMinVertex_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept */ diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructCircularSourceVertex_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructCircularSourceVertex_3.h index 8bad0d7b5a4..e0d9ef7c0f9 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructCircularSourceVertex_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructCircularSourceVertex_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept */ diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructCircularTargetVertex_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructCircularTargetVertex_3.h index f200f4ef213..c702d99b7dd 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructCircularTargetVertex_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructCircularTargetVertex_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept */ diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructLineArc_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructLineArc_3.h index 2f9e57de6ba..6f6d37714ef 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructLineArc_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructLineArc_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept */ diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructLine_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructLine_3.h index 76773ae40b1..27f72c8a0c0 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructLine_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructLine_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept \brief diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructPlane_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructPlane_3.h index 1b955bf1428..de3af6123cf 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructPlane_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructPlane_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept \brief diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructSphere_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructSphere_3.h index ff91610bac5..f6847e012c4 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructSphere_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--ConstructSphere_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept \brief diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--DoIntersect_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--DoIntersect_3.h index 8ec36e83a99..d90877d8b9a 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--DoIntersect_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--DoIntersect_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept \brief Testing whether two curves or surfaces intersect. diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--DoOverlap_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--DoOverlap_3.h index a09666706b3..d74b68decb7 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--DoOverlap_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--DoOverlap_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept */ diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--Equal_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--Equal_3.h index d2ee772abde..6daed207135 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--Equal_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--Equal_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept Testing equality between objects. diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--GetEquation.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--GetEquation.h index 4d28619e57e..9cdf8c27ddb 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--GetEquation.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--GetEquation.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--HasOnBoundedSide_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--HasOnBoundedSide_3.h index 89edee1e7ba..0f35abc8fa4 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--HasOnBoundedSide_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--HasOnBoundedSide_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept \brief diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--HasOnUnboundedSide_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--HasOnUnboundedSide_3.h index 01b8fb9b7a1..2bc7a836d1a 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--HasOnUnboundedSide_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--HasOnUnboundedSide_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept \brief diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--HasOn_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--HasOn_3.h index bf306400dc9..dd48967e7e2 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--HasOn_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--HasOn_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept \cgalRefines `Kernel::HasOn_3` diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--Intersect_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--Intersect_3.h index e46e60c80dc..ccd903ef013 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--Intersect_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--Intersect_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept \cgalRefines `Kernel::Intersect_3` diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--IsThetaMonotone_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--IsThetaMonotone_3.h index de3a4f5d298..3727037a315 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--IsThetaMonotone_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--IsThetaMonotone_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--LineArc_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--LineArc_3.h index 31dd3bae744..238d4b30d76 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--LineArc_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--LineArc_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept Concept for line segments supported by a line that is a model of diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--MakeThetaMonotone_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--MakeThetaMonotone_3.h index fe16e37902f..36cb2e929b9 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--MakeThetaMonotone_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--MakeThetaMonotone_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--Split_3.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--Split_3.h index 64d37b00258..4fb8b3d0238 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--Split_3.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel--Split_3.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept */ diff --git a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel.h b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel.h index 531abd4088d..6e76b59bc3a 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel.h +++ b/Circular_kernel_3/doc/Circular_kernel_3/Concepts/SphericalKernel.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgSphericalKernel3GeometricConcepts +\ingroup PkgCircularKernel3GeometricConcepts \cgalConcept \cgalRefines `Kernel` diff --git a/Circular_kernel_3/doc/Circular_kernel_3/PackageDescription.txt b/Circular_kernel_3/doc/Circular_kernel_3/PackageDescription.txt index 5b04d8f987e..26b34fec208 100644 --- a/Circular_kernel_3/doc/Circular_kernel_3/PackageDescription.txt +++ b/Circular_kernel_3/doc/Circular_kernel_3/PackageDescription.txt @@ -1,31 +1,31 @@ -/// \defgroup PkgSphericalKernel3 3D Spherical Geometry Kernel Reference +/// \defgroup PkgCircularKernel3Ref 3D Spherical Geometry Kernel Reference -/// \defgroup PkgSphericalKernel3GeometricConcepts Geometric Concepts -/// \ingroup PkgSphericalKernel3 +/// \defgroup PkgCircularKernel3GeometricConcepts Geometric Concepts +/// \ingroup PkgCircularKernel3Ref -/// \defgroup PkgSphericalKernel3GeometricClasses Geometric Kernel and Classes -/// \ingroup PkgSphericalKernel3 +/// \defgroup PkgCircularKernel3GeometricClasses Geometric Kernel and Classes +/// \ingroup PkgCircularKernel3Ref -/// \defgroup PkgSphericalKernel3GeometricFunctions Geometric Global Functions -/// \ingroup PkgSphericalKernel3 +/// \defgroup PkgCircularKernel3GeometricFunctions Geometric Global Functions +/// \ingroup PkgCircularKernel3Ref -/// \defgroup PkgSphericalKernel3AlgebraicConcepts Algebraic Concepts -/// \ingroup PkgSphericalKernel3 +/// \defgroup PkgCircularKernel3AlgebraicConcepts Algebraic Concepts +/// \ingroup PkgCircularKernel3Ref -/// \defgroup PkgSphericalKernel3AlgebraicClasses Algebraic Kernel and Classes -/// \ingroup PkgSphericalKernel3 +/// \defgroup PkgCircularKernel3AlgebraicClasses Algebraic Kernel and Classes +/// \ingroup PkgCircularKernel3Ref /*! -\addtogroup PkgSphericalKernel3 -\cgalPkgDescriptionBegin{3D Spherical Geometry Kernel,PkgSphericalKernel3Summary} +\addtogroup PkgCircularKernel3Ref +\cgalPkgDescriptionBegin{3D Spherical Geometry Kernel,PkgCircularKernel3} \cgalPkgPicture{segment_sphere_intersection_detail.png} \cgalPkgSummaryBegin \cgalPkgAuthors{Pedro Machado Manhães de Castro, Frédéric Cazals, Sébastien Loriot, and Monique Teillaud} \cgalPkgDesc{This package is an extension of the linear \cgal %Kernel. It offers functionalities on spheres, circles, circular arcs and line segments, in the 3D space or restricted on a reference sphere.} -\cgalPkgManuals{Chapter_3D_Spherical_Geometry_Kernel,PkgSphericalKernel3} +\cgalPkgManuals{Chapter_3D_Spherical_Geometry_Kernel,PkgCircularKernel3Ref} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{3.4} diff --git a/Circular_kernel_3/examples/Circular_kernel_3/CMakeLists.txt b/Circular_kernel_3/examples/Circular_kernel_3/CMakeLists.txt index becd480281e..fceddecd46a 100644 --- a/Circular_kernel_3/examples/Circular_kernel_3/CMakeLists.txt +++ b/Circular_kernel_3/examples/Circular_kernel_3/CMakeLists.txt @@ -4,18 +4,12 @@ project( Circular_kernel_3_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Circular_kernel_3/test/Circular_kernel_3/CMakeLists.txt b/Circular_kernel_3/test/Circular_kernel_3/CMakeLists.txt index 02e799605db..3b4c24caaa8 100644 --- a/Circular_kernel_3/test/Circular_kernel_3/CMakeLists.txt +++ b/Circular_kernel_3/test/Circular_kernel_3/CMakeLists.txt @@ -4,18 +4,15 @@ project( Circular_kernel_3_Tests ) -CMAKE_MINIMUM_REQUIRED(VERSION 2.8.11) +CMAKE_MINIMUM_REQUIRED(VERSION 3.1) find_package(CGAL QUIET COMPONENTS Core ) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) +include(${CGAL_USE_FILE}) include_directories (BEFORE include) -include_directories (BEFORE ../../include) include_directories (BEFORE ../../../Kernel_23/test/Kernel_23/include) include_directories (BEFORE ../Kernel_23/include) include_directories (BEFORE ../Cartesian_kernel/include) diff --git a/Circulator/doc/Circulator/CGAL/circulator.h b/Circulator/doc/Circulator/CGAL/circulator.h index d081d150af8..7a8cb8551ba 100644 --- a/Circulator/doc/Circulator/CGAL/circulator.h +++ b/Circulator/doc/Circulator/CGAL/circulator.h @@ -295,7 +295,7 @@ template C::size_type circulator_size(C c); namespace CGAL { /*! -\ingroup PkgHandlesAndCirculators +\ingroup PkgHandlesAndCirculatorsRef The circulator traits class distinguishes between circulators and iterators. It defines a local type `category` that is identical to the diff --git a/Circulator/doc/Circulator/PackageDescription.txt b/Circulator/doc/Circulator/PackageDescription.txt index f9141bf7c52..2b781abd240 100644 --- a/Circulator/doc/Circulator/PackageDescription.txt +++ b/Circulator/doc/Circulator/PackageDescription.txt @@ -1,33 +1,33 @@ -/// \defgroup PkgHandlesAndCirculators Handles and Circulators Reference +/// \defgroup PkgHandlesAndCirculatorsRef Handles and Circulators Reference /// \defgroup PkgHandlesAndCirculatorsConcepts Concepts -/// \ingroup PkgHandlesAndCirculators +/// \ingroup PkgHandlesAndCirculatorsRef /// \defgroup PkgHandlesAndCirculatorsAdapter Adapters for Iterators and Containers -/// \ingroup PkgHandlesAndCirculators +/// \ingroup PkgHandlesAndCirculatorsRef /// \defgroup PkgHandlesAndCirculatorsFunctions Functions -/// \ingroup PkgHandlesAndCirculators +/// \ingroup PkgHandlesAndCirculatorsRef /// \defgroup PkgHandlesAndCirculatorsTags Compile Time Tags -/// \ingroup PkgHandlesAndCirculators +/// \ingroup PkgHandlesAndCirculatorsRef /// \defgroup PkgHandlesAndCirculatorsAssert Assertions -/// \ingroup PkgHandlesAndCirculators +/// \ingroup PkgHandlesAndCirculatorsRef /// \defgroup PkgHandlesAndCirculatorsBaseClasses Base Classes -/// \ingroup PkgHandlesAndCirculators +/// \ingroup PkgHandlesAndCirculatorsRef /*! -\addtogroup PkgHandlesAndCirculators -\cgalPkgDescriptionBegin{Handles and Circulators,PkgHandlesAndCirculatorsSummary} +\addtogroup PkgHandlesAndCirculatorsRef +\cgalPkgDescriptionBegin{Handles and Circulators,PkgHandlesAndCirculators} \cgalPkgPicture{circulator.png} \cgalPkgSummaryBegin \cgalPkgAuthors{Olivier Devillers, Lutz Kettner, Sylvain Pion, Michael Seel, and Mariette Yvinec} \cgalPkgDesc{This package descibes handles and circulators. They are related to iterators. Handles allow to dereference but neither to increment nor to decrement. Circulators have no notion of past-the-end, and they are used in \cgal whenever we have cyclic stuctures. } -\cgalPkgManuals{Chapter_Handles_Ranges_and_Circulators,PkgHandlesAndCirculators} +\cgalPkgManuals{Chapter_Handles_Ranges_and_Circulators,PkgHandlesAndCirculatorsRef} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{1.0} diff --git a/Circulator/examples/Circulator/CMakeLists.txt b/Circulator/examples/Circulator/CMakeLists.txt index 1f38ed5bfd4..25ebaaa3029 100644 --- a/Circulator/examples/Circulator/CMakeLists.txt +++ b/Circulator/examples/Circulator/CMakeLists.txt @@ -4,18 +4,12 @@ project( Circulator_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Circulator/test/Circulator/CMakeLists.txt b/Circulator/test/Circulator/CMakeLists.txt index 64c2826e792..330c0553644 100644 --- a/Circulator/test/Circulator/CMakeLists.txt +++ b/Circulator/test/Circulator/CMakeLists.txt @@ -4,18 +4,12 @@ project( Circulator_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Classification/doc/Classification/PackageDescription.txt b/Classification/doc/Classification/PackageDescription.txt index 28404554d77..b1a3dafe536 100644 --- a/Classification/doc/Classification/PackageDescription.txt +++ b/Classification/doc/Classification/PackageDescription.txt @@ -1,68 +1,68 @@ /*! -\defgroup PkgClassification Classification Reference +\defgroup PkgClassificationRef Classification Reference \defgroup PkgClassificationConcepts Concepts -\ingroup PkgClassification +\ingroup PkgClassificationRef \defgroup PkgClassificationMain Main Functions -\ingroup PkgClassification +\ingroup PkgClassificationRef Functions that perform classification based on a set of labels and a classifier, with or without regularization. \defgroup PkgClassificationClassifiers Classifiers -\ingroup PkgClassification +\ingroup PkgClassificationRef Classifiers are functors that, given a label set and an input item, associate this input item with an energy for each label. This energy measures the likelihood of the item to belong to this label. \defgroup PkgClassificationDataStructures Common Data Structures -\ingroup PkgClassification +\ingroup PkgClassificationRef Useful data structures that are used to compute features (computation of eigenvalues, for example). \defgroup PkgClassificationLabel Label -\ingroup PkgClassification +\ingroup PkgClassificationRef A label represents how an item should be classified, for example: _vegetation_, _building_, _road_, etc. \defgroup PkgClassificationFeature Feature -\ingroup PkgClassification +\ingroup PkgClassificationRef Features are defined as scalar fields that associates each input item with a specific value. \defgroup PkgClassificationFeatures Predefined Features -\ingroup PkgClassification +\ingroup PkgClassificationRef \cgal provides some predefined features that are relevant for classification of point sets. \defgroup PkgClassificationPointSet Point Set Classification -\ingroup PkgClassification +\ingroup PkgClassificationRef Data structures specialized to classify point sets. \defgroup PkgClassificationMesh Mesh Classification -\ingroup PkgClassification +\ingroup PkgClassificationRef Data structures specialized to classify surface meshes. \defgroup PkgClassificationCluster Cluster Classification -\ingroup PkgClassification +\ingroup PkgClassificationRef Data structures specialized to classify clusters. -\addtogroup PkgClassification +\addtogroup PkgClassificationRef -\cgalPkgDescriptionBegin{Classification, PkgClassificationSummary} +\cgalPkgDescriptionBegin{Classification, PkgClassification} \cgalPkgPicture{data_classif.png} \cgalPkgSummaryBegin \cgalPkgAuthors{Simon Giraudot, Florent Lafarge} \cgalPkgDesc{This component implements an algorithm that classifies a data set into a user-defined set of labels (such as ground, vegetation, buildings, etc.). A flexible API is provided so that users can classify any type of data, compute their own local features on the input data set, and define their own labels.} -\cgalPkgManuals{Chapter_Classification, PkgClassification} +\cgalPkgManuals{Chapter_Classification, PkgClassificationRef} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{4.12} -\cgalPkgDependsOn{\ref PkgSolverSummary, \ref PkgSpatialSearchingDSummary, [Boost Serialization](http://www.boost.org/libs/serialization) and +\cgalPkgDependsOn{\ref PkgSolverInterface, \ref PkgSpatialSearchingD, [Boost Serialization](http://www.boost.org/libs/serialization) and [Boost IO Streams](http://www.boost.org/libs/iostreams)} \cgalPkgBib{cgal:lm-clscm-12} \cgalPkgLicense{\ref licensesGPL "GPL"} diff --git a/Classification/examples/Classification/CMakeLists.txt b/Classification/examples/Classification/CMakeLists.txt index 5789622899a..392d1708e5c 100644 --- a/Classification/examples/Classification/CMakeLists.txt +++ b/Classification/examples/Classification/CMakeLists.txt @@ -4,7 +4,7 @@ project( Classification_Examples ) -cmake_minimum_required(VERSION 2.8.11) +cmake_minimum_required(VERSION 3.1) # CGAL and its components find_package( CGAL QUIET COMPONENTS ) @@ -14,10 +14,6 @@ if ( NOT CGAL_FOUND ) return() endif() -# include helper file -include( ${CGAL_USE_FILE} ) - - # Boost and its components find_package( Boost REQUIRED ) @@ -53,14 +49,10 @@ endif() include_directories( BEFORE include ) # include for local package -include_directories( BEFORE ../../include ) - # Creating entries for all C++ files with "main" routine # ########################################################## -include( CGAL_CreateSingleSourceCGALProgram ) - # Classification examples set(targets example_classification @@ -78,15 +70,6 @@ set(classification_linked_libraries) set(classification_compile_definitions) -# Use Eigen or BLAS and LAPACK (optional) -find_package(Eigen3 3.1.0) #(requires 3.1.0 or greater) -if (EIGEN3_FOUND) - include( ${EIGEN3_USE_FILE} ) -else() - message(STATUS "NOTICE: This project requires the Eigen library, and will not be compiled.") - return() -endif() - if (Boost_SERIALIZATION_FOUND AND Boost_IOSTREAMS_FOUND) set(classification_linked_libraries ${classification_linked_libraries} ${Boost_SERIALIZATION_LIBRARY} diff --git a/Classification/examples/Classification/data/b9_clusters_config.gz b/Classification/examples/Classification/data/b9_clusters_config.gz index 7185b55279d..8d1303c1ad0 100644 Binary files a/Classification/examples/Classification/data/b9_clusters_config.gz and b/Classification/examples/Classification/data/b9_clusters_config.gz differ diff --git a/Classification/examples/Classification/data/b9_mesh_config.gz b/Classification/examples/Classification/data/b9_mesh_config.gz index 5f96308d7ce..07af3e3496b 100644 Binary files a/Classification/examples/Classification/data/b9_mesh_config.gz and b/Classification/examples/Classification/data/b9_mesh_config.gz differ diff --git a/Classification/include/CGAL/Classification/internal/auxiliary/random-forest/node.hpp b/Classification/include/CGAL/Classification/internal/auxiliary/random-forest/node.hpp index 00e86323f84..9e02ed11400 100644 --- a/Classification/include/CGAL/Classification/internal/auxiliary/random-forest/node.hpp +++ b/Classification/include/CGAL/Classification/internal/auxiliary/random-forest/node.hpp @@ -28,6 +28,8 @@ // * changed inclusion protection tag // * moved to namespace CGAL::internal:: // * fix computation of node_dist[label] so that results are always <= 1.0 +// * change serialization functions to avoid a bug with boost and some +// compilers (that leads to dereferencing a null pointer) #ifndef CGAL_INTERNAL_LIBLEARNING_RANDOMFORESTS_NODE_H #define CGAL_INTERNAL_LIBLEARNING_RANDOMFORESTS_NODE_H @@ -249,8 +251,11 @@ public: ar & BOOST_SERIALIZATION_NVP(params); ar & BOOST_SERIALIZATION_NVP(splitter); ar & BOOST_SERIALIZATION_NVP(node_dist); - ar & BOOST_SERIALIZATION_NVP(left); - ar & BOOST_SERIALIZATION_NVP(right); + if (!is_leaf) + { + ar & BOOST_SERIALIZATION_NVP(left); + ar & BOOST_SERIALIZATION_NVP(right); + } } }; diff --git a/Classification/test/Classification/CMakeLists.txt b/Classification/test/Classification/CMakeLists.txt index 845522e5213..fd5d89785b2 100644 --- a/Classification/test/Classification/CMakeLists.txt +++ b/Classification/test/Classification/CMakeLists.txt @@ -4,7 +4,7 @@ project( Classification_Tests ) -cmake_minimum_required(VERSION 2.8.11) +cmake_minimum_required(VERSION 3.1) # CGAL and its components find_package( CGAL QUIET COMPONENTS ) @@ -16,10 +16,6 @@ if ( NOT CGAL_FOUND ) endif() -# include helper file -include( ${CGAL_USE_FILE} ) - - # Boost and its components find_package( Boost REQUIRED ) @@ -49,14 +45,10 @@ find_package( TBB ) include_directories( BEFORE include ) # include for local package -include_directories( BEFORE ../../include ) - # Creating entries for all C++ files with "main" routine # ########################################################## -include( CGAL_CreateSingleSourceCGALProgram ) - #add_definitions("-DCGAL_DO_NOT_USE_BOYKOV_KOLMOGOROV_MAXFLOW_SOFTWARE") # Classification requires some C++11 features @@ -104,3 +96,11 @@ if(TARGET deprecated_test_classification_point_set) CGAL_target_use_TBB( deprecated_test_classification_point_set ) endif() endif() + +create_single_source_cgal_program( "test_classification_io.cpp" CXX_FEATURES ${needed_cxx_features} ) +if(TARGET test_classification_io) + target_link_libraries(test_classification_io PUBLIC ${classification_linked_libraries}) + if (TBB_FOUND) + CGAL_target_use_TBB( test_classification_io ) + endif() +endif() diff --git a/Classification/test/Classification/test_classification_io.cpp b/Classification/test/Classification/test_classification_io.cpp new file mode 100644 index 00000000000..cc05ccfb110 --- /dev/null +++ b/Classification/test/Classification/test_classification_io.cpp @@ -0,0 +1,99 @@ +#if defined (_MSC_VER) && !defined (_WIN64) +#pragma warning(disable:4244) // boost::number_distance::distance() + // converts 64 to 32 bits integers +#endif + +#include +#include +#include +#include + +#include +#include +#include +#include + +typedef CGAL::Simple_cartesian Kernel; +typedef Kernel::Point_3 Point; +typedef Kernel::Vector_3 Vector; +typedef CGAL::Point_set_3 Point_set; +typedef Point_set::Point_map Point_map; + +typedef Kernel::Iso_cuboid_3 Iso_cuboid_3; + +namespace Classification = CGAL::Classification; + +typedef Classification::Label_handle Label_handle; +typedef Classification::Feature_handle Feature_handle; +typedef Classification::Label_set Label_set; +typedef Classification::Feature_set Feature_set; + +typedef Classification::ETHZ_random_forest_classifier Classifier; + +typedef Classification::Planimetric_grid Planimetric_grid; +typedef Classification::Point_set_neighborhood Neighborhood; +typedef Classification::Local_eigen_analysis Local_eigen_analysis; + +typedef Classification::Feature::Distance_to_plane Distance_to_plane; +typedef Classification::Feature::Elevation Elevation; + +int main (int, char**) +{ + Point_set points; + + for (std::size_t i = 0; i < 1000; ++ i) + points.insert (Point (CGAL::get_default_random().get_double(), + CGAL::get_default_random().get_double(), + CGAL::get_default_random().get_double())); + + Iso_cuboid_3 bbox = CGAL::bounding_box (points.points().begin(), points.points().end()); + + float grid_resolution = 0.34f; + float radius_dtm = 15.0f; + + Planimetric_grid grid (points, points.point_map(), bbox, grid_resolution); + Neighborhood neighborhood (points, points.point_map()); + Local_eigen_analysis eigen + = Local_eigen_analysis::create_from_point_set + (points, points.point_map(), neighborhood.k_neighbor_query(6)); + + Feature_set features; + Feature_handle distance_to_plane = features.add (points, points.point_map(), eigen); + Feature_handle elevation = features.add (points, points.point_map(), grid, + radius_dtm); + + Label_set labels; + + std::vector training_set (points.size(), -1); + for (std::size_t i = 0; i < 3; ++ i) + { + std::ostringstream oss; + oss << "label_" << i; + Label_handle lh = labels.add(oss.str().c_str()); + + for (std::size_t j = 0; j < 100; ++ j) + training_set[std::size_t(CGAL::get_default_random().get_int(0, int(training_set.size())))] = int(i); + } + + Classifier classifier (labels, features); + classifier.train (training_set); + + std::ofstream outf ("output_config.gz", std::ios::binary); + outf.precision(18); + classifier.save_configuration(outf); + outf.close(); + + Classifier classifier2 (labels, features); + std::ifstream inf ("output_config.gz", std::ios::binary); + classifier2.load_configuration(inf); + + std::vector label_indices; + std::vector label_indices_2; + + Classification::classify (points, labels, classifier, label_indices); + Classification::classify (points, labels, classifier2, label_indices_2); + + assert (label_indices == label_indices_2); + + return EXIT_SUCCESS; +} diff --git a/Combinatorial_map/doc/Combinatorial_map/PackageDescription.txt b/Combinatorial_map/doc/Combinatorial_map/PackageDescription.txt index 9dbdd2feb72..f1c758d89df 100644 --- a/Combinatorial_map/doc/Combinatorial_map/PackageDescription.txt +++ b/Combinatorial_map/doc/Combinatorial_map/PackageDescription.txt @@ -1,10 +1,10 @@ -/// \defgroup PkgCombinatorialMaps Combinatorial Maps Reference +/// \defgroup PkgCombinatorialMapsRef Combinatorial Maps Reference /// \defgroup PkgCombinatorialMapsConcepts Concepts -/// \ingroup PkgCombinatorialMaps +/// \ingroup PkgCombinatorialMapsRef /// \defgroup PkgCombinatorialMapsClasses Classes -/// \ingroup PkgCombinatorialMaps +/// \ingroup PkgCombinatorialMapsRef /*! Basic constructions. \code @@ -12,7 +12,7 @@ \endcode */ /// \defgroup PkgCombinatorialMapsConstructions Constructions -/// \ingroup PkgCombinatorialMaps +/// \ingroup PkgCombinatorialMapsRef /*! High-level operations. \code @@ -20,17 +20,17 @@ \endcode */ /// \defgroup PkgCombinatorialMapsOperations Operations -/// \ingroup PkgCombinatorialMaps +/// \ingroup PkgCombinatorialMapsRef /*! -\addtogroup PkgCombinatorialMaps -\cgalPkgDescriptionBegin{Combinatorial Maps,PkgCombinatorialMapsSummary} +\addtogroup PkgCombinatorialMapsRef +\cgalPkgDescriptionBegin{Combinatorial Maps,PkgCombinatorialMaps} \cgalPkgPicture{cmap_logo.png} \cgalPkgSummaryBegin \cgalPkgAuthor{Guillaume Damiand} \cgalPkgDesc{This package implements Combinatorial Maps in d dimensions. A combinatorial map is a data structure enabling to represent an orientable subdivided object by describing all the cells of the subdivision (for example in 3D vertices, edges, faces, volumes) and all the incidence and adjacency relationships between these cells. Information can be associated to cells thanks to attributes. In 2D, a combinatorial map is equivalent to a halfedge data structure. The package provides basic creation, modification operations, and several iterators enabling to run through some specific part of the object.} -\cgalPkgManuals{Chapter_Combinatorial_Maps,PkgCombinatorialMaps} +\cgalPkgManuals{Chapter_Combinatorial_Maps,PkgCombinatorialMapsRef} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{3.9} diff --git a/Combinatorial_map/examples/Combinatorial_map/CMakeLists.txt b/Combinatorial_map/examples/Combinatorial_map/CMakeLists.txt index da65cb68661..78868a0c372 100644 --- a/Combinatorial_map/examples/Combinatorial_map/CMakeLists.txt +++ b/Combinatorial_map/examples/Combinatorial_map/CMakeLists.txt @@ -4,18 +4,12 @@ project( Combinatorial_map_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Combinatorial_map/test/Combinatorial_map/CMakeLists.txt b/Combinatorial_map/test/Combinatorial_map/CMakeLists.txt index b887bd817d0..f8dd901b528 100644 --- a/Combinatorial_map/test/Combinatorial_map/CMakeLists.txt +++ b/Combinatorial_map/test/Combinatorial_map/CMakeLists.txt @@ -4,18 +4,12 @@ project( Combinatorial_map_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Cone_spanners_2/doc/Cone_spanners_2/PackageDescription.txt b/Cone_spanners_2/doc/Cone_spanners_2/PackageDescription.txt index f0258b35140..5833bf7e4ae 100644 --- a/Cone_spanners_2/doc/Cone_spanners_2/PackageDescription.txt +++ b/Cone_spanners_2/doc/Cone_spanners_2/PackageDescription.txt @@ -1,11 +1,11 @@ // PRETTY PACKAGE NAME should equal the project title in Doxyfile.in -/// \defgroup PkgConeBasedSpanners Cone-Based Spanners Reference +/// \defgroup PkgConeSpanners2Ref Cone-Based Spanners Reference /*! -\addtogroup PkgConeBasedSpanners +\addtogroup PkgConeSpanners2Ref -\cgalPkgDescriptionBegin{Cone-Based Spanners,PkgConeBasedSpannersSummary} +\cgalPkgDescriptionBegin{Cone-Based Spanners,PkgConeSpanners2} \cgalPkgPicture{Logo-ConeSpanners.png} \cgalPkgSummaryBegin @@ -20,7 +20,7 @@ value defined in \cgal, which is still accurate enough for most applications. Moreover, for visualization purpose, this package provides a global function to generate the data and script files used by Gnuplot to plot the constructed graphs. This package also provides options for the Half Yao graph and the Half Theta graph.} -\cgalPkgManuals{Chapter_ConeBasedSpanners,PkgConeBasedSpanners} +\cgalPkgManuals{Chapter_ConeBasedSpanners,PkgConeSpanners2Ref} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin diff --git a/Cone_spanners_2/examples/Cone_spanners_2/CMakeLists.txt b/Cone_spanners_2/examples/Cone_spanners_2/CMakeLists.txt index bae9b74e175..c4e959b43f1 100644 --- a/Cone_spanners_2/examples/Cone_spanners_2/CMakeLists.txt +++ b/Cone_spanners_2/examples/Cone_spanners_2/CMakeLists.txt @@ -4,17 +4,12 @@ project( Cone_spanners_2_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET COMPONENTS Core) if ( CGAL_FOUND AND CGAL_Core_FOUND) - - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") + include(${CGAL_USE_FILE}) if (MSVC) # Turn off a boost related warning that appears with VC2015 diff --git a/Cone_spanners_2/include/CGAL/Compute_cone_boundaries_2.h b/Cone_spanners_2/include/CGAL/Compute_cone_boundaries_2.h index 19b61beaf66..8ef3ada4897 100644 --- a/Cone_spanners_2/include/CGAL/Compute_cone_boundaries_2.h +++ b/Cone_spanners_2/include/CGAL/Compute_cone_boundaries_2.h @@ -44,7 +44,7 @@ namespace CGAL { -/*! \ingroup PkgConeBasedSpanners +/*! \ingroup PkgConeSpanners2Ref * * \brief The functor for computing the directions of cone boundaries with a given * cone number and a given initial direction. diff --git a/Cone_spanners_2/include/CGAL/Cone_spanners_enum_2.h b/Cone_spanners_2/include/CGAL/Cone_spanners_enum_2.h index 7f7832bfd43..ca9957a2112 100644 --- a/Cone_spanners_2/include/CGAL/Cone_spanners_enum_2.h +++ b/Cone_spanners_2/include/CGAL/Cone_spanners_enum_2.h @@ -31,7 +31,7 @@ namespace CGAL { - /*! \ingroup PkgConeBasedSpanners + /*! \ingroup PkgConeSpanners2Ref \brief An enum of the choice of cones in cone spanners. */ diff --git a/Cone_spanners_2/include/CGAL/Construct_theta_graph_2.h b/Cone_spanners_2/include/CGAL/Construct_theta_graph_2.h index 156d5b3e151..8bca1174f6a 100644 --- a/Cone_spanners_2/include/CGAL/Construct_theta_graph_2.h +++ b/Cone_spanners_2/include/CGAL/Construct_theta_graph_2.h @@ -45,7 +45,7 @@ namespace CGAL { -/*! \ingroup PkgConeBasedSpanners +/*! \ingroup PkgConeSpanners2Ref \brief A template functor for constructing Theta graphs with a given set of 2D points and a given initial direction for the cone boundaries. diff --git a/Cone_spanners_2/include/CGAL/Construct_yao_graph_2.h b/Cone_spanners_2/include/CGAL/Construct_yao_graph_2.h index 621ce9011a6..8efbc4d921a 100644 --- a/Cone_spanners_2/include/CGAL/Construct_yao_graph_2.h +++ b/Cone_spanners_2/include/CGAL/Construct_yao_graph_2.h @@ -42,7 +42,7 @@ namespace CGAL { -/*! \ingroup PkgConeBasedSpanners +/*! \ingroup PkgConeSpanners2Ref \brief A template functor for constructing Yao graphs with a given set of 2D points and a given initial direction for the cone boundaries. diff --git a/Cone_spanners_2/include/CGAL/gnuplot_output_2.h b/Cone_spanners_2/include/CGAL/gnuplot_output_2.h index 95ec96f016b..d4fecddc892 100644 --- a/Cone_spanners_2/include/CGAL/gnuplot_output_2.h +++ b/Cone_spanners_2/include/CGAL/gnuplot_output_2.h @@ -46,7 +46,7 @@ namespace CGAL { /* ------ Declarations go first, then implementations follow. ------ */ /*! -* \ingroup PkgConeBasedSpanners +* \ingroup PkgConeSpanners2Ref * \brief Output a set of files used by Gnuplot to plot `g`. * * The files that are generated for Gnuplot are: diff --git a/Cone_spanners_2/test/Cone_spanners_2/CMakeLists.txt b/Cone_spanners_2/test/Cone_spanners_2/CMakeLists.txt index 0c40fa1edba..a859efd04e6 100644 --- a/Cone_spanners_2/test/Cone_spanners_2/CMakeLists.txt +++ b/Cone_spanners_2/test/Cone_spanners_2/CMakeLists.txt @@ -4,19 +4,13 @@ project( Cone_spanners_2_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET COMPONENTS Core) if ( CGAL_FOUND AND CGAL_Core_FOUND) - - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - - include_directories (BEFORE "include") + include(${CGAL_USE_FILE}) + include_directories (BEFORE "include") # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) diff --git a/Convex_decomposition_3/doc/Convex_decomposition_3/PackageDescription.txt b/Convex_decomposition_3/doc/Convex_decomposition_3/PackageDescription.txt index e572fe2a1be..19c85a1d7f5 100644 --- a/Convex_decomposition_3/doc/Convex_decomposition_3/PackageDescription.txt +++ b/Convex_decomposition_3/doc/Convex_decomposition_3/PackageDescription.txt @@ -1,13 +1,13 @@ -/// \defgroup PkgConvexDecomposition3 Convex Decomposition of Polyhedra Reference +/// \defgroup PkgConvexDecomposition3Ref Convex Decomposition of Polyhedra Reference /*! -\addtogroup PkgConvexDecomposition3 -\cgalPkgDescriptionBegin{Convex Decomposition of Polyhedra,PkgConvexDecomposition3Summary} +\addtogroup PkgConvexDecomposition3Ref +\cgalPkgDescriptionBegin{Convex Decomposition of Polyhedra,PkgConvexDecomposition3} \cgalPkgPicture{Convex_decomposition_3/fig/Convex_decomposition_3-teaser.png} \cgalPkgSummaryBegin \cgalPkgAuthor{Peter Hachenberger} \cgalPkgDesc{This packages provides a function for decomposing a bounded polyhedron into convex sub-polyhedra. The decomposition yields \f$ O(r^2)\f$ convex pieces, where \f$ r\f$ is the number of edges, whose adjacent facets form an angle of more than 180 degrees with respect to the polyhedron's interior. This bound is worst-case optimal. } -\cgalPkgManuals{Chapter_Convex_Decomposition_of_Polyhedra,PkgConvexDecomposition3} +\cgalPkgManuals{Chapter_Convex_Decomposition_of_Polyhedra,PkgConvexDecomposition3Ref} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{3.5} diff --git a/Convex_decomposition_3/examples/Convex_decomposition_3/CMakeLists.txt b/Convex_decomposition_3/examples/Convex_decomposition_3/CMakeLists.txt index dad77e423ff..459d14c78b5 100644 --- a/Convex_decomposition_3/examples/Convex_decomposition_3/CMakeLists.txt +++ b/Convex_decomposition_3/examples/Convex_decomposition_3/CMakeLists.txt @@ -4,18 +4,12 @@ project( Convex_decomposition_3_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Convex_decomposition_3/include/CGAL/convex_decomposition_3.h b/Convex_decomposition_3/include/CGAL/convex_decomposition_3.h index f232603ff8f..45ae44ca0f7 100644 --- a/Convex_decomposition_3/include/CGAL/convex_decomposition_3.h +++ b/Convex_decomposition_3/include/CGAL/convex_decomposition_3.h @@ -44,7 +44,7 @@ namespace CGAL { /*! -\ingroup PkgConvexDecomposition3 +\ingroup PkgConvexDecomposition3Ref The function `convex_decomposition_3()` inserts additional facets into the given `Nef_polyhedron_3` `N`, such that each bounded diff --git a/Convex_decomposition_3/test/Convex_decomposition_3/CMakeLists.txt b/Convex_decomposition_3/test/Convex_decomposition_3/CMakeLists.txt index c29be980c2c..8de39c59399 100644 --- a/Convex_decomposition_3/test/Convex_decomposition_3/CMakeLists.txt +++ b/Convex_decomposition_3/test/Convex_decomposition_3/CMakeLists.txt @@ -4,18 +4,12 @@ project( Convex_decomposition_3_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Convex_hull_2/doc/Convex_hull_2/PackageDescription.txt b/Convex_hull_2/doc/Convex_hull_2/PackageDescription.txt index e27762884c3..8ccbfaa6dfa 100644 --- a/Convex_hull_2/doc/Convex_hull_2/PackageDescription.txt +++ b/Convex_hull_2/doc/Convex_hull_2/PackageDescription.txt @@ -1,32 +1,32 @@ -/// \defgroup PkgConvexHull2 2D Convex Hulls and Extreme Points Reference +/// \defgroup PkgConvexHull2Ref 2D Convex Hulls and Extreme Points Reference /// \defgroup PkgConvexHull2Concepts Concepts -/// \ingroup PkgConvexHull2 +/// \ingroup PkgConvexHull2Ref /// \defgroup PkgConvexHull2Traits Traits Classes -/// \ingroup PkgConvexHull2 +/// \ingroup PkgConvexHull2Ref /// \defgroup PkgConvexHull2Functions Convex Hull Functions -/// \ingroup PkgConvexHull2 +/// \ingroup PkgConvexHull2Ref /// \defgroup PkgConvexHull2Convexity Convexity Checking -/// \ingroup PkgConvexHull2 +/// \ingroup PkgConvexHull2Ref /// \defgroup PkgConvexHull2Subsequence Hull Subsequence Functions -/// \ingroup PkgConvexHull2 +/// \ingroup PkgConvexHull2Ref /// \defgroup PkgConvexHull2Extreme Extreme Point Functions -/// \ingroup PkgConvexHull2 +/// \ingroup PkgConvexHull2Ref /*! -\addtogroup PkgConvexHull2 +\addtogroup PkgConvexHull2Ref -\cgalPkgDescriptionBegin{2D Convex Hulls and Extreme Points,PkgConvexHull2Summary} +\cgalPkgDescriptionBegin{2D Convex Hulls and Extreme Points,PkgConvexHull2} \cgalPkgPicture{Convex_hull_2/fig/convex_hull.png} \cgalPkgSummaryBegin \cgalPkgAuthors{Susan Hert and Stefan Schirra} \cgalPkgDesc{This package provides functions for computing convex hulls in two dimensions as well as functions for checking if sets of points are strongly convex are not. There are also a number of functions described for computing particular extreme points and subsequences of hull points, such as the lower and upper hull of a set of points.} -\cgalPkgManuals{Chapter_2D_Convex_Hulls_and_Extreme_Points,PkgConvexHull2} +\cgalPkgManuals{Chapter_2D_Convex_Hulls_and_Extreme_Points,PkgConvexHull2Ref} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{1.0} diff --git a/Convex_hull_2/examples/Convex_hull_2/CMakeLists.txt b/Convex_hull_2/examples/Convex_hull_2/CMakeLists.txt index c448c10a81f..fb81c4d6131 100644 --- a/Convex_hull_2/examples/Convex_hull_2/CMakeLists.txt +++ b/Convex_hull_2/examples/Convex_hull_2/CMakeLists.txt @@ -4,19 +4,13 @@ project( Convex_hull_2_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - - include_directories (BEFORE "include") + include_directories (BEFORE "include") # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) diff --git a/Convex_hull_2/test/Convex_hull_2/CMakeLists.txt b/Convex_hull_2/test/Convex_hull_2/CMakeLists.txt index f2f0a949a66..a39a58f5f99 100644 --- a/Convex_hull_2/test/Convex_hull_2/CMakeLists.txt +++ b/Convex_hull_2/test/Convex_hull_2/CMakeLists.txt @@ -4,19 +4,13 @@ project( Convex_hull_2_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - - include_directories (BEFORE "include") + include_directories (BEFORE "include") # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) diff --git a/Convex_hull_3/demo/Convex_hull_3/CMakeLists.txt b/Convex_hull_3/demo/Convex_hull_3/CMakeLists.txt index 0a59e6cc867..59c80f4ec0e 100644 --- a/Convex_hull_3/demo/Convex_hull_3/CMakeLists.txt +++ b/Convex_hull_3/demo/Convex_hull_3/CMakeLists.txt @@ -16,10 +16,6 @@ find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - create_single_source_cgal_program( "quickhull_3_demo.cpp" ) else() diff --git a/Convex_hull_3/doc/Convex_hull_3/Concepts/ConvexHullTraits_3.h b/Convex_hull_3/doc/Convex_hull_3/Concepts/ConvexHullTraits_3.h index f5992e58347..97837cbae05 100644 --- a/Convex_hull_3/doc/Convex_hull_3/Concepts/ConvexHullTraits_3.h +++ b/Convex_hull_3/doc/Convex_hull_3/Concepts/ConvexHullTraits_3.h @@ -87,11 +87,9 @@ typedef unspecified_type Has_on_positive_side_3; /*! Predicate object type that provides -a constructor taking a single `Point_3` object and -`bool operator()(Point_3 q, Point_3 r)`, which returns true iff the +`bool operator()(Point_3 p, Point_3 q, Point_3 r)`, which returns true iff the distance from `q` to `p` is smaller than the distance from -`r` to `p`, where `p` is the point passed to the object -at construction. +`r` to `p`. */ typedef unspecified_type Less_distance_to_point_3; @@ -105,7 +103,7 @@ typedef unspecified_type Less_signed_distance_to_plane_3; /*! A traits class providing the requirements of the template parameter `Traits` of -the 2D convex hull function `CGAL::ch_bykat()` such that `Traits::Point_2` +the 2D convex hull function `CGAL::ch_akl_toussaint()` such that `Traits::Point_2` is `Point_3`, and the 2D points considered in the algorithm are the projections of the 3D points in the `xy`-plane. If this type is not available, the function `CGAL::convex_hull_3()` will diff --git a/Convex_hull_3/doc/Convex_hull_3/PackageDescription.txt b/Convex_hull_3/doc/Convex_hull_3/PackageDescription.txt index 9f0636fa1e3..1c808b0fdc0 100644 --- a/Convex_hull_3/doc/Convex_hull_3/PackageDescription.txt +++ b/Convex_hull_3/doc/Convex_hull_3/PackageDescription.txt @@ -1,13 +1,13 @@ -/// \defgroup PkgConvexHull3 3D Convex Hulls Reference +/// \defgroup PkgConvexHull3Ref 3D Convex Hulls Reference /// \defgroup PkgConvexHull3Concepts Concepts -/// \ingroup PkgConvexHull3 +/// \ingroup PkgConvexHull3Ref /// \defgroup PkgConvexHull3Traits Traits Classes -/// \ingroup PkgConvexHull3 +/// \ingroup PkgConvexHull3Ref /*! \defgroup PkgConvexHull3Functions Convex Hull Functions - \ingroup PkgConvexHull3 + \ingroup PkgConvexHull3Ref The function `convex_hull_3()` computes the convex hull of a given set of three-dimensional points. @@ -17,22 +17,22 @@ degenerate hull may also be possible. */ /// \defgroup PkgConvexityChecking Convexity Checking -/// \ingroup PkgConvexHull3 +/// \ingroup PkgConvexHull3Ref /*! -\addtogroup PkgConvexHull3 +\addtogroup PkgConvexHull3Ref \todo fix or keep the `Default_traits` -\cgalPkgDescriptionBegin{3D Convex Hulls,PkgConvexHull3Summary} +\cgalPkgDescriptionBegin{3D Convex Hulls,PkgConvexHull3} \cgalPkgPicture{Convex_hull_3/fig/bunny.png} \cgalPkgSummaryBegin \cgalPkgAuthors{Susan Hert and Stefan Schirra} \cgalPkgDesc{This package provides functions for computing convex hulls in three dimensions as well as functions for checking if sets of points are strongly convex or not. One can compute the convex hull of a set of points in three dimensions in two ways: using a static algorithm or using a triangulation to get a fully dynamic computation.} -\cgalPkgManuals{Chapter_3D_Convex_Hulls,PkgConvexHull3} +\cgalPkgManuals{Chapter_3D_Convex_Hulls,PkgConvexHull3Ref} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{1.1} -\cgalPkgDependsOn{The dynamic algorithms depend on \ref PkgTriangulation3Summary "3D Triangulations".} +\cgalPkgDependsOn{The dynamic algorithms depend on \ref PkgTriangulation3 "3D Triangulations".} \cgalPkgBib{cgal:hs-ch3} \cgalPkgLicense{\ref licensesGPL "GPL"} \cgalPkgDemo{Polyhedron demo,polyhedron_3.zip} diff --git a/Convex_hull_3/examples/Convex_hull_3/CMakeLists.txt b/Convex_hull_3/examples/Convex_hull_3/CMakeLists.txt index 571407cb649..a2a70fa2592 100644 --- a/Convex_hull_3/examples/Convex_hull_3/CMakeLists.txt +++ b/Convex_hull_3/examples/Convex_hull_3/CMakeLists.txt @@ -4,7 +4,7 @@ project( Convex_hull_3_Examples ) -cmake_minimum_required(VERSION 2.8.11) +cmake_minimum_required(VERSION 3.1) # CGAL and its components find_package( CGAL QUIET COMPONENTS ) @@ -16,10 +16,6 @@ if ( NOT CGAL_FOUND ) endif() -# include helper file -include( ${CGAL_USE_FILE} ) - - # Boost and its components find_package( Boost REQUIRED ) @@ -42,14 +38,10 @@ endif() # include for local directory # include for local package -include_directories( BEFORE ../../include ) - # Creating entries for all C++ files with "main" routine # ########################################################## -include( CGAL_CreateSingleSourceCGALProgram ) - create_single_source_cgal_program( "dynamic_hull_3.cpp" ) create_single_source_cgal_program( "dynamic_hull_LCC_3.cpp" ) diff --git a/Convex_hull_3/test/Convex_hull_3/CMakeLists.txt b/Convex_hull_3/test/Convex_hull_3/CMakeLists.txt index cc07c627de0..beb28619ce8 100644 --- a/Convex_hull_3/test/Convex_hull_3/CMakeLists.txt +++ b/Convex_hull_3/test/Convex_hull_3/CMakeLists.txt @@ -4,16 +4,12 @@ project( Convex_hull_3_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - find_package( OpenMesh QUIET ) if ( OpenMesh_FOUND ) @@ -22,9 +18,7 @@ if ( CGAL_FOUND ) message(STATUS "Examples that use OpenMesh will not be compiled.") endif() - include_directories (BEFORE "../../include") - - include_directories (BEFORE "include") + include_directories (BEFORE "include") # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) diff --git a/Convex_hull_d/doc/Convex_hull_d/CGAL/Convex_hull_d.h b/Convex_hull_d/doc/Convex_hull_d/CGAL/Convex_hull_d.h index ec21aaa1d83..c14515a6e9a 100644 --- a/Convex_hull_d/doc/Convex_hull_d/CGAL/Convex_hull_d.h +++ b/Convex_hull_d/doc/Convex_hull_d/CGAL/Convex_hull_d.h @@ -1,9 +1,9 @@ namespace CGAL { /*! -\ingroup PkgConvexHullD +\ingroup PkgConvexHullDRef -\deprecated This package is deprecated since the version 4.6 of \cgal. The package \ref PkgTriangulationsSummary should be used instead. +\deprecated This package is deprecated since the version 4.6 of \cgal. The package \ref PkgTriangulations should be used instead. An instance `C` of type `Convex_hull_d` is the convex hull of a multi-set `S` of points in \f$ d\f$-dimensional space. We call diff --git a/Convex_hull_d/doc/Convex_hull_d/CGAL/Convex_hull_d_to_polyhedron_3.h b/Convex_hull_d/doc/Convex_hull_d/CGAL/Convex_hull_d_to_polyhedron_3.h index 13d0c98dfd9..9f7775b2157 100644 --- a/Convex_hull_d/doc/Convex_hull_d/CGAL/Convex_hull_d_to_polyhedron_3.h +++ b/Convex_hull_d/doc/Convex_hull_d/CGAL/Convex_hull_d_to_polyhedron_3.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\deprecated This package is deprecated since the version 4.6 of \cgal. The package \ref PkgTriangulationsSummary should be used instead. +\deprecated This package is deprecated since the version 4.6 of \cgal. The package \ref PkgTriangulations should be used instead. converts the convex hull `C` to polyhedral surface stored in `P`. @@ -13,7 +13,7 @@ template void convex_hull_d_to_polyhedron_3( const Convex_hull_d& C, Polyhedron_3& P) ; /*! -\deprecated This package is deprecated since the version 4.6 of \cgal. The package \ref PkgTriangulationsSummary should be used instead +\deprecated This package is deprecated since the version 4.6 of \cgal. The package \ref PkgTriangulations should be used instead constructs the representation of the surface of `C` as a bidirected LEDA graph `G`. diff --git a/Convex_hull_d/doc/Convex_hull_d/CGAL/Convex_hull_d_traits_3.h b/Convex_hull_d/doc/Convex_hull_d/CGAL/Convex_hull_d_traits_3.h index 3719f9fc270..694105e5729 100644 --- a/Convex_hull_d/doc/Convex_hull_d/CGAL/Convex_hull_d_traits_3.h +++ b/Convex_hull_d/doc/Convex_hull_d/CGAL/Convex_hull_d_traits_3.h @@ -1,9 +1,9 @@ namespace CGAL { /*! -\ingroup PkgConvexHullD +\ingroup PkgConvexHullDRef -\deprecated This package is deprecated since the version 4.6 of \cgal. The package \ref PkgTriangulationsSummary should be used instead. +\deprecated This package is deprecated since the version 4.6 of \cgal. The package \ref PkgTriangulations should be used instead. diff --git a/Convex_hull_d/doc/Convex_hull_d/CGAL/Delaunay_d.h b/Convex_hull_d/doc/Convex_hull_d/CGAL/Delaunay_d.h index eb83d360fb8..21e2d14953d 100644 --- a/Convex_hull_d/doc/Convex_hull_d/CGAL/Delaunay_d.h +++ b/Convex_hull_d/doc/Convex_hull_d/CGAL/Delaunay_d.h @@ -1,9 +1,9 @@ namespace CGAL { /*! -\ingroup PkgConvexHullD +\ingroup PkgConvexHullDRef -\deprecated This package is deprecated since the version 4.6 of \cgal. The package \ref PkgTriangulationsSummary should be used instead. +\deprecated This package is deprecated since the version 4.6 of \cgal. The package \ref PkgTriangulations should be used instead. An instance `DT` of type `Delaunay_d< R, Lifted_R >` is the nearest and furthest site Delaunay triangulation of a set `S` of diff --git a/Convex_hull_d/doc/Convex_hull_d/Concepts/ConvexHullTraits_d.h b/Convex_hull_d/doc/Convex_hull_d/Concepts/ConvexHullTraits_d.h index a5b30b4e9cb..3be7fa3ddbb 100644 --- a/Convex_hull_d/doc/Convex_hull_d/Concepts/ConvexHullTraits_d.h +++ b/Convex_hull_d/doc/Convex_hull_d/Concepts/ConvexHullTraits_d.h @@ -2,7 +2,7 @@ \ingroup PkgConvexHullDConcepts \cgalConcept -\deprecated This package is deprecated since the version 4.6 of \cgal. The package \ref PkgTriangulationsSummary should be used instead. +\deprecated This package is deprecated since the version 4.6 of \cgal. The package \ref PkgTriangulations should be used instead. Requirements of the traits class to be used with the class `CGAL::Convex_hull_d`. diff --git a/Convex_hull_d/doc/Convex_hull_d/Concepts/DelaunayLiftedTraits_d.h b/Convex_hull_d/doc/Convex_hull_d/Concepts/DelaunayLiftedTraits_d.h index d6211139b40..047dcdd09b1 100644 --- a/Convex_hull_d/doc/Convex_hull_d/Concepts/DelaunayLiftedTraits_d.h +++ b/Convex_hull_d/doc/Convex_hull_d/Concepts/DelaunayLiftedTraits_d.h @@ -2,7 +2,7 @@ \ingroup PkgConvexHullDConcepts \cgalConcept -\deprecated This package is deprecated since the version 4.6 of \cgal. The package \ref PkgTriangulationsSummary should be used instead. +\deprecated This package is deprecated since the version 4.6 of \cgal. The package \ref PkgTriangulations should be used instead. Requirements of the second traits class to be used with the class `CGAL::Delaunay_d`. diff --git a/Convex_hull_d/doc/Convex_hull_d/Concepts/DelaunayTraits_d.h b/Convex_hull_d/doc/Convex_hull_d/Concepts/DelaunayTraits_d.h index 868aa546169..3857c62ba55 100644 --- a/Convex_hull_d/doc/Convex_hull_d/Concepts/DelaunayTraits_d.h +++ b/Convex_hull_d/doc/Convex_hull_d/Concepts/DelaunayTraits_d.h @@ -2,7 +2,7 @@ \ingroup PkgConvexHullDConcepts \cgalConcept -\deprecated This package is deprecated since the version 4.6 of \cgal. The package \ref PkgTriangulationsSummary should be used instead. +\deprecated This package is deprecated since the version 4.6 of \cgal. The package \ref PkgTriangulations should be used instead. Requirements of the first traits class to be used with the class `CGAL::Delaunay_d`. diff --git a/Convex_hull_d/doc/Convex_hull_d/Convex_hull_d.txt b/Convex_hull_d/doc/Convex_hull_d/Convex_hull_d.txt index 1f31fff9b19..07f98db9fc6 100644 --- a/Convex_hull_d/doc/Convex_hull_d/Convex_hull_d.txt +++ b/Convex_hull_d/doc/Convex_hull_d/Convex_hull_d.txt @@ -7,7 +7,7 @@ namespace CGAL { \anchor chapconvexhulld \authors Susan Hert and Michael Seel -\deprecated This package is deprecated since the version 4.6 of \cgal. The package \ref PkgTriangulationsSummary should be used instead. +\deprecated This package is deprecated since the version 4.6 of \cgal. The package \ref PkgTriangulations should be used instead. \section Convex_hull_dIntroduction Introduction diff --git a/Convex_hull_d/doc/Convex_hull_d/PackageDescription.txt b/Convex_hull_d/doc/Convex_hull_d/PackageDescription.txt index b0a8e105d97..86ce0ec9281 100644 --- a/Convex_hull_d/doc/Convex_hull_d/PackageDescription.txt +++ b/Convex_hull_d/doc/Convex_hull_d/PackageDescription.txt @@ -1,15 +1,15 @@ -/// \defgroup PkgConvexHullD dD Convex Hulls and Delaunay Triangulations Reference +/// \defgroup PkgConvexHullDRef dD Convex Hulls and Delaunay Triangulations Reference /// \defgroup PkgConvexHullDConcepts Concepts -/// \ingroup PkgConvexHullD +/// \ingroup PkgConvexHullDRef /*! -\addtogroup PkgConvexHullD +\addtogroup PkgConvexHullDRef \todo check generated documentation -\cgalPkgDescriptionBegin{dD Convex Hulls and Delaunay Triangulations,PkgConvexHullDSummary} +\cgalPkgDescriptionBegin{dD Convex Hulls and Delaunay Triangulations,PkgConvexHullD} \cgalPkgPicture{convex_hull_d-teaser.png} \cgalPkgSummaryBegin \cgalPkgAuthors{Susan Hert and Michael Seel} \cgalPkgDesc{This package provides functions for computing convex hulls and Delaunay triangulations in \f$ d\f$-dimensional Euclidean space.} -\cgalPkgManuals{Chapter_dD_Convex_Hulls_and_Delaunay_Triangulations,PkgConvexHullD} +\cgalPkgManuals{Chapter_dD_Convex_Hulls_and_Delaunay_Triangulations,PkgConvexHullDRef} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{2.3} @@ -18,7 +18,7 @@ \cgalPkgShortInfoEnd \cgalPkgDescriptionEnd -\deprecated This package is deprecated since the version 4.6 of \cgal. The package \ref PkgTriangulationsSummary should be used instead. +\deprecated This package is deprecated since the version 4.6 of \cgal. The package \ref PkgTriangulations should be used instead. A subset \f$ S \subseteq \mathbb{R}^d\f$ is convex if for any two points \f$ p\f$ and \f$ q\f$ in the set the line segment with endpoints \f$ p\f$ and \f$ q\f$ is contained diff --git a/Convex_hull_d/test/Convex_hull_d/CMakeLists.txt b/Convex_hull_d/test/Convex_hull_d/CMakeLists.txt index 25cc178896b..fc19860c41c 100644 --- a/Convex_hull_d/test/Convex_hull_d/CMakeLists.txt +++ b/Convex_hull_d/test/Convex_hull_d/CMakeLists.txt @@ -4,19 +4,13 @@ project( Convex_hull_d_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - - include_directories (BEFORE "include") + include_directories (BEFORE "include") # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) diff --git a/Distance_2/test/Distance_2/CMakeLists.txt b/Distance_2/test/Distance_2/CMakeLists.txt index 5aec01f2bb0..0b93c5f718c 100644 --- a/Distance_2/test/Distance_2/CMakeLists.txt +++ b/Distance_2/test/Distance_2/CMakeLists.txt @@ -4,18 +4,12 @@ project( Distance_2_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Distance_3/test/Distance_3/CMakeLists.txt b/Distance_3/test/Distance_3/CMakeLists.txt index 83ca2e35032..b72be7f7218 100644 --- a/Distance_3/test/Distance_3/CMakeLists.txt +++ b/Distance_3/test/Distance_3/CMakeLists.txt @@ -4,18 +4,12 @@ project( Distance_3_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Documentation/doc/CMakeLists.txt b/Documentation/doc/CMakeLists.txt index 0ecafab9f7c..3e630a9ae3e 100644 --- a/Documentation/doc/CMakeLists.txt +++ b/Documentation/doc/CMakeLists.txt @@ -1,7 +1,7 @@ project(Documentation NONE) # Minimal version of CMake: -cmake_minimum_required(VERSION 2.8.11) +cmake_minimum_required(VERSION 3.1) # Check whether this cmake script is the top level one if ( ${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/Documentation/doc/Documentation/Developer_manual/Chapter_iterators_and_circulators.txt b/Documentation/doc/Documentation/Developer_manual/Chapter_iterators_and_circulators.txt index 900eda9aa58..d1407672ac5 100644 --- a/Documentation/doc/Documentation/Developer_manual/Chapter_iterators_and_circulators.txt +++ b/Documentation/doc/Documentation/Developer_manual/Chapter_iterators_and_circulators.txt @@ -19,15 +19,15 @@ Iterators are widely used in \cgal too. \cgal extends the idea of the iterator, which works for linear data structures, to circular data structures by defining the concept of a circulator. -\ref PkgHandlesAndCirculatorsSummary "Circulators" are quite similar to iterators, with the +\ref PkgHandlesAndCirculators "Circulators" are quite similar to iterators, with the major difference being the absence of a past-the-end position in a sequence. Note that circulators are NOT part of the \stl, but of \cgal. -In \cgal, we also define the concept of \ref PkgHandlesAndCirculatorsSummary "handle", +In \cgal, we also define the concept of \ref PkgHandlesAndCirculators "handle", which behaves roughly like a pointer to an object without an increment or decrement operation. More details about handles and their requirements can be found in -the \ref PkgHandlesAndCirculatorsSummary "chapter Circulators and Handles" +the \ref PkgHandlesAndCirculators "chapter Circulators and Handles" of the Support Library part of \cgal manual. Section \ref sechandle_vs_it_vs_circ below discusses when handles should be used in your code. @@ -35,7 +35,7 @@ should be used in your code. The concepts of iterators is relatively well described in textbooks such as Stroustrup's book (The C++ Programming Language \cgalCite{cgal:s-cpl-97}) and Austern's book (Generic Programming and the \stl \cgalCite{cgal:a-gps-98}) -and in chapter \ref PkgHandlesAndCirculatorsSummary "Handles and Circulators" +and in chapter \ref PkgHandlesAndCirculators "Handles and Circulators" of the Support Library part of the \cgal manual. which also presents the concepts of handles and circulators. Thus we will not give a full description of these concept here @@ -325,7 +325,7 @@ over either a linear or circular sequence: - `CGAL_For_all( ic1, ic2)` - `CGAL_For_all_backwards( ic1, ic2)`. -See the chapter \ref PkgHandlesAndCirculatorsSummary "Handles and Circulators" +See the chapter \ref PkgHandlesAndCirculators "Handles and Circulators" in the Support Library part of \cgal manual for more information and examples. diff --git a/Documentation/doc/Documentation/General.txt b/Documentation/doc/Documentation/General.txt index 275c0e03963..a161413f038 100644 --- a/Documentation/doc/Documentation/General.txt +++ b/Documentation/doc/Documentation/General.txt @@ -94,11 +94,37 @@ class RandomAccessIterator {}; /// See https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator class BidirectionalIterator {}; +/// \cgalConcept +/// Concept from the \cpp standard. +/// See https://en.cppreference.com/w/cpp/named_req/Swappable +class Swappable {}; + +/// \cgalConcept +/// Concept from the \cpp standard. +/// See https://en.cppreference.com/w/cpp/named_req/Container +class Container {}; + +/// \cgalConcept +/// Concept from the \cpp standard. +/// See https://en.cppreference.com/w/cpp/named_req/ReversibleContainer +class ReversibleContainer {}; + +/// \cgalConcept +/// Concept from the \cpp standard. +/// See https://en.cppreference.com/w/cpp/named_req/AssociativeContainer +class AssociativeContainer {}; + +/// \cgalConcept +/// Concept from the \cpp standard. +/// See https://en.cppreference.com/w/cpp/named_req/SequenceContainer +class SequenceContainer {}; + /// \cgalConcept /// This container concept refines /// ReversibleContainer and its iterator type is a model of /// RandomAccessIterator. class RandomAccessContainer {}; + /// \cgalConcept /// This container concepts refines /// SequenceContainer and diff --git a/Documentation/doc/Documentation/Installation.txt b/Documentation/doc/Documentation/Installation.txt index 20354fe18c6..b5ba993f4f5 100644 --- a/Documentation/doc/Documentation/Installation.txt +++ b/Documentation/doc/Documentation/Installation.txt @@ -356,7 +356,7 @@ header-only. \subsubsection subsection_headeronly_pbonwindows Possible Problem on Windows -There is one possible problem when using \cgal in header-only mode on a Windows operating system when compiling a program using several modules (executable programs or dynamic-link libraries DLL). If two different modules use the same static variable, this variable is defined independently in each of these modules. If one module modifies the value of this variable, it will not be modified in the other module, which could induce an unexpected behavior. In \cgal, this concerns only a few specific variables: the default random, the failure behavior, IO mode. One example is the following: if you change the default random in one DLL, then if you use the default random in another DLL, you will not obtain the modified default random but the original one. +There is one possible problem when using \cgal in header-only mode on a Windows operating system when compiling a program using several modules (executable programs or dynamic-link libraries DLL). If two different modules use the same static variable, this variable is defined independently in each of these modules. If one module modifies the value of this variable, it will not be modified in the other module, which could induce an unexpected behavior. In \cgal, this concerns only a few specific variables: the default random, the failure behavior, IO mode. One example is the following: if you change the default random in one DLL, then if you use the default random in another DLL, you will not obtain the modified default random but the original one. \section secessential3rdpartysoftware Essential Third Party Libraries @@ -439,7 +439,7 @@ of \sc{Gmp} and \sc{Mpfr}, which can be downloaded with the installer \sc{zlib} is a data compression library, and is essential for the component libCGAL_ImageIO. -In \cgal this library is used in the examples of the \ref PkgSurfaceMesher3 package. +In \cgal this library is used in the examples of the \ref PkgSurfaceMesher3Ref package. If it is not already on your system, for instance, on Windows, you can download it from `http://www.zlib.net/`. @@ -511,7 +511,7 @@ represented using \sc{Mpfr} reliable floating-point numbers. It is based on the libraries \sc{Gmp} and \sc{Mpfr}. In the setting of \cgal, this library is optional: it is used by some models of the -\ref PkgAlgebraicKerneld "Algebraic Kernel". +\ref PkgAlgebraicKernelDRef "Algebraic Kernel". \sc{Mpfi} can be downloaded from `http://mpfi.gforge.inria.fr/`. Version 1.4 or higher is recommended. @@ -520,7 +520,7 @@ optional: it is used by some models of the \sc{Rs} (Real Solutions) is devoted to the study of the real roots of polynomial systems with a finite number of complex roots (including univariate polynomials). In \cgal, \sc{Rs} is used by one model of the -\ref PkgAlgebraicKerneld "Algebraic Kernel". +\ref PkgAlgebraicKernelDRef "Algebraic Kernel". \sc{Rs} is freely distributable for non-commercial use. You can download it from `http://vegas.loria.fr/rs/`. Actually, the \sc{Rs} package also includes \sc{Rs3}, the @@ -543,11 +543,11 @@ to speed up operations of the Polynomial package, such as GCDs. It is recommende \sc{Eigen} is a `C++` template library for linear algebra. \sc{Eigen} supports all matrix sizes, various matrix decomposition methods and sparse linear solvers. -In \cgal, \sc{Eigen} provides sparse linear solvers in the \ref PkgPoissonSurfaceReconstruction -and the \ref PkgSurfaceParameterization packages. +In \cgal, \sc{Eigen} provides sparse linear solvers in the \ref PkgPoissonSurfaceReconstruction3Ref +and the \ref PkgSurfaceMeshParameterizationRef packages. -In addition, \sc{Eigen} also provides singular value decomposition for the \ref PkgJet_fitting_3 -and the \ref PkgRidges_3 packages. +In addition, \sc{Eigen} also provides singular value decomposition for the \ref PkgJetFitting3Ref +and the \ref PkgRidges3Ref packages. The \sc{Eigen} web site is `http://eigen.tuxfamily.org`. @@ -557,7 +557,7 @@ The \sc{Esbtl} (Easy Structural Biology Template Library) is a library that allo the handling of \sc{Pdb} data. In \cgal the \sc{Esbtl} is used in an example of the -\ref PkgSkinSurface3 package. +\ref PkgSkinSurface3Ref package. It can be downloaded from `http://esbtl.sourceforge.net/`. @@ -576,7 +576,7 @@ The \sc{Tbb} web site is `http: the LAS format (or the compressed LAZ format). In \cgal, \sc{LASlib} is used to provide input and output functions in -the \ref PkgPointSetProcessing package. +the \ref PkgPointSetProcessing3Ref package. The \sc{LASlib} web site is `https://rapidlasso.com/lastools/`. \sc{LASlib} @@ -589,7 +589,7 @@ CMake based install procedure. \sc{OpenCV} (Open Computer Vision) is a library designed for computer vision, computer graphics and machine learning. -In \cgal, \sc{OpenCV} is used by the \ref PkgClassification package. +In \cgal, \sc{OpenCV} is used by the \ref PkgClassificationRef package. The \sc{OpenCV} web site is `http://opencv.org/`. @@ -601,7 +601,7 @@ and designed to partition graphs and produce fill-reducing matrix orderings. \cgal offers wrappers around some of the methods of the \sc{METIS} library to allow the partitioning of graphs that are models of the concepts of the Boost Graph Library, -and, by extension, of surface meshes (see Section \ref BGLPartitioning of the package \ref PkgBGLSummary). +and, by extension, of surface meshes (see Section \ref BGLPartitioning of the package \ref PkgBGL). More information is available on the METIS library at `http://glaros.dtc.umn.edu/gkhome/metis/metis/overview`. diff --git a/Documentation/doc/Documentation/Tutorials/Tutorial_hello_world.txt b/Documentation/doc/Documentation/Tutorials/Tutorial_hello_world.txt index 99b6ca99c44..e90944007da 100644 --- a/Documentation/doc/Documentation/Tutorials/Tutorial_hello_world.txt +++ b/Documentation/doc/Documentation/Tutorials/Tutorial_hello_world.txt @@ -318,7 +318,7 @@ This function only compiles if the `operator<(..)` is defined for the type used and we say that the type must be a model of `LessThanComparable`. An example for a concept with required free functions is the `HalfedgeListGraph` in the -\cgal package \ref PkgBGLSummary. In order to be a model of `HalfedgeListGraph` a class `G` +\cgal package \ref PkgBGL. In order to be a model of `HalfedgeListGraph` a class `G` there must be a global function `halfedges(const G&)`, etc. An example for a concept with a required traits class is `InputIterator`. diff --git a/Documentation/doc/resources/1.8.13/menu_version.js b/Documentation/doc/resources/1.8.13/menu_version.js index e6138b2b6bc..c575b27aff5 100644 --- a/Documentation/doc/resources/1.8.13/menu_version.js +++ b/Documentation/doc/resources/1.8.13/menu_version.js @@ -7,8 +7,8 @@ var all_versions = [ 'master', 'latest', - '4.13-beta1', - '4.12', + '4.13', + '4.12.1', '4.11.3', '4.10.2', '4.9.1', diff --git a/Documentation/doc/resources/1.8.14/menu_version.js b/Documentation/doc/resources/1.8.14/menu_version.js index e6138b2b6bc..c575b27aff5 100644 --- a/Documentation/doc/resources/1.8.14/menu_version.js +++ b/Documentation/doc/resources/1.8.14/menu_version.js @@ -7,8 +7,8 @@ var all_versions = [ 'master', 'latest', - '4.13-beta1', - '4.12', + '4.13', + '4.12.1', '4.11.3', '4.10.2', '4.9.1', diff --git a/Documentation/doc/resources/1.8.4/menu_version.js b/Documentation/doc/resources/1.8.4/menu_version.js index e6138b2b6bc..c575b27aff5 100644 --- a/Documentation/doc/resources/1.8.4/menu_version.js +++ b/Documentation/doc/resources/1.8.4/menu_version.js @@ -7,8 +7,8 @@ var all_versions = [ 'master', 'latest', - '4.13-beta1', - '4.12', + '4.13', + '4.12.1', '4.11.3', '4.10.2', '4.9.1', diff --git a/Envelope_2/doc/Envelope_2/CGAL/Envelope_diagram_1.h b/Envelope_2/doc/Envelope_2/CGAL/Envelope_diagram_1.h index 5458eeee9f3..8bc3b12b7e4 100644 --- a/Envelope_2/doc/Envelope_2/CGAL/Envelope_diagram_1.h +++ b/Envelope_2/doc/Envelope_2/CGAL/Envelope_diagram_1.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgEnvelope2 +\ingroup PkgEnvelope2Ref This class is the default envelope-diagram class used by envelope functions to represent the minimization or the maximization diagram of a set of curves. diff --git a/Envelope_2/doc/Envelope_2/CGAL/envelope_2.h b/Envelope_2/doc/Envelope_2/CGAL/envelope_2.h index b6c9172ef2e..d45a0463b5f 100644 --- a/Envelope_2/doc/Envelope_2/CGAL/envelope_2.h +++ b/Envelope_2/doc/Envelope_2/CGAL/envelope_2.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgEnvelope2 +\ingroup PkgEnvelope2Ref Computes the lower envelope of a set of curves in \f$ \mathbb{R}^2\f$, as given by the range `[begin, end)`. The lower envelope is @@ -19,7 +19,7 @@ EnvelopeDiagram& diag); namespace CGAL { /*! -\ingroup PkgEnvelope2 +\ingroup PkgEnvelope2Ref Computes the lower envelope of a set of \f$ x\f$-monotone curves in \f$ \mathbb{R}^2\f$, as given by the range `[begin, end)`. The lower @@ -38,7 +38,7 @@ EnvelopeDiagram& diag); namespace CGAL { /*! -\ingroup PkgEnvelope2 +\ingroup PkgEnvelope2Ref Computes the upper envelope of a set of curves in \f$ \mathbb{R}^2\f$, as given by the range `[begin, end)`. The upper envelope is @@ -56,7 +56,7 @@ EnvelopeDiagram& diag); namespace CGAL { /*! -\ingroup PkgEnvelope2 +\ingroup PkgEnvelope2Ref Computes the upper envelope of a set of \f$ x\f$-monotone curves in \f$ \mathbb{R}^2\f$, as given by the range `[begin, end)`. The upper diff --git a/Envelope_2/doc/Envelope_2/PackageDescription.txt b/Envelope_2/doc/Envelope_2/PackageDescription.txt index 23f43104d00..c5f8b125e8b 100644 --- a/Envelope_2/doc/Envelope_2/PackageDescription.txt +++ b/Envelope_2/doc/Envelope_2/PackageDescription.txt @@ -1,19 +1,19 @@ -/// \defgroup PkgEnvelope2 2D Envelopes Reference +/// \defgroup PkgEnvelope2Ref 2D Envelopes Reference /// \defgroup PkgEnvelope2Concepts Concepts -/// \ingroup PkgEnvelope2 +/// \ingroup PkgEnvelope2Ref /*! -\addtogroup PkgEnvelope2 +\addtogroup PkgEnvelope2Ref \todo check generated documentation -\cgalPkgDescriptionBegin{2D Envelopes,PkgEnvelope2Summary} +\cgalPkgDescriptionBegin{2D Envelopes,PkgEnvelope2} \cgalPkgPicture{Envelope_2/fig/Envelope_2.png} \cgalPkgSummaryBegin \cgalPkgAuthor{Ron Wein} \cgalPkgDesc{This package consits of functions that computes the lower (or upper) envelope of a set of arbitrary curves in 2D. The output is represented as an envelope diagram, namely a subdivision of the \f$ x\f$-axis into intervals, such that the identity of the curves that induce the envelope on each interval is unique.} -\cgalPkgManuals{Chapter_Envelopes_of_Curves_in_2D,PkgEnvelope2} +\cgalPkgManuals{Chapter_Envelopes_of_Curves_in_2D,PkgEnvelope2Ref} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{3.3} -\cgalPkgDependsOn{\ref PkgArrangement2Summary} +\cgalPkgDependsOn{\ref PkgArrangementOnSurface2} \cgalPkgBib{cgal:w-e2} \cgalPkgLicense{\ref licensesGPL "GPL"} \cgalPkgShortInfoEnd diff --git a/Envelope_2/examples/Envelope_2/CMakeLists.txt b/Envelope_2/examples/Envelope_2/CMakeLists.txt index 549166bf226..936b6d1dabb 100644 --- a/Envelope_2/examples/Envelope_2/CMakeLists.txt +++ b/Envelope_2/examples/Envelope_2/CMakeLists.txt @@ -4,18 +4,12 @@ project( Envelope_2_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Envelope_2/include/CGAL/Envelope_2/Env_divide_and_conquer_2_impl.h b/Envelope_2/include/CGAL/Envelope_2/Env_divide_and_conquer_2_impl.h index fc15c9f4c61..86a9a6ca97b 100644 --- a/Envelope_2/include/CGAL/Envelope_2/Env_divide_and_conquer_2_impl.h +++ b/Envelope_2/include/CGAL/Envelope_2/Env_divide_and_conquer_2_impl.h @@ -42,14 +42,14 @@ _construct_envelope_non_vertical(Curve_pointer_iterator begin, Envelope_diagram_1& out_d) { out_d.clear(); - + if (begin == end) return; - + // Check if the range contains just a single curve. Curve_pointer_iterator iter = begin; ++iter; - + if (iter == end) { // Construct a singleton diagram, which matches a single curve. @@ -61,14 +61,14 @@ _construct_envelope_non_vertical(Curve_pointer_iterator begin, std::size_t size = std::distance(begin, end); Curve_pointer_iterator div_it = begin; std::advance(div_it, size / 2); - - // Construct the diagrams (envelopes) for the two sub-ranges recursively + + // Construct the diagrams (envelopes) for the two sub-ranges recursively // and then merge the two diagrams to obtain the result. Envelope_diagram_1 d1; Envelope_diagram_1 d2; - + _construct_envelope_non_vertical(begin, div_it, d1); - + _construct_envelope_non_vertical(div_it, end, d2); _merge_envelopes(d1, d2, out_d); @@ -88,13 +88,13 @@ _construct_envelope_non_vertical(Curve_pointer_iterator begin, v = e->right(); std::cout << "(" << v->point() << ") "; - + e = v->right(); } std::cout << "[empty]" << std::endl; */ } - + return; } @@ -108,7 +108,7 @@ _construct_singleton_diagram(const X_monotone_curve_2& cv, { CGAL_assertion(out_d.leftmost() == out_d.rightmost()); CGAL_assertion(out_d.leftmost()->is_empty()); - + // Check if the given curve is bounded from the left and from the right. if (traits->parameter_space_in_x_2_object()(cv, ARR_MIN_END) != ARR_INTERIOR) { @@ -117,7 +117,7 @@ _construct_singleton_diagram(const X_monotone_curve_2& cv, // The curve is defined over (-oo, oo), so its diagram contains // only a single edge. out_d.leftmost()->add_curve(cv); - + return; } @@ -125,50 +125,50 @@ _construct_singleton_diagram(const X_monotone_curve_2& cv, // Create a vertex and associate it with the right endpoint of cv. CGAL_precondition (traits->parameter_space_in_y_2_object()(cv, ARR_MAX_END) == ARR_INTERIOR); - + Vertex_handle v = out_d.new_vertex(traits->construct_max_vertex_2_object()(cv)); Edge_handle e_right = out_d.new_edge(); - + v->add_curve(cv); v->set_left(out_d.leftmost()); v->set_right(e_right); - + // The leftmost edge is associated with cv, and the rightmost is empty. out_d.leftmost()->add_curve(cv); out_d.leftmost()->set_right(v); - + e_right->set_left(v); out_d.set_rightmost(e_right); - + return; } - + if (traits->parameter_space_in_x_2_object()(cv, ARR_MAX_END) != ARR_INTERIOR) { // The curve is defined over [x, +oo), where x is finite. // Create a vertex and associate it with the left endpoint of cv. CGAL_precondition (traits->parameter_space_in_y_2_object()(cv, ARR_MIN_END) == ARR_INTERIOR); - - Vertex_handle v = + + Vertex_handle v = out_d.new_vertex(traits->construct_min_vertex_2_object()(cv)); Edge_handle e_left = out_d.new_edge(); - + v->add_curve(cv); v->set_left(e_left); v->set_right(out_d.rightmost()); - + // The rightmost edge is associated with cv, and the leftmost is empty. out_d.rightmost()->add_curve(cv); out_d.rightmost()->set_left(v); - + e_left->set_right(v); out_d.set_leftmost(e_left); - + return; } - + // If we reached here, the curve is defined over a bounded x-range. // We therefore create the following diagram: // @@ -179,33 +179,33 @@ _construct_singleton_diagram(const X_monotone_curve_2& cv, (traits->parameter_space_in_y_2_object()(cv, ARR_MIN_END) == ARR_INTERIOR); CGAL_precondition (traits->parameter_space_in_y_2_object()(cv, ARR_MAX_END) == ARR_INTERIOR); - - Vertex_handle v1 = + + Vertex_handle v1 = out_d.new_vertex(traits->construct_min_vertex_2_object()(cv)); - Vertex_handle v2 = + Vertex_handle v2 = out_d.new_vertex(traits->construct_max_vertex_2_object()(cv)); Edge_handle e_left = out_d.new_edge(); Edge_handle e_right = out_d.new_edge(); Edge_handle e = out_d.leftmost(); - + v1->add_curve(cv); v1->set_left(e_left); v1->set_right(e); - + v2->add_curve(cv); v2->set_left(e); v2->set_right(e_right); - + e->add_curve(cv); e->set_left(v1); e->set_right(v2); - + e_left->set_right(v1); e_right->set_left(v2); - + out_d.set_leftmost(e_left); out_d.set_rightmost(e_right); - + return; } @@ -235,7 +235,7 @@ _merge_envelopes(const Envelope_diagram_1& d1, // If both have the same x-ccordinate, find the one that should be in // the envelope. same_x = false; - + if (e1 == d1.rightmost()) { if (e2 == d2.rightmost()) @@ -265,14 +265,14 @@ _merge_envelopes(const Envelope_diagram_1& d1, res_v = _compare_vertices(v1, v2, same_x); next_v = (res_v == SMALLER) ? v1 : v2; } - + // Check if the current edges represent empty intervals or not. if (! e1->is_empty() && ! e2->is_empty()) { // Both edges are not empty, and there are curves defined on them. _merge_two_intervals(e1, is_leftmost1, e2, is_leftmost2, next_v, next_exists, res_v, out_d); - + } else if (! e1->is_empty() && e2->is_empty()) { @@ -304,7 +304,7 @@ _merge_envelopes(const Envelope_diagram_1& d1, } } } - + // Proceed to the next diagram edge(s), if possible. if (next_exists) { @@ -336,14 +336,14 @@ _merge_envelopes(const Envelope_diagram_1& d1, { e1 = v1->right(); is_leftmost1 = false; - + e2 = v2->right(); is_leftmost2 = false; } } - + } while (next_exists); - + return; } @@ -358,7 +358,7 @@ _compare_vertices(Vertex_const_handle v1, { Comparison_result res = traits->compare_x_2_object()(v1->point(), v2->point()); - + if (res != EQUAL) { same_x = false; @@ -396,15 +396,15 @@ _merge_single_interval(Edge_const_handle e, Edge_const_handle other_edge, out_d.rightmost()->add_curves(e->curves_begin(), e->curves_end()); return; } - + Vertex_handle new_v; - + if (origin_of_v == SMALLER) { // The non-empty edge ends at v, so we simply insert it to out_d. new_v = _append_vertex(out_d, v->point(), e); new_v->add_curves(v->curves_begin(), v->curves_end()); - + return; } @@ -412,7 +412,7 @@ _merge_single_interval(Edge_const_handle e, Edge_const_handle other_edge, { new_v = _append_vertex(out_d, v->point(), e); new_v->add_curves(e->right()->curves_begin(), e->right()->curves_end()); - new_v->add_curves(other_edge->right()->curves_begin(), + new_v->add_curves(other_edge->right()->curves_begin(), other_edge->right()->curves_end()); return; } @@ -421,7 +421,7 @@ _merge_single_interval(Edge_const_handle e, Edge_const_handle other_edge, // is below (or above, in case of an upper envelope) the curves of e. Comparison_result res = traits->compare_y_at_x_2_object()(v->point(), e->curve()); - + if ((res == EQUAL) || (env_type == LOWER && res == SMALLER) || (env_type == UPPER && res == LARGER)) @@ -441,15 +441,15 @@ _merge_single_interval(Edge_const_handle e, Edge_const_handle other_edge, /*@{*/ //! Compare the $y$-coordinates of two curves at their endpoints -/*! The function compares the $y$ values of two curves with a joint +/*! The function compares the $y$ values of two curves with a joint range of $x$ values, at the end of the joint range. \param xcv1 The first curve \param xcv2 The second curve - \param curve_end ARR_MIN_END - compare the $y$ value of the smaller + \param curve_end ARR_MIN_END - compare the $y$ value of the smaller endpoint, ARR_MAX_END - compare the $y$ value of the larger endpoint. - \pre The two $x$-monotone curves need to have a partially overlapping + \pre The two $x$-monotone curves need to have a partially overlapping $x$-ranges. - \return + \return \todo Move it to Arr_traits_adaptor ? */ template @@ -460,7 +460,7 @@ compare_y_at_end(const X_monotone_curve_2& xcv1, { CGAL_precondition(traits->is_in_x_range_2_object()(xcv1, xcv2)); - typedef typename Traits::Compare_xy_2 Compare_xy_2; + typedef typename Traits_adaptor_2::Compare_xy_2 Compare_xy_2; typedef typename Traits::Compare_y_at_x_2 Compare_y_at_x_2; typedef typename Traits::Construct_min_vertex_2 Construct_min_vertex_2; typedef typename Traits::Construct_max_vertex_2 Construct_max_vertex_2; @@ -470,30 +470,30 @@ compare_y_at_end(const X_monotone_curve_2& xcv1, traits->construct_min_vertex_2_object(); Construct_max_vertex_2 max_vertex = traits->construct_max_vertex_2_object(); - + // First check whether any of the curves is defined at x boundary. const Arr_parameter_space ps_x1 = traits->parameter_space_in_x_2_object()(xcv1, curve_end); const Arr_parameter_space ps_x2 = traits->parameter_space_in_x_2_object()(xcv2, curve_end); Comparison_result res; - + if (ps_x1 != ARR_INTERIOR) { if (ps_x2 != ARR_INTERIOR) { // Compare the relative position of the curves at x boundary. return (traits->compare_y_near_boundary_2_object()(xcv1, xcv2, curve_end)); } - + // Check if the left end of xcv2 lies at y boundary. const Arr_parameter_space ps_y2 = traits->parameter_space_in_y_2_object()(xcv2, curve_end); - + if (ps_y2 == ARR_BOTTOM_BOUNDARY) return (LARGER); // xcv2 is obviously below xcv1. else if (ps_y2 == ARR_TOP_BOUNDARY) return (SMALLER); // xcv2 is obviously above xcv1. - + // Compare the position of the left end of xcv2 (which is a normal // point) to xcv1. res = (curve_end == ARR_MIN_END) ? @@ -507,12 +507,12 @@ compare_y_at_end(const X_monotone_curve_2& xcv1, // Check if the left end of xcv1 lies at y boundary. const Arr_parameter_space ps_y1 = traits->parameter_space_in_y_2_object() (xcv1, curve_end); - + if (ps_y1 == ARR_BOTTOM_BOUNDARY) return (SMALLER); // xcv1 is obviously below xcv2. else if (ps_y1 == ARR_TOP_BOUNDARY) return (LARGER); // xcv1 is obviously above xcv2. - + // Compare the position of the left end of xcv1 (which is a normal // point) to xcv2. res = (curve_end == ARR_MIN_END) ? @@ -520,14 +520,14 @@ compare_y_at_end(const X_monotone_curve_2& xcv1, compare_y_at_x(max_vertex(xcv1), xcv2); return (res); } - + // Check if the left curve end lies at y = +/- oo. const Arr_parameter_space ps_y1 = traits->parameter_space_in_y_2_object()(xcv1, curve_end); const Arr_parameter_space ps_y2 = traits->parameter_space_in_y_2_object()(xcv2, curve_end); Comparison_result l_res; - + if (ps_y1 != ARR_INTERIOR) { if (ps_y2 != ARR_INTERIOR) { // The curve ends have boundary conditions with oposite signs in y, @@ -544,7 +544,7 @@ compare_y_at_end(const X_monotone_curve_2& xcv1, l_res = traits->compare_x_curve_ends_2_object()(xcv1, curve_end, xcv2, curve_end); CGAL_assertion(l_res != EQUAL); - + if (ps_y1 == ARR_TOP_BOUNDARY) return (l_res); else @@ -555,10 +555,10 @@ compare_y_at_end(const X_monotone_curve_2& xcv1, // Compare the x-positions of this endpoint and the asymptote. const Point_2& left2 = (curve_end == ARR_MIN_END) ? min_vertex(xcv2) : max_vertex(xcv2); - + l_res = traits->compare_x_point_curve_end_2_object()(left2, xcv1, curve_end); - + if (l_res == LARGER) { // left2 lies in the x-range of xcv1, so it is safe to compare: res = compare_y_at_x(left2, xcv1); @@ -571,12 +571,12 @@ compare_y_at_end(const X_monotone_curve_2& xcv1, else if (ps_y2 != ARR_INTERIOR) { // xcv2 has a vertical asymptote and xcv1 has a normal left endpoint. // Compare the x-positions of this endpoint and the asymptote. - const Point_2& left1 = + const Point_2& left1 = (curve_end == ARR_MIN_END) ? min_vertex(xcv1) : max_vertex(xcv1); - + l_res = traits->compare_x_point_curve_end_2_object()(left1, xcv2, curve_end); - + return ((l_res == LARGER) ? // left1 lies in the x-range of xcv2, so it is safe to compare: (compare_y_at_x(left1, xcv2)) : @@ -584,21 +584,21 @@ compare_y_at_end(const X_monotone_curve_2& xcv1, } // In this case we compare two normal points. - Compare_xy_2 compare_xy = traits->compare_xy_2_object(); + Compare_xy_2 compare_xy = traits->compare_xy_2_object(); // Get the left endpoints of xcv1 and xcv2. - const Point_2& left1 = + const Point_2& left1 = (curve_end == ARR_MIN_END) ? min_vertex(xcv1) : max_vertex(xcv1); - const Point_2& left2 = + const Point_2& left2 = (curve_end == ARR_MIN_END) ? min_vertex(xcv2) : max_vertex(xcv2); // Locate the rightmost point of left1 and left2 and compare its position // to the other curve. l_res = compare_xy(left1, left2); - + return ((l_res != SMALLER) ? // left1 is in the x-range of xcv2: - compare_y_at_x(left1, xcv2) : + compare_y_at_x(left1, xcv2) : // left2 is in the x-range of xcv1: CGAL::opposite(compare_y_at_x(left2, xcv1))); } @@ -609,7 +609,7 @@ compare_y_at_end(const X_monotone_curve_2& xcv1, // template void Envelope_divide_and_conquer_2:: -_merge_two_intervals(Edge_const_handle e1, bool is_leftmost1, +_merge_two_intervals(Edge_const_handle e1, bool is_leftmost1, Edge_const_handle e2, bool is_leftmost2, Vertex_const_handle v, bool v_exists, Comparison_result origin_of_v, @@ -619,7 +619,7 @@ _merge_two_intervals(Edge_const_handle e1, bool is_leftmost1, Comparison_result current_res; bool equal_at_v = false; - + // Get the relative position of two curves associated with e1 and e2 // at the rightmost of the left endpoints of e1 and e2. current_res = compare_y_at_end(e1->curve(), e2->curve(), ARR_MIN_END); @@ -659,24 +659,24 @@ _merge_two_intervals(Edge_const_handle e1, bool is_leftmost1, CGAL::Object obj; const X_monotone_curve_2* intersection_curve; const Intersection_point* intersection_point; - + traits->intersect_2_object()(e1->curve(), e2->curve(), std::back_inserter(objects)); - + while (! objects.empty()) { // Pop the xy-lexicographically smallest intersection object. obj = objects.front(); objects.pop_front(); - + if ((intersection_point = CGAL::object_cast(&obj)) != NULL) { // We have a simple intersection point. - bool is_in_x_range = true; // true if the intersection point is to the + bool is_in_x_range = true; // true if the intersection point is to the // right of v_leftmost. // check if we are before the leftmost point. if (v_leftmost && - traits->compare_xy_2_object() (intersection_point->first, + traits->compare_xy_2_object() (intersection_point->first, (*v_leftmost)->point()) != LARGER) { // The point is to the left of the current rightmost vertex in out_d, @@ -684,22 +684,22 @@ _merge_two_intervals(Edge_const_handle e1, bool is_leftmost1, // However, we update the last intersection point observed. is_in_x_range = false; } - + // check if we arrived at the rightmost point (stop if indeed we are // there). if (is_in_x_range && v_exists) { - Comparison_result res = traits->compare_xy_2_object() + Comparison_result res = traits->compare_xy_2_object() (intersection_point->first, v->point()); - + // v is an intersection points, so both curves are equal there: if (res == EQUAL) equal_at_v = true; - + // We passed the next vertex, so we can stop here. if (res == LARGER) break; } - + // Create a new vertex in the output diagram that corrsponds to the // current intersection point. if (is_in_x_range) { @@ -708,7 +708,7 @@ _merge_two_intervals(Edge_const_handle e1, bool is_leftmost1, Vertex_handle new_v = (current_res == SMALLER) ? _append_vertex(out_d, intersection_point->first, e1) : _append_vertex(out_d, intersection_point->first, e2); - + // if we are at v, then this is a special case that is handled after // the loop. We need to add the curves from the original vertices. if (equal_at_v == false) { @@ -716,7 +716,7 @@ _merge_two_intervals(Edge_const_handle e1, bool is_leftmost1, new_v->add_curves(e1->curves_begin(), e1->curves_end()); new_v->add_curves(e2->curves_begin(), e2->curves_end()); } - + // Update the handle to the rightmost vertex in the output diagram. v_leftmost = new_v; } @@ -724,7 +724,7 @@ _merge_two_intervals(Edge_const_handle e1, bool is_leftmost1, // Update the relative position of the two curves, which is their // order immediately to the right of their last observed intersection // point. - + // Get the curve order immediately to the right of the intersection // point. Note that in case of even (non-zero) multiplicity the order // remains the same. @@ -750,22 +750,22 @@ _merge_two_intervals(Edge_const_handle e1, bool is_leftmost1, // We have an x-monotone curve representing an overlap of the two // curves. intersection_curve = CGAL::object_cast(&obj); - + if (intersection_curve == NULL) CGAL_error_msg("unrecognized intersection object."); // Get the endpoints of the overlapping curves. - const bool has_left = - (traits->parameter_space_in_x_2_object() + const bool has_left = + (traits->parameter_space_in_x_2_object() (*intersection_curve, ARR_MIN_END) == ARR_INTERIOR); - const bool has_right = - (traits->parameter_space_in_x_2_object() + const bool has_right = + (traits->parameter_space_in_x_2_object() (*intersection_curve, ARR_MAX_END) == ARR_INTERIOR); Point_2 p_left, p_right; - + if (has_left) p_left = traits->construct_min_vertex_2_object()(*intersection_curve); - + if (has_right) p_right = traits->construct_max_vertex_2_object()(*intersection_curve); @@ -781,22 +781,22 @@ _merge_two_intervals(Edge_const_handle e1, bool is_leftmost1, // However, we update the last intersection point observed. is_in_x_range = false; } - + if (is_in_x_range && v_exists && has_left) { Comparison_result res = traits->compare_xy_2_object()(p_left, v->point()); - + // v is an intersection points, so both curves are equal there: if (res == EQUAL) equal_at_v = true; - + // We passed the next vertex, so we can stop here. if (res == LARGER) break; } - + // There is an overlap between the range [u, v] and intersection_curve. - if (is_in_x_range && has_left && + if (is_in_x_range && has_left && (! v_leftmost || (traits->compare_xy_2_object()(p_left, (*v_leftmost)->point()) == LARGER))) @@ -808,7 +808,7 @@ _merge_two_intervals(Edge_const_handle e1, bool is_leftmost1, Vertex_handle new_v = (current_res == SMALLER) ? _append_vertex(out_d, p_left, e1) : _append_vertex(out_d, p_left, e2); - + // if we are at v, then this is a special case that is handled after // the loop. We need to add the curves from the original vertices. if (equal_at_v == false) { @@ -817,11 +817,11 @@ _merge_two_intervals(Edge_const_handle e1, bool is_leftmost1, new_v->add_curves(e1->curves_begin(), e1->curves_end()); new_v->add_curves(e2->curves_begin(), e2->curves_end()); } - + // Update the handle to the rightmost vertex in the output diagram. v_leftmost = new_v; } - + if (is_in_x_range && has_right && (! v_exists || (traits->compare_xy_2_object()(p_right, v->point()) == SMALLER))) @@ -829,7 +829,7 @@ _merge_two_intervals(Edge_const_handle e1, bool is_leftmost1, // Create an edge that represents the overlapping curve. Vertex_handle new_v = _append_vertex(out_d, p_right, e1); new_v->left()->add_curves(e2->curves_begin(), e2->curves_end()); - + // We are not at v becuase p_right is smaller than v. // The special case that we are at v is handled in the next // condition. @@ -838,12 +838,12 @@ _merge_two_intervals(Edge_const_handle e1, bool is_leftmost1, CGAL_assertion(equal_at_v == false); new_v->add_curves(e1->curves_begin(), e1->curves_end()); new_v->add_curves(e2->curves_begin(), e2->curves_end()); - + // Update the handle to the rightmost vertex in the output diagram. v_leftmost = new_v; } - - if (has_right == false || + + if (has_right == false || (v_exists && traits->compare_xy_2_object()(p_right, v->point()) != SMALLER)) { @@ -852,7 +852,7 @@ _merge_two_intervals(Edge_const_handle e1, bool is_leftmost1, Vertex_handle new_v = _append_vertex(out_d, v->point(), e1); new_v->left()->add_curves(e2->curves_begin(), e2->curves_end()); } - + equal_at_v = true; current_res = EQUAL; break; @@ -867,7 +867,7 @@ _merge_two_intervals(Edge_const_handle e1, bool is_leftmost1, // Flip the result in case of an upper envelope. if (env_type == UPPER) current_res = CGAL::opposite (current_res); - + } } // End of the traversal over the intersection objects. @@ -883,11 +883,11 @@ _merge_two_intervals(Edge_const_handle e1, bool is_leftmost1, Vertex_handle v_to_be_updated = out_d.rightmost()->left(); if (origin_of_v == EQUAL) { - // If the vertices of the edge are the same, we have to get the + // If the vertices of the edge are the same, we have to get the // curves from there: - v_to_be_updated->add_curves(e1->right()->curves_begin(), + v_to_be_updated->add_curves(e1->right()->curves_begin(), e1->right()->curves_end()); - v_to_be_updated->add_curves(e2->right()->curves_begin(), + v_to_be_updated->add_curves(e2->right()->curves_begin(), e2->right()->curves_end()); } else { @@ -898,10 +898,10 @@ _merge_two_intervals(Edge_const_handle e1, bool is_leftmost1, v_to_be_updated->add_curves (v->curves_begin(), v->curves_end()); v_to_be_updated->add_curves (e->curves_begin(), e->curves_end()); } - + return; } - + if (! v_exists) { // Both edges are unbounded from the right, so we simply have // to update the rightmost edge in out_d. @@ -930,9 +930,9 @@ _merge_two_intervals(Edge_const_handle e1, bool is_leftmost1, // For example: // First diagram is the segment: [(0, -1), (1, 0)] // Second diagram of the two segments: [(0, 0), (1, 1)], [(1, 0), (2, 1)] - + // Check if we need to insert v into the diagram. - if (current_res == SMALLER) { + if (current_res == SMALLER) { // The final part of the interval is taken from e1. Vertex_handle new_v; @@ -947,25 +947,25 @@ _merge_two_intervals(Edge_const_handle e1, bool is_leftmost1, if (origin_of_v == EQUAL) { new_v = _append_vertex(out_d, v->point(), e1); new_v->add_curves(v->curves_begin(), v->curves_end()); - + // adding the curves of the vertex of the first diagram (vertices are // equal...) - new_v->add_curves(e1->right()->curves_begin(), + new_v->add_curves(e1->right()->curves_begin(), e1->right()->curves_end()); } else { // If v is from e2, check if it below (or above, in case of an upper // envelope) cv1 to insert it. - const Comparison_result res = + const Comparison_result res = traits->compare_y_at_x_2_object()(v->point(), e1->curve()); - + if (res == EQUAL || ((env_type == LOWER) && (res == SMALLER)) || ((env_type == UPPER) && (res == LARGER))) { new_v = _append_vertex(out_d, v->point(), e1); new_v->add_curves(v->curves_begin(), v->curves_end()); - + if (res == EQUAL) new_v->add_curves(e1->curves_begin(), e1->curves_end()); } @@ -980,7 +980,7 @@ _merge_two_intervals(Edge_const_handle e1, bool is_leftmost1, // In case v is also from e2, append it to the merged diagram. new_v = _append_vertex(out_d, v->point(), e2); new_v->add_curves(v->curves_begin(), v->curves_end()); - + // if origin_of_v is EQUAL then the two diagram have a vertex at // exact same place. if (origin_of_v == EQUAL) { @@ -993,16 +993,16 @@ _merge_two_intervals(Edge_const_handle e1, bool is_leftmost1, else { // If v is from e1, check if it below (or above, in case of an upper // envelope) cv2 to insert it. - const Comparison_result res = + const Comparison_result res = traits->compare_y_at_x_2_object()(v->point(), e2->curve()); - + if (res == EQUAL || ((env_type == LOWER) && (res == SMALLER)) || ((env_type == UPPER) && (res == LARGER))) { new_v = _append_vertex(out_d, v->point(), e2); new_v->add_curves(v->curves_begin(), v->curves_end()); - + if (res == EQUAL) new_v->add_curves(e2->curves_begin(), e2->curves_end()); } @@ -1024,14 +1024,14 @@ _append_vertex(Envelope_diagram_1& diag, // Create the new vertex and the new edge. Vertex_handle new_v = diag.new_vertex(p); Edge_handle new_e = diag.new_edge(); - + if (! e->is_empty()) new_e->add_curves(e->curves_begin(), e->curves_end()); - + // Connect the new vertex. new_v->set_left(new_e); new_v->set_right(diag.rightmost()); - + if (diag.leftmost() != diag.rightmost()) { // The diagram is not empty. Connect the new edge to the left of the // rightmost edge of the diagram. @@ -1044,18 +1044,18 @@ _append_vertex(Envelope_diagram_1& diag, // The diagram is empty: Make the new edge the leftmost. new_e->set_right(new_v); diag.set_leftmost(new_e); - diag.rightmost()->set_left(new_v); + diag.rightmost()->set_left(new_v); } - + return (new_v); -} +} // --------------------------------------------------------------------------- // Merge the vertical segments into the envelope given as a minimization // (or maximization) diagram. // template -void Envelope_divide_and_conquer_2:: +void Envelope_divide_and_conquer_2:: _merge_vertical_segments(Curve_pointer_vector& vert_vec, Envelope_diagram_1& out_d) { @@ -1104,7 +1104,7 @@ _merge_vertical_segments(Curve_pointer_vector& vert_vec, in_e_range = true; on_v = false; } - + // If the current vertical segment is not in the x-range of the current // edge, we proceed to the next edge. if (! in_e_range) { @@ -1114,7 +1114,7 @@ _merge_vertical_segments(Curve_pointer_vector& vert_vec, // Go over all vertical segments that share the same x-coordinate and // find the one(s) with the smallest endpoint (or largest endpoint, if - // we construct an upper envelope). + // we construct an upper envelope). std::list env_cvs; env_cvs.push_back(**iter); @@ -1189,7 +1189,7 @@ _merge_vertical_segments(Curve_pointer_vector& vert_vec, else { // Compare p with the current curve. res = comp_y_at_x(p, e->curve()); - + if (((env_type == LOWER) && (res != LARGER)) || ((env_type == UPPER) && (res != SMALLER))) { @@ -1220,15 +1220,15 @@ _split_edge(Envelope_diagram_1& diag, const Point_2& p, Edge_handle e) // Create the new vertex and the new edge. Vertex_handle new_v = diag.new_vertex(p); Edge_handle new_e = diag.new_edge(); - + // Duplicate the curves container associated with e. if (! e->is_empty()) new_e->add_curves(e->curves_begin(), e->curves_end()); - + // Connect the new vertex between e and new_e. new_v->set_left(e); new_v->set_right(new_e); - + new_e->set_left(new_v); if (e != diag.rightmost()) new_e->set_right(e->right()); diff --git a/Envelope_2/test/Envelope_2/CMakeLists.txt b/Envelope_2/test/Envelope_2/CMakeLists.txt index 459ea1595b7..01cd46d3976 100644 --- a/Envelope_2/test/Envelope_2/CMakeLists.txt +++ b/Envelope_2/test/Envelope_2/CMakeLists.txt @@ -4,18 +4,12 @@ project( Envelope_2_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Envelope_3/doc/Envelope_3/CGAL/Env_plane_traits_3.h b/Envelope_3/doc/Envelope_3/CGAL/Env_plane_traits_3.h index 47c5254d1db..c1a839a38be 100644 --- a/Envelope_3/doc/Envelope_3/CGAL/Env_plane_traits_3.h +++ b/Envelope_3/doc/Envelope_3/CGAL/Env_plane_traits_3.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgEnvelope3 +\ingroup PkgEnvelope3Ref The traits class `Env_plane_traits_3` models the `EnvelopeTraits_3` concept, and is used for the construction of lower and upper envelopes of planes diff --git a/Envelope_3/doc/Envelope_3/CGAL/Env_sphere_traits_3.h b/Envelope_3/doc/Envelope_3/CGAL/Env_sphere_traits_3.h index faffe652e84..157ad738d8f 100644 --- a/Envelope_3/doc/Envelope_3/CGAL/Env_sphere_traits_3.h +++ b/Envelope_3/doc/Envelope_3/CGAL/Env_sphere_traits_3.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgEnvelope3 +\ingroup PkgEnvelope3Ref The traits class `Env_sphere_traits_3` models the `EnvelopeTraits_3` concept, and is used for the construction of lower and upper envelopes diff --git a/Envelope_3/doc/Envelope_3/CGAL/Env_surface_data_traits_3.h b/Envelope_3/doc/Envelope_3/CGAL/Env_surface_data_traits_3.h index 30dbf206ca1..9c8fbdec403 100644 --- a/Envelope_3/doc/Envelope_3/CGAL/Env_surface_data_traits_3.h +++ b/Envelope_3/doc/Envelope_3/CGAL/Env_surface_data_traits_3.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgEnvelope3 +\ingroup PkgEnvelope3Ref The class `Env_surface_data_traits_3` is a model of the `EnvelopeTraits_3` concept and serves as a decorator class that allows the extension of the surfaces diff --git a/Envelope_3/doc/Envelope_3/CGAL/Env_triangle_traits_3.h b/Envelope_3/doc/Envelope_3/CGAL/Env_triangle_traits_3.h index 0043b162c32..87ade2cb2ff 100644 --- a/Envelope_3/doc/Envelope_3/CGAL/Env_triangle_traits_3.h +++ b/Envelope_3/doc/Envelope_3/CGAL/Env_triangle_traits_3.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgEnvelope3 +\ingroup PkgEnvelope3Ref The traits class `Env_triangle_traits_3` models the `EnvelopeTraits_3` concept, and is used for the construction of lower and upper envelopes diff --git a/Envelope_3/doc/Envelope_3/CGAL/envelope_3.h b/Envelope_3/doc/Envelope_3/CGAL/envelope_3.h index d5c6b319111..d281cdb698d 100644 --- a/Envelope_3/doc/Envelope_3/CGAL/envelope_3.h +++ b/Envelope_3/doc/Envelope_3/CGAL/envelope_3.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgEnvelope3 +\ingroup PkgEnvelope3Ref The class-template `Envelope_diagram_2` represents the minimization diagram that corresponds to the lower envelope of a set of curves, or the @@ -165,7 +165,7 @@ Envelope_diagram_2 (EnvTraits *traits); namespace CGAL { /*! -\ingroup PkgEnvelope3 +\ingroup PkgEnvelope3Ref Computes the lower envelope of a set of surfaces in \f$ \mathbb{R}^3\f$, as given by the range `[begin, end)`. The lower envelope is @@ -182,7 +182,7 @@ Envelope_diagram_2& diag); namespace CGAL { /*! -\ingroup PkgEnvelope3 +\ingroup PkgEnvelope3Ref Computes the lower envelope of a set of \f$ xy\f$-monotone surfaces in \f$ \mathbb{R}^3\f$, as given by the range `[begin, end)`. The lower @@ -199,7 +199,7 @@ Envelope_diagram_2& diag); namespace CGAL { /*! -\ingroup PkgEnvelope3 +\ingroup PkgEnvelope3Ref Computes the upper envelope of a set of surfaces in \f$ \mathbb{R}^3\f$, as given by the range `[begin, end)`. The upper envelope is @@ -216,7 +216,7 @@ Envelope_diagram_2& diag); namespace CGAL { /*! -\ingroup PkgEnvelope3 +\ingroup PkgEnvelope3Ref Computes the upper envelope of a set of \f$ xy\f$-monotone surfaces in \f$ \mathbb{R}^3\f$, as given by the range `[begin, end)`. The lower diff --git a/Envelope_3/doc/Envelope_3/PackageDescription.txt b/Envelope_3/doc/Envelope_3/PackageDescription.txt index afbadf2eaf2..b20188b1d1d 100644 --- a/Envelope_3/doc/Envelope_3/PackageDescription.txt +++ b/Envelope_3/doc/Envelope_3/PackageDescription.txt @@ -1,19 +1,19 @@ -/// \defgroup PkgEnvelope3 3D Envelopes Reference +/// \defgroup PkgEnvelope3Ref 3D Envelopes Reference /// \defgroup PkgEnvelope3Concepts Concepts -/// \ingroup PkgEnvelope3 +/// \ingroup PkgEnvelope3Ref /*! -\addtogroup PkgEnvelope3 +\addtogroup PkgEnvelope3Ref \todo check generated documentation -\cgalPkgDescriptionBegin{3D Envelopes,PkgEnvelope3Summary} +\cgalPkgDescriptionBegin{3D Envelopes,PkgEnvelope3} \cgalPkgPicture{Envelope_3/fig/Envelope_3.png} \cgalPkgSummaryBegin \cgalPkgAuthors{Dan Halperin, Michal Meyerovitch, Ron Wein, and Baruch Zukerman} \cgalPkgDesc{This package consits of functions that compute the lower (or upper) envelope of a set of arbitrary surfaces in 3D. The output is represented as an 2D envelope diagram, namely a planar subdivision such that the identity of the surfaces that induce the envelope over each diagram cell is unique.} -\cgalPkgManuals{Chapter_Envelopes_of_Surfaces_in_3D,PkgEnvelope3} +\cgalPkgManuals{Chapter_Envelopes_of_Surfaces_in_3D,PkgEnvelope3Ref} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{3.3} -\cgalPkgDependsOn{\ref PkgArrangement2Summary} +\cgalPkgDependsOn{\ref PkgArrangementOnSurface2} \cgalPkgBib{cgal:mwz-e3} \cgalPkgLicense{\ref licensesGPL "GPL"} \cgalPkgDemo{3D Envelopes,envelope_3.zip,L1 Voronoi Diagram,l1_voronoi_diagram_2.zip} diff --git a/Envelope_3/examples/Envelope_3/CMakeLists.txt b/Envelope_3/examples/Envelope_3/CMakeLists.txt index bc2fd788c22..4f3dd717ad7 100644 --- a/Envelope_3/examples/Envelope_3/CMakeLists.txt +++ b/Envelope_3/examples/Envelope_3/CMakeLists.txt @@ -4,17 +4,13 @@ project( Envelope_3_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET COMPONENTS Core ) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") + include(${CGAL_USE_FILE}) # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) diff --git a/Envelope_3/test/Envelope_3/CMakeLists.txt b/Envelope_3/test/Envelope_3/CMakeLists.txt index 8628a42b6b7..da3fdcc438a 100644 --- a/Envelope_3/test/Envelope_3/CMakeLists.txt +++ b/Envelope_3/test/Envelope_3/CMakeLists.txt @@ -4,17 +4,13 @@ project( Envelope_3_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET COMPONENTS Core ) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") + include(${CGAL_USE_FILE}) # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) diff --git a/Filtered_kernel/benchmark/Filtered_kernel/CMakeLists.txt b/Filtered_kernel/benchmark/Filtered_kernel/CMakeLists.txt index 739c48d90d3..5f557e993c4 100644 --- a/Filtered_kernel/benchmark/Filtered_kernel/CMakeLists.txt +++ b/Filtered_kernel/benchmark/Filtered_kernel/CMakeLists.txt @@ -4,7 +4,7 @@ project( Filtered_kernel_test ) -cmake_minimum_required(VERSION 2.8.11) +cmake_minimum_required(VERSION 3.1) add_executable(bench_simple_comparisons bench_simple_comparisons.cpp) @@ -13,11 +13,7 @@ find_package(CGAL QUIET COMPONENTS Core ) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE ../../include) + include(${CGAL_USE_FILE}) add_executable( bench_orientation_3 "orientation_3.cpp" ) target_link_libraries(bench_orientation_3 ${CGAL_LIBRARIES} ${CGAL_3RD_PARTY_LIBRARIES} ) diff --git a/Filtered_kernel/examples/Filtered_kernel/CMakeLists.txt b/Filtered_kernel/examples/Filtered_kernel/CMakeLists.txt index 1ebab191641..ebcff9060b2 100644 --- a/Filtered_kernel/examples/Filtered_kernel/CMakeLists.txt +++ b/Filtered_kernel/examples/Filtered_kernel/CMakeLists.txt @@ -4,18 +4,12 @@ project( Filtered_kernel_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Filtered_kernel/test/Filtered_kernel/CMakeLists.txt b/Filtered_kernel/test/Filtered_kernel/CMakeLists.txt index ea9a0aa6184..6b3d72637c4 100644 --- a/Filtered_kernel/test/Filtered_kernel/CMakeLists.txt +++ b/Filtered_kernel/test/Filtered_kernel/CMakeLists.txt @@ -4,18 +4,12 @@ project( Filtered_kernel_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Generalized_map/doc/Generalized_map/PackageDescription.txt b/Generalized_map/doc/Generalized_map/PackageDescription.txt index acbdf16ff7e..642f145a29a 100644 --- a/Generalized_map/doc/Generalized_map/PackageDescription.txt +++ b/Generalized_map/doc/Generalized_map/PackageDescription.txt @@ -1,19 +1,19 @@ -/// \defgroup PkgGeneralizedMaps Generalized Maps Reference +/// \defgroup PkgGeneralizedMapsRef Generalized Maps Reference /// \defgroup PkgGeneralizedMapsConcepts Concepts -/// \ingroup PkgGeneralizedMaps +/// \ingroup PkgGeneralizedMapsRef /// \defgroup PkgGeneralizedMapsClasses Classes -/// \ingroup PkgGeneralizedMaps +/// \ingroup PkgGeneralizedMapsRef /*! -\addtogroup PkgGeneralizedMaps -\cgalPkgDescriptionBegin{Generalized Maps,PkgGeneralizedMapsSummary} +\addtogroup PkgGeneralizedMapsRef +\cgalPkgDescriptionBegin{Generalized Maps,PkgGeneralizedMaps} \cgalPkgPicture{gmap_logo.png} \cgalPkgSummaryBegin \cgalPkgAuthor{Guillaume Damiand} \cgalPkgDesc{This package implements Generalized Maps in d dimensions. A generalized map is a data structure enabling to represent an orientable or non orientable subdivided object by describing all the cells of the subdivision (for example in 3D vertices, edges, faces, volumes) and all the incidence and adjacency relationships between these cells. Information can be associated to cells thanks to attributes. The package provides basic creation, modification operations, and several iterators enabling to run through some specific part of the object.} -\cgalPkgManuals{Chapter_Generalized_Maps,PkgGeneralizedMaps} +\cgalPkgManuals{Chapter_Generalized_Maps,PkgGeneralizedMapsRef} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{4.9} diff --git a/Generalized_map/examples/Generalized_map/CMakeLists.txt b/Generalized_map/examples/Generalized_map/CMakeLists.txt index 21ac424632a..2fde81ed252 100644 --- a/Generalized_map/examples/Generalized_map/CMakeLists.txt +++ b/Generalized_map/examples/Generalized_map/CMakeLists.txt @@ -4,18 +4,12 @@ project( Generalized_map_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Generalized_map/test/Generalized_map/CMakeLists.txt b/Generalized_map/test/Generalized_map/CMakeLists.txt index a81560b4117..2fc8c4ac4a4 100644 --- a/Generalized_map/test/Generalized_map/CMakeLists.txt +++ b/Generalized_map/test/Generalized_map/CMakeLists.txt @@ -4,7 +4,7 @@ project( Generalized_map_Tests ) -cmake_minimum_required(VERSION 2.8.11) +cmake_minimum_required(VERSION 3.1) # CGAL and its components find_package( CGAL QUIET COMPONENTS ) @@ -16,10 +16,6 @@ if ( NOT CGAL_FOUND ) endif() -# include helper file -include( ${CGAL_USE_FILE} ) - - # Boost and its components find_package( Boost REQUIRED ) @@ -34,14 +30,10 @@ endif() # include for local directory # include for local package -include_directories( BEFORE ../../include ) - # Creating entries for all C++ files with "main" routine # ########################################################## -include( CGAL_CreateSingleSourceCGALProgram ) - create_single_source_cgal_program( "Generalized_map_test.cpp" ) diff --git a/Generator/benchmark/Generator/CMakeLists.txt b/Generator/benchmark/Generator/CMakeLists.txt index e382a15573b..cef6304650d 100644 --- a/Generator/benchmark/Generator/CMakeLists.txt +++ b/Generator/benchmark/Generator/CMakeLists.txt @@ -4,24 +4,20 @@ project( Generator_example ) -cmake_minimum_required(VERSION 2.8.11) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET COMPONENTS Core ) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) + include(${CGAL_USE_FILE}) find_package(Boost REQUIRED program_options) include_directories(${Boost_PROGRAM_OPTIONS_INCLUDE_DIR}) add_definitions( "-DCGAL_USE_BOOST_PROGRAM_OPTIONS" ) list(APPEND CGAL_3RD_PARTY_LIBRARIES ${Boost_PROGRAM_OPTIONS_LIBRARY}) - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE ../../include) - create_single_source_cgal_program( "random_grid.cpp" ) create_single_source_cgal_program( "random_disc_2.cpp" ) diff --git a/Generator/doc/Generator/CGAL/Combination_enumerator.h b/Generator/doc/Generator/CGAL/Combination_enumerator.h index 80a57e20784..5e1873882c0 100644 --- a/Generator/doc/Generator/CGAL/Combination_enumerator.h +++ b/Generator/doc/Generator/CGAL/Combination_enumerator.h @@ -1,6 +1,6 @@ namespace CGAL { -/// \addtogroup PkgGenerators +/// \addtogroup PkgGeneratorsRef /// @{ /*! diff --git a/Generator/doc/Generator/CGAL/Random.h b/Generator/doc/Generator/CGAL/Random.h index ead823642c6..653aa3240ca 100644 --- a/Generator/doc/Generator/CGAL/Random.h +++ b/Generator/doc/Generator/CGAL/Random.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgGenerators +\ingroup PkgGeneratorsRef The class `Random` is a random numbers generator. It generates uniformly distributed random `bool`, `int` and `double`. It can be used as the random number generating function object in the @@ -180,7 +180,7 @@ bool operator == ( Random const& random2) const; }; /* end Random */ /*! - \ingroup PkgGenerators + \ingroup PkgGeneratorsRef The global function `get_default_random()` returns the default random numbers generator used for the generator functions and classes. The returned generator is thread local. @@ -188,7 +188,7 @@ bool operator == ( Random const& random2) const; Random &get_default_random(); /*! - \ingroup PkgGenerators + \ingroup PkgGeneratorsRef \deprecated The variable `default_random` was the default random numbers generator used for the generator functions and classes. Deprecated. Use `get_default_random()` instead. diff --git a/Generator/doc/Generator/CGAL/point_generators_2.h b/Generator/doc/Generator/CGAL/point_generators_2.h index 449f0444a20..4db77fafc06 100644 --- a/Generator/doc/Generator/CGAL/point_generators_2.h +++ b/Generator/doc/Generator/CGAL/point_generators_2.h @@ -1,6 +1,6 @@ namespace CGAL { -/// \addtogroup PkgGenerators +/// \addtogroup PkgGeneratorsRef /// @{ /*! diff --git a/Generator/doc/Generator/CGAL/point_generators_3.h b/Generator/doc/Generator/CGAL/point_generators_3.h index 631637941df..cb87e09ed95 100644 --- a/Generator/doc/Generator/CGAL/point_generators_3.h +++ b/Generator/doc/Generator/CGAL/point_generators_3.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgGenerators +\ingroup PkgGeneratorsRef \brief generates a given number of points on a cubic grid whose size is determined by the number of points to be generated. diff --git a/Generator/doc/Generator/CGAL/point_generators_d.h b/Generator/doc/Generator/CGAL/point_generators_d.h index aa103faaa8b..b064051adac 100644 --- a/Generator/doc/Generator/CGAL/point_generators_d.h +++ b/Generator/doc/Generator/CGAL/point_generators_d.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgGenerators +\ingroup PkgGeneratorsRef generates a given number of points on a cubic grid in any dimension whose size is determined by the number of points to be generated. diff --git a/Generator/doc/Generator/CGAL/random_convex_hull_in_disc_2.h b/Generator/doc/Generator/CGAL/random_convex_hull_in_disc_2.h index 3fd55c14b06..3800a0f7491 100644 --- a/Generator/doc/Generator/CGAL/random_convex_hull_in_disc_2.h +++ b/Generator/doc/Generator/CGAL/random_convex_hull_in_disc_2.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgGenerators +\ingroup PkgGeneratorsRef \brief Computes a random convex polygon as the convex hull of \f$ n \f$ random points in a disc centered at the origin with radius `radius`. diff --git a/Generator/doc/Generator/CGAL/random_convex_set_2.h b/Generator/doc/Generator/CGAL/random_convex_set_2.h index 750bc06592d..dea39b97031 100644 --- a/Generator/doc/Generator/CGAL/random_convex_set_2.h +++ b/Generator/doc/Generator/CGAL/random_convex_set_2.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgGenerators +\ingroup PkgGeneratorsRef \brief computes a random convex planar point set of given size where the points are drawn from a specific domain. diff --git a/Generator/doc/Generator/CGAL/random_polygon_2.h b/Generator/doc/Generator/CGAL/random_polygon_2.h index 1cb14cd4fdd..be9c8766f4b 100644 --- a/Generator/doc/Generator/CGAL/random_polygon_2.h +++ b/Generator/doc/Generator/CGAL/random_polygon_2.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgGenerators +\ingroup PkgGeneratorsRef \brief computes a random simple polygon by writing its vertices (oriented counterclockwise) to `result`. The polygon generated will have a number diff --git a/Generator/doc/Generator/CGAL/random_selection.h b/Generator/doc/Generator/CGAL/random_selection.h index 173008e7fa4..b1460b86816 100644 --- a/Generator/doc/Generator/CGAL/random_selection.h +++ b/Generator/doc/Generator/CGAL/random_selection.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgGenerators +\ingroup PkgGeneratorsRef \brief chooses `n` items at random from a random access iterator range which is useful to produce degenerate input data sets with multiple entries of identical items. diff --git a/Generator/doc/Generator/PackageDescription.txt b/Generator/doc/Generator/PackageDescription.txt index 2596c89d39d..f9e3f2f935a 100644 --- a/Generator/doc/Generator/PackageDescription.txt +++ b/Generator/doc/Generator/PackageDescription.txt @@ -1,14 +1,14 @@ -/// \defgroup PkgGenerators Geometric Object Generators Reference +/// \defgroup PkgGeneratorsRef Geometric Object Generators Reference /// \defgroup PkgGeneratorsConcepts Concepts -/// \ingroup PkgGenerators +/// \ingroup PkgGeneratorsRef /*! -\addtogroup PkgGenerators -\cgalPkgDescriptionBegin{Geometric Object Generators,PkgGeneratorsSummary} +\addtogroup PkgGeneratorsRef +\cgalPkgDescriptionBegin{Geometric Object Generators,PkgGenerators} \cgalPkgPicture{dice.png} \cgalPkgSummaryBegin \cgalPkgAuthors{Pedro M. M. de Castro, Olivier Devillers, Susan Hert, Michael Hoffmann, Lutz Kettner, Sven Schönherr, Alexandru Tifrea, and Maxime Gimeno} \cgalPkgDesc{This package provides a variety of generators for geometric objects. They are useful as synthetic test data sets, e.g. for testing algorithms on degenerate object sets and for performance analysis. } -\cgalPkgManuals{Chapter_Geometric_Object_Generators,PkgGenerators} +\cgalPkgManuals{Chapter_Geometric_Object_Generators,PkgGeneratorsRef} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{1.0} diff --git a/Generator/examples/Generator/CMakeLists.txt b/Generator/examples/Generator/CMakeLists.txt index a2a9ce98fbb..b5fc21b2fd3 100644 --- a/Generator/examples/Generator/CMakeLists.txt +++ b/Generator/examples/Generator/CMakeLists.txt @@ -4,18 +4,12 @@ project( Generator_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # Use Eigen find_package(Eigen3 3.1.0 QUIET) #(3.1.0 or greater) if (EIGEN3_FOUND) diff --git a/Generator/test/Generator/CMakeLists.txt b/Generator/test/Generator/CMakeLists.txt index 8e8c59d2504..a5606234f16 100644 --- a/Generator/test/Generator/CMakeLists.txt +++ b/Generator/test/Generator/CMakeLists.txt @@ -4,18 +4,12 @@ project( Generator_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # Use Eigen find_package(Eigen3 3.1.0 QUIET) #(3.1.0 or greater) if (EIGEN3_FOUND) diff --git a/Geomview/demo/Geomview/CMakeLists.txt b/Geomview/demo/Geomview/CMakeLists.txt index 41df3763731..fdba135eb21 100644 --- a/Geomview/demo/Geomview/CMakeLists.txt +++ b/Geomview/demo/Geomview/CMakeLists.txt @@ -16,10 +16,6 @@ find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - create_single_source_cgal_program( "input.cpp" ) create_single_source_cgal_program( "kernel.cpp" ) create_single_source_cgal_program( "gv_terrain.cpp" ) diff --git a/Geomview/doc/Geomview/CGAL/IO/Geomview_stream.h b/Geomview/doc/Geomview/CGAL/IO/Geomview_stream.h index 3b6cc552736..d189bb8367f 100644 --- a/Geomview/doc/Geomview/CGAL/IO/Geomview_stream.h +++ b/Geomview/doc/Geomview/CGAL/IO/Geomview_stream.h @@ -1,7 +1,7 @@ namespace CGAL { /*! - \ingroup PkgGeomview + \ingroup PkgGeomviewRef An object of the class `Geomview_stream` is a stream in which geometric objects can be inserted and where geometric objects can be extracted @@ -256,7 +256,7 @@ Geomview_stream& operator<<(Geomview_stream& gs, const Point_2& p); /// \addtogroup GeomviewOutput Output Operators for CGAL Kernel Classes -/// \ingroup PkgGeomview +/// \ingroup PkgGeomviewRef /// The following classes of the \cgal kernel have output /// operators. 2D objects are embedded in the `xy`-plane. /// @{ @@ -380,7 +380,7 @@ operator<<(Geomview_stream& gs, const Bbox_3& b); /// @} /// \addtogroup GeomviewInput Input Operators for CGAL Kernel Classes -/// \ingroup PkgGeomview +/// \ingroup PkgGeomviewRef /// An input operator is provided for points. The user has to select /// a point on the pick plane with the right mouse button. The pick plane /// can be moved anywhere with the left mouse button, before a point is entered. @@ -398,7 +398,7 @@ operator>>(Geomview_stream& gs, Point_3& p); /// @} /// \addtogroup GeomviewOutputClasses Output Operators for CGAL Basic Library Classes -/// \ingroup PkgGeomview +/// \ingroup PkgGeomviewRef /// Output operators are provided for polyhedral surfaces, as well as for 3D /// and 2D triangulations. The latter allow to visualize terrrains if the /// point type isa 3D point. diff --git a/Geomview/doc/Geomview/PackageDescription.txt b/Geomview/doc/Geomview/PackageDescription.txt index 7e598818921..15e58d59d6f 100644 --- a/Geomview/doc/Geomview/PackageDescription.txt +++ b/Geomview/doc/Geomview/PackageDescription.txt @@ -1,13 +1,13 @@ -/// \defgroup PkgGeomview Geomview Reference +/// \defgroup PkgGeomviewRef Geomview Reference /*! -\addtogroup PkgGeomview +\addtogroup PkgGeomviewRef \todo check generated documentation -\cgalPkgDescriptionBegin{Geomview,PkgGeomviewSummary} +\cgalPkgDescriptionBegin{Geomview,PkgGeomview} \cgalPkgPicture{geomview.png} \cgalPkgSummaryBegin \cgalPkgAuthors{Andreas Fabri and Sylvain Pion} \cgalPkgDesc{This package implements an interface to Geomview, an interactive 3D viewing program, originally developed at the Geometry Center in Minneapolis.} -\cgalPkgManuals{Chapter_Geomview,PkgGeomview} +\cgalPkgManuals{Chapter_Geomview,PkgGeomviewRef} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{2.0} diff --git a/Geomview/test/Geomview/CMakeLists.txt b/Geomview/test/Geomview/CMakeLists.txt index a8e0247d3ed..82a744ca346 100644 --- a/Geomview/test/Geomview/CMakeLists.txt +++ b/Geomview/test/Geomview/CMakeLists.txt @@ -4,18 +4,12 @@ project( Geomview_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/GraphicsView/demo/Alpha_shapes_2/CMakeLists.txt b/GraphicsView/demo/Alpha_shapes_2/CMakeLists.txt index 79481e9d477..af389e5aa20 100644 --- a/GraphicsView/demo/Alpha_shapes_2/CMakeLists.txt +++ b/GraphicsView/demo/Alpha_shapes_2/CMakeLists.txt @@ -11,14 +11,12 @@ endif() find_package(CGAL COMPONENTS Qt5) -include(${CGAL_USE_FILE}) - find_package(Qt5 QUIET COMPONENTS Xml Script OpenGL Svg) -include_directories (BEFORE ../../include) include_directories (BEFORE ./include) if ( CGAL_FOUND AND CGAL_Qt5_FOUND AND Qt5_FOUND ) add_definitions(-DQT_NO_KEYWORDS) +set(CMAKE_INCLUDE_CURRENT_DIR ON) #-------------------------------- # The "Delaunay" demo: Alpha_shapes_2 diff --git a/GraphicsView/demo/Apollonius_graph_2/CMakeLists.txt b/GraphicsView/demo/Apollonius_graph_2/CMakeLists.txt index 5277df796c8..1a858439904 100644 --- a/GraphicsView/demo/Apollonius_graph_2/CMakeLists.txt +++ b/GraphicsView/demo/Apollonius_graph_2/CMakeLists.txt @@ -11,14 +11,11 @@ endif() find_package(CGAL COMPONENTS Qt5) -include(${CGAL_USE_FILE}) - find_package(Qt5 QUIET COMPONENTS Xml Script OpenGL Svg) -include_directories (BEFORE ../../include) - if ( CGAL_FOUND AND CGAL_Qt5_FOUND AND Qt5_FOUND ) add_definitions(-DQT_NO_KEYWORDS) +set(CMAKE_INCLUDE_CURRENT_DIR ON) #-------------------------------- # UI files (Qt Designer files) diff --git a/GraphicsView/demo/Bounding_volumes/CMakeLists.txt b/GraphicsView/demo/Bounding_volumes/CMakeLists.txt index 73dbe769131..2ac22c9815b 100644 --- a/GraphicsView/demo/Bounding_volumes/CMakeLists.txt +++ b/GraphicsView/demo/Bounding_volumes/CMakeLists.txt @@ -11,16 +11,14 @@ endif() find_package(CGAL COMPONENTS Qt5) -include(${CGAL_USE_FILE}) - find_package(Qt5 QUIET COMPONENTS Xml Script OpenGL Svg) -include_directories (BEFORE ../../include) include_directories (BEFORE ./include) include_directories (BEFORE ../../../Matrix_search/include) if ( CGAL_FOUND AND CGAL_Qt5_FOUND AND Qt5_FOUND ) +set(CMAKE_INCLUDE_CURRENT_DIR ON) add_definitions(-DQT_NO_KEYWORDS) #---------------------------------------------- diff --git a/GraphicsView/demo/Circular_kernel_2/CMakeLists.txt b/GraphicsView/demo/Circular_kernel_2/CMakeLists.txt index b832117e578..60a6c359d4c 100644 --- a/GraphicsView/demo/Circular_kernel_2/CMakeLists.txt +++ b/GraphicsView/demo/Circular_kernel_2/CMakeLists.txt @@ -11,17 +11,12 @@ endif() find_package(CGAL COMPONENTS Qt5) -include(${CGAL_USE_FILE}) - - find_package(Qt5 QUIET COMPONENTS Xml Script OpenGL Svg) -include_directories (BEFORE ../../include) - if ( CGAL_FOUND AND CGAL_Qt5_FOUND AND Qt5_FOUND ) add_definitions(-DQT_NO_KEYWORDS) - + set(CMAKE_INCLUDE_CURRENT_DIR ON) #-------------------------------- # The demo: Circular_kernel_2 diff --git a/GraphicsView/demo/Generator/CMakeLists.txt b/GraphicsView/demo/Generator/CMakeLists.txt index 186f37e94dd..53b33e71048 100644 --- a/GraphicsView/demo/Generator/CMakeLists.txt +++ b/GraphicsView/demo/Generator/CMakeLists.txt @@ -10,13 +10,13 @@ endif() find_package(CGAL COMPONENTS Qt5) -include(${CGAL_USE_FILE}) - find_package(Qt5 QUIET COMPONENTS Xml Script OpenGL Svg) if ( CGAL_FOUND AND CGAL_Qt5_FOUND AND Qt5_FOUND ) add_definitions(-DQT_NO_KEYWORDS) + set(CMAKE_INCLUDE_CURRENT_DIR ON) + #-------------------------------- # Demo: Generator_2 #-------------------------------- diff --git a/GraphicsView/demo/GraphicsView/CMakeLists.txt b/GraphicsView/demo/GraphicsView/CMakeLists.txt index 3da163ace44..5f92ac528dc 100644 --- a/GraphicsView/demo/GraphicsView/CMakeLists.txt +++ b/GraphicsView/demo/GraphicsView/CMakeLists.txt @@ -10,13 +10,12 @@ endif() find_package(CGAL COMPONENTS Qt5) -include(${CGAL_USE_FILE}) - find_package(Qt5 QUIET COMPONENTS Xml Script OpenGL Svg) if ( CGAL_FOUND AND CGAL_Qt5_FOUND AND Qt5_FOUND ) add_definitions(-DQT_NO_KEYWORDS) + set(CMAKE_INCLUDE_CURRENT_DIR ON) add_executable ( min min.cpp ${CGAL_Qt5_RESOURCE_FILES} ${CGAL_Qt5_MOC_FILES}) diff --git a/GraphicsView/demo/L1_Voronoi_diagram_2/CMakeLists.txt b/GraphicsView/demo/L1_Voronoi_diagram_2/CMakeLists.txt index 4e42f7ed98f..9903f9ca190 100644 --- a/GraphicsView/demo/L1_Voronoi_diagram_2/CMakeLists.txt +++ b/GraphicsView/demo/L1_Voronoi_diagram_2/CMakeLists.txt @@ -11,16 +11,14 @@ endif() find_package(CGAL COMPONENTS Qt5) -include(${CGAL_USE_FILE}) - find_package(Qt5 QUIET COMPONENTS Xml Script OpenGL Svg) -include_directories (BEFORE ../../include) include_directories (BEFORE ./include) if ( CGAL_FOUND AND CGAL_Qt5_FOUND AND Qt5_FOUND ) add_definitions(-DQT_NO_KEYWORDS) +set(CMAKE_INCLUDE_CURRENT_DIR ON) #-------------------------------- # The "L1 Voronoi diagram" demo: L1_voronoi_diagram_2 diff --git a/GraphicsView/demo/Largest_empty_rect_2/CMakeLists.txt b/GraphicsView/demo/Largest_empty_rect_2/CMakeLists.txt index f3ea3822cee..1faba1f18d0 100644 --- a/GraphicsView/demo/Largest_empty_rect_2/CMakeLists.txt +++ b/GraphicsView/demo/Largest_empty_rect_2/CMakeLists.txt @@ -11,16 +11,13 @@ endif() find_package(CGAL COMPONENTS Qt5) -include(${CGAL_USE_FILE}) - find_package(Qt5 QUIET COMPONENTS Xml Script OpenGL Svg) -include_directories (BEFORE ../../include) - if ( CGAL_FOUND AND CGAL_Qt5_FOUND AND Qt5_FOUND ) add_definitions(-DQT_NO_KEYWORDS) - + set(CMAKE_INCLUDE_CURRENT_DIR ON) + #-------------------------------- # Demo: Largest_empty_rectangle_2 #-------------------------------- diff --git a/GraphicsView/demo/Periodic_2_triangulation_2/CMakeLists.txt b/GraphicsView/demo/Periodic_2_triangulation_2/CMakeLists.txt index 065264be817..6e2d6348e65 100644 --- a/GraphicsView/demo/Periodic_2_triangulation_2/CMakeLists.txt +++ b/GraphicsView/demo/Periodic_2_triangulation_2/CMakeLists.txt @@ -8,18 +8,14 @@ endif() find_package(CGAL COMPONENTS Qt5) -include(${CGAL_USE_FILE}) - - find_package(Qt5 QUIET COMPONENTS Xml Script OpenGL Svg) -include_directories (BEFORE ../../../include) include_directories (BEFORE ./include) if ( CGAL_FOUND AND CGAL_Qt5_FOUND AND Qt5_FOUND ) add_definitions(-DQT_NO_KEYWORDS) - +set(CMAKE_INCLUDE_CURRENT_DIR ON) #-------------------------------- # The "2D Periodic triangulation" demo: Periodic_2_triangulation_2 diff --git a/GraphicsView/demo/Polygon/CMakeLists.txt b/GraphicsView/demo/Polygon/CMakeLists.txt index f84197f4cc1..0e4e0a01d38 100644 --- a/GraphicsView/demo/Polygon/CMakeLists.txt +++ b/GraphicsView/demo/Polygon/CMakeLists.txt @@ -11,8 +11,6 @@ endif() find_package(CGAL COMPONENTS Qt5 Core) -include(${CGAL_USE_FILE}) - find_package(Eigen3 3.1.0) #(requires 3.1.0 or greater) if (EIGEN3_FOUND) include( ${EIGEN3_USE_FILE} ) @@ -23,10 +21,8 @@ endif() find_package(Qt5 QUIET COMPONENTS Xml Script OpenGL Svg) -include_directories (BEFORE ../../include) - if ( CGAL_FOUND AND CGAL_Qt5_FOUND AND Qt5_FOUND ) - + include(${CGAL_USE_FILE}) add_definitions(-DQT_NO_KEYWORDS) if( CGAL_Core_FOUND) diff --git a/GraphicsView/demo/Segment_Delaunay_graph_2/CMakeLists.txt b/GraphicsView/demo/Segment_Delaunay_graph_2/CMakeLists.txt index d686684058e..a2fd30a9230 100644 --- a/GraphicsView/demo/Segment_Delaunay_graph_2/CMakeLists.txt +++ b/GraphicsView/demo/Segment_Delaunay_graph_2/CMakeLists.txt @@ -11,8 +11,6 @@ endif() find_package(CGAL COMPONENTS Qt5 Core) -include(${CGAL_USE_FILE}) - set( QT_USE_QTXML TRUE ) set( QT_USE_QTMAIN TRUE ) set( QT_USE_QTSCRIPT TRUE ) @@ -20,12 +18,12 @@ set( QT_USE_QTOPENGL TRUE ) find_package(Qt5 QUIET COMPONENTS Xml Script OpenGL Svg) -include_directories (BEFORE ../../include) include_directories (BEFORE ./include) if ( CGAL_FOUND AND CGAL_Qt5_FOUND AND Qt5_FOUND ) +include(${CGAL_USE_FILE}) add_definitions(-DQT_NO_KEYWORDS) #-------------------------------- diff --git a/GraphicsView/demo/Segment_Delaunay_graph_Linf_2/CMakeLists.txt b/GraphicsView/demo/Segment_Delaunay_graph_Linf_2/CMakeLists.txt index 235361f99be..03685cdbfef 100644 --- a/GraphicsView/demo/Segment_Delaunay_graph_Linf_2/CMakeLists.txt +++ b/GraphicsView/demo/Segment_Delaunay_graph_Linf_2/CMakeLists.txt @@ -11,8 +11,6 @@ endif() find_package(CGAL COMPONENTS Qt5 Core) -include(${CGAL_USE_FILE}) - set( QT_USE_QTXML TRUE ) set( QT_USE_QTMAIN TRUE ) set( QT_USE_QTSCRIPT TRUE ) @@ -20,12 +18,12 @@ set( QT_USE_QTOPENGL TRUE ) find_package(Qt5 QUIET COMPONENTS Xml Script OpenGL Svg) -include_directories (BEFORE ../../include) include_directories (BEFORE ./include) if ( CGAL_FOUND AND CGAL_Qt5_FOUND AND Qt5_FOUND ) +include(${CGAL_USE_FILE}) add_definitions(-DQT_NO_KEYWORDS) #-------------------------------- diff --git a/GraphicsView/demo/Snap_rounding_2/CMakeLists.txt b/GraphicsView/demo/Snap_rounding_2/CMakeLists.txt index 0644db2a4ef..d19002e1bd4 100644 --- a/GraphicsView/demo/Snap_rounding_2/CMakeLists.txt +++ b/GraphicsView/demo/Snap_rounding_2/CMakeLists.txt @@ -11,16 +11,14 @@ endif() find_package(CGAL COMPONENTS Qt5) -include(${CGAL_USE_FILE}) - find_package(Qt5 QUIET COMPONENTS Xml Script OpenGL Svg) -include_directories (BEFORE ../../include) include_directories (BEFORE ../../../Snap_rounding_2/include) if ( CGAL_FOUND AND CGAL_Qt5_FOUND AND Qt5_FOUND ) add_definitions(-DQT_NO_KEYWORDS) +set(CMAKE_INCLUDE_CURRENT_DIR ON) #-------------------------------- # UI files (Qt Designer files) diff --git a/GraphicsView/demo/Spatial_searching_2/CMakeLists.txt b/GraphicsView/demo/Spatial_searching_2/CMakeLists.txt index 92c07195c75..b3aaa8bd452 100644 --- a/GraphicsView/demo/Spatial_searching_2/CMakeLists.txt +++ b/GraphicsView/demo/Spatial_searching_2/CMakeLists.txt @@ -11,16 +11,14 @@ endif() find_package(CGAL COMPONENTS Qt5) -include(${CGAL_USE_FILE}) - find_package(Qt5 QUIET COMPONENTS Xml Script OpenGL Svg) -include_directories (BEFORE ../../include) include_directories (BEFORE ../../../Spatial_searching/include) if ( CGAL_FOUND AND CGAL_Qt5_FOUND AND Qt5_FOUND ) add_definitions(-DQT_NO_KEYWORDS) + set(CMAKE_INCLUDE_CURRENT_DIR ON) #-------------------------------- # Demo: Spatial_searching_2 diff --git a/GraphicsView/demo/Stream_lines_2/CMakeLists.txt b/GraphicsView/demo/Stream_lines_2/CMakeLists.txt index e980d9e818e..999e107fbbf 100644 --- a/GraphicsView/demo/Stream_lines_2/CMakeLists.txt +++ b/GraphicsView/demo/Stream_lines_2/CMakeLists.txt @@ -11,17 +11,13 @@ endif() find_package(CGAL COMPONENTS Qt5) -include(${CGAL_USE_FILE}) - find_package(Qt5 QUIET COMPONENTS Xml Script OpenGL Svg) -include_directories (BEFORE ../../include) - if ( CGAL_FOUND AND CGAL_Qt5_FOUND AND Qt5_FOUND ) add_definitions(-DQT_NO_KEYWORDS) - +set(CMAKE_INCLUDE_CURRENT_DIR ON) #-------------------------------- # UI files (Qt Designer files) diff --git a/GraphicsView/demo/Triangulation_2/CMakeLists.txt b/GraphicsView/demo/Triangulation_2/CMakeLists.txt index ae34a10d4ed..ef641207689 100644 --- a/GraphicsView/demo/Triangulation_2/CMakeLists.txt +++ b/GraphicsView/demo/Triangulation_2/CMakeLists.txt @@ -25,6 +25,7 @@ if ( NOT CGAL_FOUND OR NOT CGAL_Qt5_FOUND OR NOT Qt5_FOUND ) endif() add_definitions(-DQT_NO_KEYWORDS) +set(CMAKE_INCLUDE_CURRENT_DIR ON) #-------------------------------- # The "constrained Delaunay" demo: Constrained_Delaunay_triangulation_2 diff --git a/GraphicsView/doc/GraphicsView/PackageDescription.txt b/GraphicsView/doc/GraphicsView/PackageDescription.txt index 01513917180..0e6d19ed6a8 100644 --- a/GraphicsView/doc/GraphicsView/PackageDescription.txt +++ b/GraphicsView/doc/GraphicsView/PackageDescription.txt @@ -1,20 +1,20 @@ -/// \defgroup PkgGraphicsView CGAL and the Qt Graphics View Framework Reference +/// \defgroup PkgGraphicsViewRef CGAL and the Qt Graphics View Framework Reference /// \defgroup PkgGraphicsViewGraphicsItemClasses Graphics Item Classes -/// \ingroup PkgGraphicsView +/// \ingroup PkgGraphicsViewRef /// \defgroup PkgGraphicsViewInputClasses Input Classes -/// \ingroup PkgGraphicsView +/// \ingroup PkgGraphicsViewRef /// \defgroup PkgGraphicsViewMiscClasses Miscellaneous Classes -/// \ingroup PkgGraphicsView +/// \ingroup PkgGraphicsViewRef /*! -\addtogroup PkgGraphicsView +\addtogroup PkgGraphicsViewRef -\cgalPkgDescriptionBegin{CGAL and the Qt Graphics View Framework,PkgGraphicsViewSummary} +\cgalPkgDescriptionBegin{CGAL and the Qt Graphics View Framework,PkgGraphicsView} \cgalPkgPicture{detail.png} \cgalPkgSummaryBegin \cgalPkgAuthors{Andreas Fabri and Laurent Rineau} \cgalPkgDesc{This package provides classes for displaying \cgal objects and data structures in the Qt 5 Graphics View Framework.} -\cgalPkgManuals{Chapter_CGAL_and_the_Qt_Graphics_View_Framework,PkgGraphicsView} +\cgalPkgManuals{Chapter_CGAL_and_the_Qt_Graphics_View_Framework,PkgGraphicsViewRef} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{3.4} diff --git a/GraphicsView/include/CGAL/Buffer_for_vao.h b/GraphicsView/include/CGAL/Buffer_for_vao.h index b8ca1f752bb..b7658d45021 100644 --- a/GraphicsView/include/CGAL/Buffer_for_vao.h +++ b/GraphicsView/include/CGAL/Buffer_for_vao.h @@ -426,8 +426,25 @@ public: const Local_point& S=facet[id]; const Local_point& T=facet[(id+1==facet.size())?0:id+1]; Local_vector V1=Local_vector((T-S).x(), (T-S).y(), (T-S).z()); - + if(std::isnan(S.x()) || + std::isnan(S.y()) || + std::isnan(S.z())) + { + return false; + } + if(std::isnan(T.x()) || + std::isnan(T.y()) || + std::isnan(T.z())) + { + return false; + } const Local_point& U=facet[(id+2==facet.size())?0:id+2]; + if(std::isnan(U.x()) || + std::isnan(U.y()) || + std::isnan(U.z())) + { + return false; + } Local_vector V2=Local_vector((U-T).x(), (U-T).y(), (U-T).z()); orientation = Local_kernel::Orientation_3()(V1, V2, normal); diff --git a/GraphicsView/include/CGAL/Qt/Basic_viewer_qt.h b/GraphicsView/include/CGAL/Qt/Basic_viewer_qt.h index 18f76232f41..de17e0d32f5 100644 --- a/GraphicsView/include/CGAL/Qt/Basic_viewer_qt.h +++ b/GraphicsView/include/CGAL/Qt/Basic_viewer_qt.h @@ -144,11 +144,11 @@ inline CGAL::Color get_random_color(CGAL::Random& random) //------------------------------------------------------------------------------ class Basic_viewer_qt : public CGAL::QGLViewer { +public: typedef CGAL::Exact_predicates_inexact_constructions_kernel Local_kernel; typedef Local_kernel::Point_3 Local_point; typedef Local_kernel::Vector_3 Local_vector; -public: // Constructor/Destructor Basic_viewer_qt(QWidget* parent, const char* title="", diff --git a/GraphicsView/include/CGAL/Qt/qglviewer_impl.h b/GraphicsView/include/CGAL/Qt/qglviewer_impl.h index 972896a063a..960bd473d2d 100644 --- a/GraphicsView/include/CGAL/Qt/qglviewer_impl.h +++ b/GraphicsView/include/CGAL/Qt/qglviewer_impl.h @@ -3199,9 +3199,11 @@ void CGAL::QGLViewer::drawVisualHints() { glScissor (GLint((camera()->projectedCoordinatesOf(camera()->pivotPoint()).x-size/2)*devicePixelRatio()), GLint((height() - camera()->projectedCoordinatesOf(camera()->pivotPoint()).y-size/2)*devicePixelRatio()), size, size); rendering_program.setUniformValue("color", QColor(::Qt::black)); + glDisable(GL_DEPTH_TEST); glDrawArrays(GL_LINES, 0, static_cast(4)); rendering_program.setUniformValue("color", QColor(::Qt::white)); glDrawArrays(GL_LINES, 0, static_cast(4)); + glEnable(GL_DEPTH_TEST); // The viewport and the scissor are restored. glScissor(scissor[0],scissor[1],scissor[2],scissor[3]); glViewport(viewport[0],viewport[1],viewport[2],viewport[3]); diff --git a/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_const_decorator.h b/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_const_decorator.h index 872112801dc..3f4ba1cab28 100644 --- a/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_const_decorator.h +++ b/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_const_decorator.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgHDS_Decorators +\ingroup PkgHalfedgeDS_Decorators The class `CGAL::HalfedgeDS_items_decorator` provides additional functions diff --git a/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_decorator.h b/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_decorator.h index 746362713ac..03fead17851 100644 --- a/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_decorator.h +++ b/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_decorator.h @@ -1,6 +1,6 @@ namespace CGAL { /*! -\ingroup PkgHDS_Decorators +\ingroup PkgHalfedgeDS_Decorators The class `CGAL::HalfedgeDS_items_decorator` provides additional functions diff --git a/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_default.h b/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_default.h index bbd41329b33..6ab2a83d527 100644 --- a/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_default.h +++ b/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_default.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgHDS_HDS +\ingroup PkgHalfedgeDS_HDS The class `HalfedgeDS_default` is a model for the `HalfedgeDS` concept. The second template parameter `HalfedgeDSItems` has a default argument diff --git a/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_face_base.h b/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_face_base.h index 4f6e98e924a..37ca8daed46 100644 --- a/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_face_base.h +++ b/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_face_base.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgHDS_VHF +\ingroup PkgHalfedgeDS_VHF The class `HalfedgeDS_face_base` is a model of the `HalfedgeDSFace` concept. `Refs` is an instantiation of a `HalfedgeDS`. The diff --git a/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_face_min_base.h b/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_face_min_base.h index 56ced2fd44e..ad6692b85b8 100644 --- a/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_face_min_base.h +++ b/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_face_min_base.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgHDS_VHF +\ingroup PkgHalfedgeDS_VHF The class `HalfedgeDS_face_min_base` is a model of the `HalfedgeDSFace` concept. `Refs` is an instantiation of a `HalfedgeDS`. It is diff --git a/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_halfedge_base.h b/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_halfedge_base.h index 45c9e165444..4fee656edb6 100644 --- a/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_halfedge_base.h +++ b/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_halfedge_base.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgHDS_VHF +\ingroup PkgHalfedgeDS_VHF The class `HalfedgeDS_halfedge_base` is a model of the `HalfedgeDSHalfedge` concept. `Refs` is an instantiation of a `HalfedgeDS`. diff --git a/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_halfedge_min_base.h b/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_halfedge_min_base.h index 661409637db..b12a7dc7869 100644 --- a/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_halfedge_min_base.h +++ b/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_halfedge_min_base.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgHDS_VHF +\ingroup PkgHalfedgeDS_VHF The class `HalfedgeDS_halfedge_min_base` is a model of the `HalfedgeDSHalfedge` concept. `Refs` is an instantiation of a `HalfedgeDS`. diff --git a/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_items_2.h b/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_items_2.h index 74762abd8ee..d65e338e313 100644 --- a/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_items_2.h +++ b/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_items_2.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgHDS_Items +\ingroup PkgHalfedgeDS_Items The class `HalfedgeDS_items_2` is a model of the `HalfedgeDSItems` concept. It uses the default types for vertices, halfedges, and faces that diff --git a/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_items_decorator.h b/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_items_decorator.h index 7ad28c20c2a..a7c1c8452f2 100644 --- a/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_items_decorator.h +++ b/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_items_decorator.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgHDS_Decorators +\ingroup PkgHalfedgeDS_Decorators The class `CGAL::HalfedgeDS_items_decorator` provides additional functions diff --git a/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_list.h b/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_list.h index 7199bce9c1a..81d5ee9884b 100644 --- a/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_list.h +++ b/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_list.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgHDS_HDS +\ingroup PkgHalfedgeDS_HDS The class `HalfedgeDS_list` is a model for the `HalfedgeDS` concept. `HalfedgeDS_list` is a list-based representation with bidirectional diff --git a/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_min_items.h b/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_min_items.h index 7036bb036b4..e77630c9bb3 100644 --- a/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_min_items.h +++ b/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_min_items.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgHDS_Items +\ingroup PkgHalfedgeDS_Items The class `HalfedgeDS_min_items` is a model of the `HalfedgeDSItems` concept. It defines types for vertices, halfedges, and faces that diff --git a/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_vector.h b/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_vector.h index 4eb89512958..88c32a00b1d 100644 --- a/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_vector.h +++ b/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_vector.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgHDS_HDS +\ingroup PkgHalfedgeDS_HDS The class `HalfedgeDS_vector` is a model for the `HalfedgeDS` concept. `HalfedgeDS_vector` is a vector-based representation with random diff --git a/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_vertex_base.h b/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_vertex_base.h index e76ea3dd61e..bbc6345e128 100644 --- a/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_vertex_base.h +++ b/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_vertex_base.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgHDS_VHF +\ingroup PkgHalfedgeDS_VHF The class `HalfedgeDS_vertex_base` is a model of the `HalfedgeDSVertex` concept. `Refs` is an instantiation of a `HalfedgeDS`. The diff --git a/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_vertex_min_base.h b/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_vertex_min_base.h index 28756ef9d02..550b4c0aaa6 100644 --- a/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_vertex_min_base.h +++ b/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_vertex_min_base.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgHDS_VHF +\ingroup PkgHalfedgeDS_VHF The class `HalfedgeDS_vertex_min_base` is a model of the `HalfedgeDSVertex` concept. `Refs` is an instantiation of a `HalfedgeDS`. It is diff --git a/HalfedgeDS/doc/HalfedgeDS/Concepts/HalfedgeDS.h b/HalfedgeDS/doc/HalfedgeDS/Concepts/HalfedgeDS.h index 5e3c5d9c27d..b8bbf25099c 100644 --- a/HalfedgeDS/doc/HalfedgeDS/Concepts/HalfedgeDS.h +++ b/HalfedgeDS/doc/HalfedgeDS/Concepts/HalfedgeDS.h @@ -1,5 +1,5 @@ /*! -\ingroup PkgHDSConcepts +\ingroup PkgHalfedgeDSConcepts \cgalConcept The concept of a halfedge data structure (abbreviated as `HalfedgeDS`, or diff --git a/HalfedgeDS/doc/HalfedgeDS/Concepts/HalfedgeDSFace.h b/HalfedgeDS/doc/HalfedgeDS/Concepts/HalfedgeDSFace.h index e025a3a8f87..e98a08bc57e 100644 --- a/HalfedgeDS/doc/HalfedgeDS/Concepts/HalfedgeDSFace.h +++ b/HalfedgeDS/doc/HalfedgeDS/Concepts/HalfedgeDSFace.h @@ -1,5 +1,5 @@ /*! -\ingroup PkgHDSConcepts +\ingroup PkgHalfedgeDSConcepts \cgalConcept The concept `HalfedgeDSFace` defines the requirements for the local `Face` diff --git a/HalfedgeDS/doc/HalfedgeDS/Concepts/HalfedgeDSHalfedge.h b/HalfedgeDS/doc/HalfedgeDS/Concepts/HalfedgeDSHalfedge.h index 108ba5d5b46..ac634b0bad6 100644 --- a/HalfedgeDS/doc/HalfedgeDS/Concepts/HalfedgeDSHalfedge.h +++ b/HalfedgeDS/doc/HalfedgeDS/Concepts/HalfedgeDSHalfedge.h @@ -1,5 +1,5 @@ /*! -\ingroup PkgHDSConcepts +\ingroup PkgHalfedgeDSConcepts \cgalConcept The concept `HalfedgeDSHalfedge` defines the requirements for the local `Halfedge` diff --git a/HalfedgeDS/doc/HalfedgeDS/Concepts/HalfedgeDSItems.h b/HalfedgeDS/doc/HalfedgeDS/Concepts/HalfedgeDSItems.h index 47b33ced659..085875ee624 100644 --- a/HalfedgeDS/doc/HalfedgeDS/Concepts/HalfedgeDSItems.h +++ b/HalfedgeDS/doc/HalfedgeDS/Concepts/HalfedgeDSItems.h @@ -1,5 +1,5 @@ /*! -\ingroup PkgHDSConcepts +\ingroup PkgHalfedgeDSConcepts \cgalConcept The concept `HalfedgeDSItems` wraps the three item types - vertex, diff --git a/HalfedgeDS/doc/HalfedgeDS/Concepts/HalfedgeDSVertex.h b/HalfedgeDS/doc/HalfedgeDS/Concepts/HalfedgeDSVertex.h index 008297822a5..a8e41712676 100644 --- a/HalfedgeDS/doc/HalfedgeDS/Concepts/HalfedgeDSVertex.h +++ b/HalfedgeDS/doc/HalfedgeDS/Concepts/HalfedgeDSVertex.h @@ -1,5 +1,5 @@ /*! -\ingroup PkgHDSConcepts +\ingroup PkgHalfedgeDSConcepts \cgalConcept The concept `HalfedgeDSVertex` defines the requirements for the local `Vertex` diff --git a/HalfedgeDS/doc/HalfedgeDS/PackageDescription.txt b/HalfedgeDS/doc/HalfedgeDS/PackageDescription.txt index bca353bfb67..5202070123e 100644 --- a/HalfedgeDS/doc/HalfedgeDS/PackageDescription.txt +++ b/HalfedgeDS/doc/HalfedgeDS/PackageDescription.txt @@ -1,31 +1,31 @@ -/// \defgroup PkgHDS Halfedge Data Structures Reference -/// \defgroup PkgHDSConcepts Concepts -/// \ingroup PkgHDS +/// \defgroup PkgHalfedgeDSRef Halfedge Data Structures Reference +/// \defgroup PkgHalfedgeDSConcepts Concepts +/// \ingroup PkgHalfedgeDSRef -/// \defgroup PkgHDS_HDS Halfedge Data Structures -/// \ingroup PkgHDS +/// \defgroup PkgHalfedgeDS_HDS Halfedge Data Structures +/// \ingroup PkgHalfedgeDSRef -/// \defgroup PkgHDS_Items Item Classes -/// \ingroup PkgHDS +/// \defgroup PkgHalfedgeDS_Items Item Classes +/// \ingroup PkgHalfedgeDSRef -/// \defgroup PkgHDS_VHF Vertices, Halfedges, Faces -/// \ingroup PkgHDS +/// \defgroup PkgHalfedgeDS_VHF Vertices, Halfedges, Faces +/// \ingroup PkgHalfedgeDSRef -/// \defgroup PkgHDS_Decorators Decorators -/// \ingroup PkgHDS +/// \defgroup PkgHalfedgeDS_Decorators Decorators +/// \ingroup PkgHalfedgeDSRef /// Classes that provide additional functions /// to examine and to modify a halfedge data structure. /*! -\addtogroup PkgHDS +\addtogroup PkgHalfedgeDSRef \todo check generated documentation -\cgalPkgDescriptionBegin{Halfedge Data Structures,PkgHDSSummary} +\cgalPkgDescriptionBegin{Halfedge Data Structures,PkgHalfedgeDS} \cgalPkgPicture{HalfedgeDS/fig/HalfedgeDS-teaser-small.png} \cgalPkgSummaryBegin \cgalPkgAuthor{Lutz Kettner} \cgalPkgDesc{A halfedge data structure is an edge-centered data structure capable of maintaining incidence information of vertices, edges and faces, for example for planar maps, polyhedra, or other orientable, two-dimensional surfaces embedded in arbitrary dimension. Each edge is decomposed into two halfedges with opposite orientations. One incident face and one incident vertex are stored in each halfedge. For each face and each vertex, one incident halfedge is stored. Reduced variants of the halfedge data structure can omit some of these information, for example the halfedge pointers in faces or the storage of faces at all.} -\cgalPkgManuals{Chapter_Halfedge_Data_Structures,PkgHDS} +\cgalPkgManuals{Chapter_Halfedge_Data_Structures,PkgHalfedgeDSRef} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{1.0} diff --git a/HalfedgeDS/examples/HalfedgeDS/CMakeLists.txt b/HalfedgeDS/examples/HalfedgeDS/CMakeLists.txt index 8c257523353..447e7b6ba16 100644 --- a/HalfedgeDS/examples/HalfedgeDS/CMakeLists.txt +++ b/HalfedgeDS/examples/HalfedgeDS/CMakeLists.txt @@ -4,18 +4,12 @@ project( HalfedgeDS_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/HalfedgeDS/include/CGAL/boost/graph/graph_traits_HalfedgeDS_default.h b/HalfedgeDS/include/CGAL/boost/graph/graph_traits_HalfedgeDS_default.h index 6b3898880b1..aaddbbe254a 100644 --- a/HalfedgeDS/include/CGAL/boost/graph/graph_traits_HalfedgeDS_default.h +++ b/HalfedgeDS/include/CGAL/boost/graph/graph_traits_HalfedgeDS_default.h @@ -25,6 +25,7 @@ #include #include #include +#include namespace CGAL { @@ -446,21 +447,6 @@ num_faces(const HalfedgeDS_default& p) { return p.size_of_faces(); } -namespace internal { - -template -struct HDS_Point_accessor - : boost::put_get_helper< Reference, HDS_Point_accessor > -{ - typedef boost::lvalue_property_map_tag category; - typedef Reference reference; - typedef ValueType value_type; - typedef Handle key_type; - - reference operator[](Handle h) const { return h->point(); } -}; - -} // namespace internal template struct HDS_property_map; @@ -471,13 +457,13 @@ struct HDS_property_map template struct bind_ { - typedef internal::HDS_Point_accessor< + typedef internal::Point_accessor< typename boost::graph_traits< HalfedgeDS_default >::vertex_descriptor, typename T::Point_3, typename T::Point_3&> type; - typedef internal::HDS_Point_accessor< + typedef internal::Point_accessor< typename boost::graph_traits< HalfedgeDS_default >::vertex_descriptor, diff --git a/HalfedgeDS/test/HalfedgeDS/CMakeLists.txt b/HalfedgeDS/test/HalfedgeDS/CMakeLists.txt index 12d17a2e56c..f5f9cd20dc2 100644 --- a/HalfedgeDS/test/HalfedgeDS/CMakeLists.txt +++ b/HalfedgeDS/test/HalfedgeDS/CMakeLists.txt @@ -4,18 +4,12 @@ project( HalfedgeDS_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Hash_map/benchmark/Hash_map/CMakeLists.txt b/Hash_map/benchmark/Hash_map/CMakeLists.txt index 0943567d71a..69c35aa6cf8 100644 --- a/Hash_map/benchmark/Hash_map/CMakeLists.txt +++ b/Hash_map/benchmark/Hash_map/CMakeLists.txt @@ -4,7 +4,7 @@ project( Hash_map ) -cmake_minimum_required(VERSION 2.6.2) +cmake_minimum_required(VERSION 3.1) if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" VERSION_GREATER 2.6) if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}" VERSION_GREATER 2.8.3) cmake_policy(VERSION 2.8.4) @@ -24,10 +24,6 @@ if ( NOT CGAL_FOUND ) endif() -# include helper file -include( ${CGAL_USE_FILE} ) - - # Boost and its components find_package( Boost REQUIRED ) @@ -42,14 +38,10 @@ endif() # include for local directory # include for local package -include_directories( BEFORE ../../include ) - # Creating entries for all .cpp/.C files with "main" routine # ########################################################## -include( CGAL_CreateSingleSourceCGALProgram ) - create_single_source_cgal_program( "hm.cpp" ) create_single_source_cgal_program( "foreach.cpp" ) create_single_source_cgal_program( "triangulation.cpp" ) diff --git a/Hash_map/test/Hash_map/CMakeLists.txt b/Hash_map/test/Hash_map/CMakeLists.txt index 13977a93c71..dc3c46af912 100644 --- a/Hash_map/test/Hash_map/CMakeLists.txt +++ b/Hash_map/test/Hash_map/CMakeLists.txt @@ -4,19 +4,13 @@ project( Hash_map_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - - include_directories (BEFORE "include") + include_directories (BEFORE "include") # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) diff --git a/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH2.h b/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH2.h index c14000e1b02..b3f054d611a 100644 --- a/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH2.h +++ b/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH2.h @@ -605,6 +605,21 @@ public: Aff_transformationH2 operator*(const Aff_transformationH2& right_argument ) const; + + + bool operator==(const Aff_transformationH2 &t)const + { + for(int i=0; i<3; ++i) + for(int j = 0; j< 3; ++j) + if(homogeneous(i,j)!=t.homogeneous(i,j)) + return false; + return true; + } + + bool operator!=(const Aff_transformationH2 &t)const + { + return !(*this == t); + } }; diff --git a/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h b/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h index 11f699ded22..5dccc6ec83b 100644 --- a/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h +++ b/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h @@ -364,6 +364,20 @@ public: RT hm(int i, int j) const { return this->Ptr()->homogeneous(i,j); } + + bool operator==(const Aff_transformationH3 &t)const + { + for(int i=0; i<3; ++i) + for(int j = 0; j< 4; ++j) + if(homogeneous(i,j)!=t.homogeneous(i,j)) + return false; + return true; + } + + bool operator!=(const Aff_transformationH3 &t)const + { + return !(*this == t); + } }; template < class R > diff --git a/Inscribed_areas/doc/Inscribed_areas/CGAL/Extremal_polygon_traits_2.h b/Inscribed_areas/doc/Inscribed_areas/CGAL/Extremal_polygon_traits_2.h index 4cbe9351891..106392639d5 100644 --- a/Inscribed_areas/doc/Inscribed_areas/CGAL/Extremal_polygon_traits_2.h +++ b/Inscribed_areas/doc/Inscribed_areas/CGAL/Extremal_polygon_traits_2.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgInscribedAreas +\ingroup PkgInscribedAreasRef \cgalAdvancedClass \cgalAdvancedBegin @@ -105,7 +105,7 @@ Orientation_2 orientation_2_object(); }; /* end Extremal_polygon_area_traits_2 */ /*! -\ingroup PkgInscribedAreas +\ingroup PkgInscribedAreasRef \cgalAdvancedClass \cgalAdvancedBegin diff --git a/Inscribed_areas/doc/Inscribed_areas/CGAL/Largest_empty_iso_rectangle_2.h b/Inscribed_areas/doc/Inscribed_areas/CGAL/Largest_empty_iso_rectangle_2.h index 716236ecf76..f464fb1fdee 100644 --- a/Inscribed_areas/doc/Inscribed_areas/CGAL/Largest_empty_iso_rectangle_2.h +++ b/Inscribed_areas/doc/Inscribed_areas/CGAL/Largest_empty_iso_rectangle_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgInscribedAreas +\ingroup PkgInscribedAreasRef Given a set of points in the plane, the class `Largest_empty_iso_rectangle_2` is a data structure that maintains an iso-rectangle with the largest area among diff --git a/Inscribed_areas/doc/Inscribed_areas/CGAL/extremal_polygon_2.h b/Inscribed_areas/doc/Inscribed_areas/CGAL/extremal_polygon_2.h index ebc2093435c..08c4b2a7031 100644 --- a/Inscribed_areas/doc/Inscribed_areas/CGAL/extremal_polygon_2.h +++ b/Inscribed_areas/doc/Inscribed_areas/CGAL/extremal_polygon_2.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgInscribedAreas +\ingroup PkgInscribedAreasRef computes a maximal (as specified by `t`) inscribed `k`-gon of the convex polygon described by [`points_begin`, @@ -49,7 +49,7 @@ const Traits& t); /*! -\ingroup PkgInscribedAreas +\ingroup PkgInscribedAreasRef \brief computes a maximum area inscribed `k`-gon of the convex polygon @@ -116,7 +116,7 @@ OutputIterator o); namespace CGAL { /*! -\ingroup PkgInscribedAreas +\ingroup PkgInscribedAreasRef \brief computes a maximum perimeter inscribed `k`-gon of the convex polygon described by `[points_begin, points_end)`, writes its diff --git a/Inscribed_areas/doc/Inscribed_areas/PackageDescription.txt b/Inscribed_areas/doc/Inscribed_areas/PackageDescription.txt index 929cb77847e..9270c38d3bb 100644 --- a/Inscribed_areas/doc/Inscribed_areas/PackageDescription.txt +++ b/Inscribed_areas/doc/Inscribed_areas/PackageDescription.txt @@ -1,17 +1,17 @@ -/// \defgroup PkgInscribedAreas Inscribed Areas Reference +/// \defgroup PkgInscribedAreasRef Inscribed Areas Reference /// \defgroup PkgInscribedAreasConcepts Concepts -/// \ingroup PkgInscribedAreas +/// \ingroup PkgInscribedAreasRef /*! -\addtogroup PkgInscribedAreas +\addtogroup PkgInscribedAreasRef \todo check generated documentation -\cgalPkgDescriptionBegin{Inscribed Areas,PkgInscribedAreasSummary} +\cgalPkgDescriptionBegin{Inscribed Areas,PkgInscribedAreas} \cgalPkgPicture{ler-detail.png} \cgalPkgSummaryBegin \cgalPkgAuthors{Michael Hoffmann and Eli Packer} \cgalPkgDesc{This package provides algorithms for computing inscribed areas. The algorithms for computing inscribed areas are: the largest inscribed k-gon (area or perimeter) of a convex point set and the largest inscribed iso-rectangle.} -\cgalPkgManuals{Chapter_Inscribed_Areas,PkgInscribedAreas} +\cgalPkgManuals{Chapter_Inscribed_Areas,PkgInscribedAreasRef} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{1.1} diff --git a/Inscribed_areas/examples/Inscribed_areas/CMakeLists.txt b/Inscribed_areas/examples/Inscribed_areas/CMakeLists.txt index e41f02d97e4..3d5706c5c0d 100644 --- a/Inscribed_areas/examples/Inscribed_areas/CMakeLists.txt +++ b/Inscribed_areas/examples/Inscribed_areas/CMakeLists.txt @@ -4,18 +4,12 @@ project( Inscribed_areas_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Inscribed_areas/test/Inscribed_areas/CMakeLists.txt b/Inscribed_areas/test/Inscribed_areas/CMakeLists.txt index 8e1dc364365..bbf3e5e4984 100644 --- a/Inscribed_areas/test/Inscribed_areas/CMakeLists.txt +++ b/Inscribed_areas/test/Inscribed_areas/CMakeLists.txt @@ -4,18 +4,12 @@ project( Inscribed_areas_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Installation/CHANGES.md b/Installation/CHANGES.md index 85e87b22d17..444b6b73fe0 100644 --- a/Installation/CHANGES.md +++ b/Installation/CHANGES.md @@ -7,7 +7,17 @@ Release 4.14 Release date: March 2019 ### Polygon Mesh Processing package -- Added the following new functions to detect and repair mesh degeneracies: +- Added the following new functions to detect and repair issues in polygon soups: + - `CGAL::Polygon_mesh_processing::remove_isolated_points_in_polygon_soup()`, which detects and removes + points that are not used in any polygon of the soup. + - `CGAL::Polygon_mesh_processing::merge_duplicate_points_in_polygon_soup()`, + which detects and merges points that share the same geometric position. + - `CGAL::Polygon_mesh_processing::merge_duplicate_polygons_in_polygon_soup()`, + which detects and merges polygons that are identical. + - `CGAL::Polygon_mesh_processing::repair_polygon_soup()`, + which applies a number of repairing steps (a subset of which are the functions above) + to clean and repair a polygon soup. +- Added the following new functions to detect and repair degeneracies in polygon meshes: - `CGAL::Polygon_mesh_processing::degenerate_edges()` - `CGAL::Polygon_mesh_processing::degenerate_faces()` - `CGAL::Polygon_mesh_processing::is_non_manifold_vertex()` @@ -19,6 +29,30 @@ Release date: March 2019 - `CGAL::Polygon_mesh_processing::extract_boundary_cycles()` - `CGAL::Polygon_mesh_processing::merge_duplicated_vertices_in_boundary_cycle()` - `CGAL::Polygon_mesh_processing::merge_duplicated_vertices_in_boundary_cycles()` +- Added the class `CGAL::Rigid_triangle_mesh_collision_detection` to detect intersections between meshes + and volumes undergoing affine transformations. + +### 3D Fast Intersection and Distance Computation + +- The primitives `AABB_face_graph_triangle_primitive` and + `AABB_halfedge_graph_segment_primitive` now use as `Id` a pair of descriptor and + graph pointer in the case they are configured to deal with a possible different + graph per primitive (configuration set using a template tag). + +### 2D Arrangements + +- Fixed a bug in the surface-sweep framework (`Surface_sweep_2`) that ensures + that an event is never left without (left or right) curves. + +- Fixed a constructor of `Arr_counting_traits.h`. (In particular, added missing + const of a parameter). + +- Fixed zone computation of a curve in cases where the lexicographic smallest + end of the curve lies on the parameter space. + +- Implemented missing function object `Compare_x_near_boundary` of + `Arr_polyline_traits_2`, `Arr_polycurve_traits_2`, and + `Arr_polycurve_basic_traits_2`. ### 2D and 3D Mesh Generation - Added 2 functions for writing in modern VTK formats: diff --git a/Installation/cmake/modules/CGALConfig_binary.cmake.in b/Installation/cmake/modules/CGALConfig_binary.cmake.in index de25926bf51..6b443bcf52d 100644 --- a/Installation/cmake/modules/CGALConfig_binary.cmake.in +++ b/Installation/cmake/modules/CGALConfig_binary.cmake.in @@ -179,6 +179,7 @@ set(CGAL_DISABLE_GMP "@CGAL_DISABLE_GMP@") include(${CGAL_MODULES_DIR}/CGAL_CreateSingleSourceCGALProgram.cmake) include(${CGAL_MODULES_DIR}/CGAL_Macros.cmake) +include(${CGAL_MODULES_DIR}/CGAL_Common.cmake) # Temporary? Change the CMAKE module path cgal_setup_module_path() diff --git a/Installation/cmake/modules/CGALConfig_install.cmake.in b/Installation/cmake/modules/CGALConfig_install.cmake.in index 59fc4927bdb..e978b14d93d 100644 --- a/Installation/cmake/modules/CGALConfig_install.cmake.in +++ b/Installation/cmake/modules/CGALConfig_install.cmake.in @@ -154,6 +154,7 @@ set(CGAL_DISABLE_GMP "@CGAL_DISABLE_GMP@") include(${CGAL_MODULES_DIR}/CGAL_CreateSingleSourceCGALProgram.cmake) include(${CGAL_MODULES_DIR}/CGAL_Macros.cmake) +include(${CGAL_MODULES_DIR}/CGAL_Common.cmake) # Temporary? Change the CMAKE module path cgal_setup_module_path() diff --git a/Installation/cmake/modules/CGAL_TweakFindBoost.cmake b/Installation/cmake/modules/CGAL_TweakFindBoost.cmake index 457f84f342d..408f7906e74 100644 --- a/Installation/cmake/modules/CGAL_TweakFindBoost.cmake +++ b/Installation/cmake/modules/CGAL_TweakFindBoost.cmake @@ -26,7 +26,7 @@ if( NOT CGAL_TweakFindBoost ) if(POLICY CMP0077) - cmake_policy(SET CMP0077 OLD) + cmake_policy(SET CMP0077 NEW) endif() if(DEFINED CGAL_Boost_USE_STATIC_LIBS) # If the option is loaded from CGALConfig.h, use its value as default diff --git a/Installation/demo/CMakeLists.txt b/Installation/demo/CMakeLists.txt index 52e6c454de8..bc7742627a1 100644 --- a/Installation/demo/CMakeLists.txt +++ b/Installation/demo/CMakeLists.txt @@ -1,6 +1,6 @@ project(CGAL_DEMOS) -cmake_minimum_required(VERSION 2.8.11) +cmake_minimum_required(VERSION 3.1) if (CGAL_BRANCH_BUILD) diff --git a/Installation/examples/CMakeLists.txt b/Installation/examples/CMakeLists.txt index dff3deb7300..643083964e5 100644 --- a/Installation/examples/CMakeLists.txt +++ b/Installation/examples/CMakeLists.txt @@ -1,6 +1,6 @@ project(CGAL_EXAMPLES) -cmake_minimum_required(VERSION 2.8.11) +cmake_minimum_required(VERSION 3.1) if (CGAL_BRANCH_BUILD) diff --git a/Installation/include/CGAL/license/GraphicsView.h b/Installation/include/CGAL/license/GraphicsView.h index 270df8f74ad..beeac0d78bc 100644 --- a/Installation/include/CGAL/license/GraphicsView.h +++ b/Installation/include/CGAL/license/GraphicsView.h @@ -14,7 +14,7 @@ // // $URL$ // $Id$ -// SPDX-License-Identifier: GPL-3.0+ +// SPDX-License-Identifier: LGPL-3.0+ // // Author(s) : Andreas Fabri // diff --git a/Installation/include/CGAL/license/Polygon_mesh_processing/collision_detection.h b/Installation/include/CGAL/license/Polygon_mesh_processing/collision_detection.h new file mode 100644 index 00000000000..db5f1b29126 --- /dev/null +++ b/Installation/include/CGAL/license/Polygon_mesh_processing/collision_detection.h @@ -0,0 +1,67 @@ +// Copyright (c) 2016 GeometryFactory SARL (France). +// All rights reserved. +// +// This file is part of CGAL (www.cgal.org); you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public License as +// published by the Free Software Foundation; either version 3 of the License, +// or (at your option) any later version. +// +// Licensees holding a valid commercial license may use this file in +// accordance with the commercial license agreement provided with the software. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +// +// $URL$ +// $Id$ +// SPDX-License-Identifier: LGPL-3.0+ +// +// Author(s) : Andreas Fabri +// +// Warning: this file is generated, see include/CGAL/licence/README.md + + +#ifndef CGAL_LICENSE_POLYGON_MESH_PROCESSING_COLLISION_DETECTION_H +#define CGAL_LICENSE_POLYGON_MESH_PROCESSING_COLLISION_DETECTION_H + +#include +#include + + + + +#ifdef CGAL_POLYGON_MESH_PROCESSING_COLLISION_DETECTION_COMMERCIAL_LICENSE + +# if CGAL_POLYGON_MESH_PROCESSING_COLLISION_DETECTION_COMMERCIAL_LICENSE < CGAL_RELEASE_DATE + +# if defined(CGAL_LICENSE_WARNING) + + CGAL_pragma_warning("Your commercial license for CGAL does not cover " + "this release of the Polygon Mesh Processing - Collision Detection package.") +# endif + +# ifdef CGAL_LICENSE_ERROR +# error "Your commercial license for CGAL does not cover this release \ +of the Polygon Mesh Processing - Collision Detection package. \ +You get this error, as you defined CGAL_LICENSE_ERROR." +# endif // CGAL_LICENSE_ERROR + +# endif // CGAL_POLYGON_MESH_PROCESSING_COLLISION_DETECTION_COMMERCIAL_LICENSE < CGAL_RELEASE_DATE + +#else // no CGAL_POLYGON_MESH_PROCESSING_COLLISION_DETECTION_COMMERCIAL_LICENSE + +# if defined(CGAL_LICENSE_WARNING) + CGAL_pragma_warning("\nThe macro CGAL_POLYGON_MESH_PROCESSING_COLLISION_DETECTION_COMMERCIAL_LICENSE is not defined." + "\nYou use the CGAL Polygon Mesh Processing - Collision Detection package under " + "the terms of the GPLv3+.") +# endif // CGAL_LICENSE_WARNING + +# ifdef CGAL_LICENSE_ERROR +# error "The macro CGAL_POLYGON_MESH_PROCESSING_COLLISION_DETECTION_COMMERCIAL_LICENSE is not defined.\ + You use the CGAL Polygon Mesh Processing - Collision Detection package under the terms of \ +the GPLv3+. You get this error, as you defined CGAL_LICENSE_ERROR." +# endif // CGAL_LICENSE_ERROR + +#endif // no CGAL_POLYGON_MESH_PROCESSING_COLLISION_DETECTION_COMMERCIAL_LICENSE + +#endif // CGAL_LICENSE_CHECK_POLYGON_MESH_PROCESSING_COLLISION_DETECTION_H diff --git a/Installation/include/CGAL/license/README.md b/Installation/include/CGAL/license/README.md index 5b8e4095532..d39cd5f9bfe 100644 --- a/Installation/include/CGAL/license/README.md +++ b/Installation/include/CGAL/license/README.md @@ -1,3 +1,3 @@ -To generate the `PACKAGE.h` files, from the file `package_list.txt`: +To generate the `PACKAGE.h` files, from the file `gpl_package_list.txt`: cmake -P generate_files.cmake diff --git a/Installation/include/CGAL/license/gpl_package_list.txt b/Installation/include/CGAL/license/gpl_package_list.txt index cb330d930ac..a97a73dc0aa 100644 --- a/Installation/include/CGAL/license/gpl_package_list.txt +++ b/Installation/include/CGAL/license/gpl_package_list.txt @@ -54,6 +54,7 @@ Polygon_mesh_processing/predicate Polygon Mesh Processing - Predicate Polygon_mesh_processing/repair Polygon Mesh Processing - Repair Polygon_mesh_processing/miscellaneous Polygon Mesh Processing - Miscellaneous Polygon_mesh_processing/detect_features Polygon Mesh Processing - Feature Detection +Polygon_mesh_processing/collision_detection Polygon Mesh Processing - Collision Detection Polyhedron 3D Polyhedral Surface Polyline_simplification_2 2D Polyline Simplification Polytope_distance_d Optimal Distances diff --git a/Installation/lib/cmake/CGAL/CGALConfig.cmake b/Installation/lib/cmake/CGAL/CGALConfig.cmake index 282062bd88e..486f1ff6746 100644 --- a/Installation/lib/cmake/CGAL/CGALConfig.cmake +++ b/Installation/lib/cmake/CGAL/CGALConfig.cmake @@ -7,34 +7,6 @@ set( CGAL_REQUESTED_COMPONENTS ${CGAL_FIND_COMPONENTS} ) set(CGAL_LIBRARIES CGAL) -if(CGAL_BUILDING_LIBS) - foreach(comp ${CGAL_FIND_COMPONENTS}) - if(CGAL_${comp}_FOUND) - list(APPEND CGAL_LIBRARIES CGAL_${comp}) - endif() - endforeach() - return() -endif() - -foreach(comp ${CGAL_FIND_COMPONENTS}) - if(NOT comp MATCHES "Core|ImageIO|Qt5") - message(FATAL_ERROR "The requested CGAL component ${comp} does not exist!") - endif() - list(APPEND CGAL_LIBRARIES CGAL_${comp}) -endforeach() - -set(CGALConfig_all_targets_are_defined TRUE) -foreach(cgal_lib ${CGAL_LIBRARIES}) - if(NOT WITH_${cgal_lib}) - set(CGALConfig_all_targets_are_defined FALSE) - endif() -endforeach() -if(CGALConfig_all_targets_are_defined) - return() -endif() - -message(STATUS "Using header-only CGAL") - get_filename_component(CGAL_CONFIG_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) set(CGAL_HEADER_ONLY TRUE) @@ -90,6 +62,38 @@ else() endif() endif() +include(${CGAL_MODULES_DIR}/CGAL_CreateSingleSourceCGALProgram.cmake) +include(${CGAL_MODULES_DIR}/CGAL_Macros.cmake) +include(${CGAL_MODULES_DIR}/CGAL_Common.cmake) + +if(CGAL_BUILDING_LIBS) + foreach(comp ${CGAL_FIND_COMPONENTS}) + if(CGAL_${comp}_FOUND) + list(APPEND CGAL_LIBRARIES CGAL_${comp}) + endif() + endforeach() + return() +endif() + +foreach(comp ${CGAL_FIND_COMPONENTS}) + if(NOT comp MATCHES "Core|ImageIO|Qt5") + message(FATAL_ERROR "The requested CGAL component ${comp} does not exist!") + endif() + list(APPEND CGAL_LIBRARIES CGAL_${comp}) +endforeach() + +set(CGALConfig_all_targets_are_defined TRUE) +foreach(cgal_lib ${CGAL_LIBRARIES}) + if(NOT TARGET CGAL::${cgal_lib}) + set(CGALConfig_all_targets_are_defined FALSE) + endif() +endforeach() +if(CGALConfig_all_targets_are_defined) + return() +endif() + +message(STATUS "Using header-only CGAL") + if(NOT CGAL_FOUND) return() endif() @@ -132,9 +136,6 @@ endforeach() # # -include(${CGAL_MODULES_DIR}/CGAL_CreateSingleSourceCGALProgram.cmake) -include(${CGAL_MODULES_DIR}/CGAL_Macros.cmake) - # Temporary? Change the CMAKE module path cgal_setup_module_path() diff --git a/Installation/test/CMakeLists.txt b/Installation/test/CMakeLists.txt index c2ae63e9335..b3d48f783e6 100644 --- a/Installation/test/CMakeLists.txt +++ b/Installation/test/CMakeLists.txt @@ -1,6 +1,6 @@ project(CGAL_TESTS) -cmake_minimum_required(VERSION 2.8.11) +cmake_minimum_required(VERSION 3.1) if (CGAL_BRANCH_BUILD) diff --git a/Installation/test/Installation/CMakeLists.txt b/Installation/test/Installation/CMakeLists.txt index ce85c54f412..6dd0c4b41c3 100644 --- a/Installation/test/Installation/CMakeLists.txt +++ b/Installation/test/Installation/CMakeLists.txt @@ -4,7 +4,7 @@ project( Installation_Tests ) -cmake_minimum_required(VERSION 2.8.11) +cmake_minimum_required(VERSION 3.1) macro(create_link_to_program COMPONENT ) diff --git a/Interpolation/demo/Interpolation/CMakeLists.txt b/Interpolation/demo/Interpolation/CMakeLists.txt index cfa738e0dc5..17bf86f2500 100644 --- a/Interpolation/demo/Interpolation/CMakeLists.txt +++ b/Interpolation/demo/Interpolation/CMakeLists.txt @@ -16,12 +16,6 @@ find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - create_single_source_cgal_program( "interpolation_2_demo.cpp" ) create_single_source_cgal_program( "surface_voronoi.cpp" ) diff --git a/Interpolation/doc/Interpolation/CGAL/interpolation_functions.h b/Interpolation/doc/Interpolation/CGAL/interpolation_functions.h index bee04da3b82..a50d9cbff1a 100644 --- a/Interpolation/doc/Interpolation/CGAL/interpolation_functions.h +++ b/Interpolation/doc/Interpolation/CGAL/interpolation_functions.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgInterpolation2 +\ingroup PkgInterpolation2Ref The struct `Data_access` implements a functor that allows to retrieve data from an associative container. The functor keeps a reference to @@ -72,8 +72,8 @@ types of a triangulation, to a (non-normalized) barycentric coordinate. \tparam ValueFunctor must be a functor where `ValueFunctor::argument_type` must be equivalent to `std::iterator_traits::%value_type::first_type` and `ValueFunctor::result_type` is a pair of the function value type and a Boolean. -The function value type must provide a multiplication and addition operation with the type -`Traits::FT` as well as a constructor with argument `0`. +The function value type `VT` must provide an addition operator, and a multiplication operator with the type +`Traits::FT`. A model of the functor `ValueFunctor` is provided by the struct `CGAL::Data_access` instantiated with an associative container (e.g. `std::map`) and having: @@ -99,6 +99,7 @@ the interpolated function value as the weighted sum of the values corresponding to each entry of the entity/coordinate pairs in the range `[first, beyond)`. \pre `norm` \f$ \neq0\f$. +\pre `first != beyond`. \pre `value_function(p.first).second == true` for all pairs `p` in the range `[first, beyond)`. \sa `CGAL::quadratic_interpolation()` @@ -163,6 +164,7 @@ the function returns a pair where the Boolean is set to `false`. \param traits is an instance of the traits class. \pre `norm` \f$ \neq0\f$. +\pre `first != beyond`. \pre `value_function(p.first).second == true` for pairs `p` in the range `[first, beyond)` \sa `CGAL::linear_interpolation()` @@ -229,6 +231,7 @@ the function returns a pair where the Boolean is set to `false`. \param traits is an instance of the traits class. \pre `norm` \f$ \neq0\f$. +\pre `first != beyond`. \pre `value_function(q).second == true` for all points `q` of the point/coordinate pairs in the range `[first, beyond)` \sa `CGAL::Interpolation_traits_2` diff --git a/Interpolation/doc/Interpolation/Interpolation.txt b/Interpolation/doc/Interpolation/Interpolation.txt index e9e6bde16ec..cc5fb39cacc 100644 --- a/Interpolation/doc/Interpolation/Interpolation.txt +++ b/Interpolation/doc/Interpolation/Interpolation.txt @@ -95,7 +95,7 @@ diagrams, also known as power diagrams, are obtained by considering wei defined between two weighted points \f$ (p, \omega_p) \f$ and \f$ (q, \omega_q) \f$ by \f$ \Pi( (p, \omega_p), (q, \omega_q) ) = pq^2 - \omega_p - \omega_q \f$. See \link Subsection_2D_Triangulations_Regular_Description this section \endlink -of the package \ref PkgTriangulation2Summary for an in-depth description of power diagrams. +of the package \ref PkgTriangulation2 for an in-depth description of power diagrams. \cgalFigureBegin{figrn_coords, rn_coords.svg} Illustration of regular neighbor coordinates. The point set is the same @@ -416,6 +416,12 @@ compatible with the function. \cgalExample{Interpolation/linear_interpolation_2.cpp} +The next example shows the interpolation of non-scalar values, namely `Vector_3`. +It may be any type `T` which provides a multiplication operator with a scalar, and +the addition operator for `T`. + +\cgalExample{Interpolation/linear_interpolation_of_vector_3.cpp} + \subsection InterpolationExampleSibson Example for Sibson's C^1 Interpolation Scheme with Gradient Estimation \cgalExample{Interpolation/sibson_interpolation_2.cpp} diff --git a/Interpolation/doc/Interpolation/PackageDescription.txt b/Interpolation/doc/Interpolation/PackageDescription.txt index 1b13ef5d3b3..6482d84ac87 100644 --- a/Interpolation/doc/Interpolation/PackageDescription.txt +++ b/Interpolation/doc/Interpolation/PackageDescription.txt @@ -1,27 +1,27 @@ -/// \defgroup PkgInterpolation2 2D and Surface Function Interpolation Reference +/// \defgroup PkgInterpolation2Ref 2D and Surface Function Interpolation Reference /// \defgroup PkgInterpolation2Concepts Concepts -/// \ingroup PkgInterpolation2 +/// \ingroup PkgInterpolation2Ref /// \defgroup PkgInterpolation2Interpolation Interpolation Functions -/// \ingroup PkgInterpolation2 +/// \ingroup PkgInterpolation2Ref /// \defgroup PkgInterpolation2NatNeighbor Natural Neighbor Coordinate Computation -/// \ingroup PkgInterpolation2 +/// \ingroup PkgInterpolation2Ref /// \defgroup PkgInterpolation2SurfaceNeighbor Surface Neighbor and Surface Neighbor Coordinate Computation -/// \ingroup PkgInterpolation2 +/// \ingroup PkgInterpolation2Ref /*! -\addtogroup PkgInterpolation2 -\cgalPkgDescriptionBegin{2D and Surface Function Interpolation,PkgInterpolation2Summary} +\addtogroup PkgInterpolation2Ref +\cgalPkgDescriptionBegin{2D and Surface Function Interpolation,PkgInterpolation2} \cgalPkgPicture{interpolation.png} \cgalPkgSummaryBegin \cgalPkgAuthor{Julia Flötotto} \cgalPkgDesc{This package implements different methods for scattered data interpolation: Given measures of a function on a set of discrete data points, the task is to interpolate this function on an arbitrary query point. The package further offers functions for natural neighbor interpolation.} -\cgalPkgManuals{Chapter_2D_and_Surface_Function_Interpolation,PkgInterpolation2} +\cgalPkgManuals{Chapter_2D_and_Surface_Function_Interpolation,PkgInterpolation2Ref} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{3.1} diff --git a/Interpolation/doc/Interpolation/examples.txt b/Interpolation/doc/Interpolation/examples.txt index 377ab8a017d..5fa82c096cd 100644 --- a/Interpolation/doc/Interpolation/examples.txt +++ b/Interpolation/doc/Interpolation/examples.txt @@ -5,6 +5,7 @@ \example Interpolation/rn_coordinates_2.cpp \example Interpolation/surface_neighbor_coordinates_3.cpp \example Interpolation/linear_interpolation_2.cpp +\example Interpolation/linear_interpolation_of_vector_3.cpp \example Interpolation/sibson_interpolation_2.cpp \example Interpolation/sibson_interpolation_vertex_with_info_2.cpp */ diff --git a/Interpolation/examples/Interpolation/CMakeLists.txt b/Interpolation/examples/Interpolation/CMakeLists.txt index c21c16ed93c..d12b05c9cf7 100644 --- a/Interpolation/examples/Interpolation/CMakeLists.txt +++ b/Interpolation/examples/Interpolation/CMakeLists.txt @@ -4,18 +4,12 @@ project( Interpolation_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Interpolation/examples/Interpolation/linear_interpolation_of_vector_3.cpp b/Interpolation/examples/Interpolation/linear_interpolation_of_vector_3.cpp new file mode 100644 index 00000000000..2dbfa4b3bc8 --- /dev/null +++ b/Interpolation/examples/Interpolation/linear_interpolation_of_vector_3.cpp @@ -0,0 +1,43 @@ +#include +#include + +#include +#include +#include + +typedef CGAL::Exact_predicates_inexact_constructions_kernel K; +typedef CGAL::Delaunay_triangulation_2 Delaunay_triangulation; +typedef CGAL::Interpolation_traits_2 Traits; +typedef K::Vector_3 Vector_3; +typedef K::Point_2 Point_2; + +int main() +{ + Delaunay_triangulation T; + + typedef std::map Coord_map; + typedef CGAL::Data_access Value_access; + + Coord_map value_function; + + for (int y=0 ; y<255 ; y++){ + for (int x=0 ; x<255 ; x++){ + K::Point_2 p(x,y); + T.insert(p); + value_function.insert(std::make_pair(p, Vector_3(x,y,1))); + } + } + + //coordinate computation + K::Point_2 p(1.3, 0.34); + std::vector > coords; + + double norm = CGAL::natural_neighbor_coordinates_2(T, p, std::back_inserter(coords)).second; + Vector_3 res = CGAL::linear_interpolation(coords.begin(), coords.end(), norm, + Value_access(value_function)); + + std::cout << "Tested interpolation on " << p << " interpolation: " + << res << std::endl; + + return EXIT_SUCCESS; +} diff --git a/Interpolation/include/CGAL/interpolation_functions.h b/Interpolation/include/CGAL/interpolation_functions.h index cac67d5aa40..f7c8769e10a 100644 --- a/Interpolation/include/CGAL/interpolation_functions.h +++ b/Interpolation/include/CGAL/interpolation_functions.h @@ -28,7 +28,6 @@ #include #include - #include #include #include @@ -59,7 +58,7 @@ struct Data_access }; //the interpolation functions: -template < class ForwardIterator, class ValueFunctor > + template < class ForwardIterator, class ValueFunctor> typename boost::result_of< ValueFunctor(typename std::iterator_traits::value_type::first_type)> ::type::first_type @@ -67,19 +66,21 @@ linear_interpolation(ForwardIterator first, ForwardIterator beyond, const typename std::iterator_traits::value_type::second_type& norm, ValueFunctor value_function) { + CGAL_precondition(first != beyond); CGAL_precondition(norm > 0); typedef typename std::iterator_traits::value_type::first_type arg_type; typedef typename boost::result_of::type result_type; typedef typename result_type::first_type Value_type; - Value_type result(0); - result_type val; + result_type val = value_function(first->first); + CGAL_assertion(val.second); + Value_type result = (first->second / norm) * val.first; + ++first; for(; first!=beyond; ++first) { val = value_function(first->first); - CGAL_assertion(val.second); - result += (first->second / norm) * val.first; + result = result + (first->second / norm) * val.first; } return result; } @@ -97,6 +98,7 @@ quadratic_interpolation(ForwardIterator first, ForwardIterator beyond, GradFunctor gradient_function, const Traits& traits) { + CGAL_precondition(first != beyond); CGAL_precondition(norm > 0); typedef typename std::iterator_traits::value_type::first_type arg_type; @@ -145,6 +147,7 @@ sibson_c1_interpolation(ForwardIterator first, ForwardIterator beyond, GradFunctor gradient_function, const Traits& traits) { + CGAL_precondition(first != beyond); CGAL_precondition(norm >0); typedef typename std::iterator_traits::value_type::first_type arg_type; @@ -227,6 +230,7 @@ sibson_c1_interpolation_square(ForwardIterator first, ForwardIterator beyond, GradFunctor gradient_function, const Traits& traits) { + CGAL_precondition(first != beyond); CGAL_precondition(norm > 0); typedef typename std::iterator_traits::value_type::first_type arg_type; @@ -300,6 +304,7 @@ farin_c1_interpolation(RandomAccessIterator first, GradFunctor gradient_function, const Traits& traits) { + CGAL_precondition(first != beyond); CGAL_precondition(norm >0); typedef typename std::iterator_traits::value_type::first_type arg_type; diff --git a/Interpolation/test/Interpolation/CMakeLists.txt b/Interpolation/test/Interpolation/CMakeLists.txt index dc4b2e8977d..d0cf0974741 100644 --- a/Interpolation/test/Interpolation/CMakeLists.txt +++ b/Interpolation/test/Interpolation/CMakeLists.txt @@ -4,19 +4,13 @@ project( Interpolation_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - - include_directories (BEFORE "include") + include_directories (BEFORE "include") # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) diff --git a/Intersections_2/test/Intersections_2/CMakeLists.txt b/Intersections_2/test/Intersections_2/CMakeLists.txt index 8b29c2509a0..8776da99898 100644 --- a/Intersections_2/test/Intersections_2/CMakeLists.txt +++ b/Intersections_2/test/Intersections_2/CMakeLists.txt @@ -4,18 +4,12 @@ project( Intersections_2_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Intersections_3/test/Intersections_3/CMakeLists.txt b/Intersections_3/test/Intersections_3/CMakeLists.txt index a13cf22451a..97393c87e2d 100644 --- a/Intersections_3/test/Intersections_3/CMakeLists.txt +++ b/Intersections_3/test/Intersections_3/CMakeLists.txt @@ -4,18 +4,12 @@ project( Intersections_3_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Interval_skip_list/doc/Interval_skip_list/CGAL/Interval_skip_list.h b/Interval_skip_list/doc/Interval_skip_list/CGAL/Interval_skip_list.h index 0aa28b3c0d4..ad15203e6ce 100644 --- a/Interval_skip_list/doc/Interval_skip_list/CGAL/Interval_skip_list.h +++ b/Interval_skip_list/doc/Interval_skip_list/CGAL/Interval_skip_list.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgIntervalSkipList +\ingroup PkgIntervalSkipListRef The class `Interval_skip_list` is a dynamic data structure that allows to find all members of a set of intervals that overlap a point. diff --git a/Interval_skip_list/doc/Interval_skip_list/CGAL/Interval_skip_list_interval.h b/Interval_skip_list/doc/Interval_skip_list/CGAL/Interval_skip_list_interval.h index 6db50ce910f..d5a2ce3250f 100644 --- a/Interval_skip_list/doc/Interval_skip_list/CGAL/Interval_skip_list_interval.h +++ b/Interval_skip_list/doc/Interval_skip_list/CGAL/Interval_skip_list_interval.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgIntervalSkipList +\ingroup PkgIntervalSkipListRef The class `Interval_skip_list_interval` represents intervals with lower and upper bound of type `Value`. These intervals diff --git a/Interval_skip_list/doc/Interval_skip_list/CGAL/Level_interval.h b/Interval_skip_list/doc/Interval_skip_list/CGAL/Level_interval.h index 0175c59494e..eaa1db22fc9 100644 --- a/Interval_skip_list/doc/Interval_skip_list/CGAL/Level_interval.h +++ b/Interval_skip_list/doc/Interval_skip_list/CGAL/Level_interval.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgIntervalSkipList +\ingroup PkgIntervalSkipListRef The class `Level_interval` represents intervals for the minimum and maximum value of the `z`-coordinate of a face of a triangulation. diff --git a/Interval_skip_list/doc/Interval_skip_list/PackageDescription.txt b/Interval_skip_list/doc/Interval_skip_list/PackageDescription.txt index 30af0633afc..aff3f5fe49f 100644 --- a/Interval_skip_list/doc/Interval_skip_list/PackageDescription.txt +++ b/Interval_skip_list/doc/Interval_skip_list/PackageDescription.txt @@ -1,15 +1,15 @@ -/// \defgroup PkgIntervalSkipList Interval Skip List Reference +/// \defgroup PkgIntervalSkipListRef Interval Skip List Reference /// \defgroup PkgIntervalSkipListConcepts Concepts -/// \ingroup PkgIntervalSkipList +/// \ingroup PkgIntervalSkipListRef /*! -\addtogroup PkgIntervalSkipList +\addtogroup PkgIntervalSkipListRef -\cgalPkgDescriptionBegin{Interval Skip List,PkgIntervalSkipListSummary} +\cgalPkgDescriptionBegin{Interval Skip List,PkgIntervalSkipList} \cgalPkgPicture{Interval_skip_list/fig/query.png} \cgalPkgSummaryBegin \cgalPkgAuthor{Andreas Fabri} \cgalPkgDesc{An interval skip list is a data structure for finding all intervals that contain a point, and for stabbing queries, that is for answering the question whether a given point is contained in an interval or not. For a triangulated terrain, this allows to quickly identify the triangles which intersect an iso line. } -\cgalPkgManuals{Chapter_Interval_Skip_List,PkgIntervalSkipList} +\cgalPkgManuals{Chapter_Interval_Skip_List,PkgIntervalSkipListRef} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{3.0} diff --git a/Interval_skip_list/examples/Interval_skip_list/CMakeLists.txt b/Interval_skip_list/examples/Interval_skip_list/CMakeLists.txt index 43cde661706..2d26929b883 100644 --- a/Interval_skip_list/examples/Interval_skip_list/CMakeLists.txt +++ b/Interval_skip_list/examples/Interval_skip_list/CMakeLists.txt @@ -4,18 +4,12 @@ project( Interval_skip_list_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Interval_skip_list/test/Interval_skip_list/CMakeLists.txt b/Interval_skip_list/test/Interval_skip_list/CMakeLists.txt index 06dcd09fa1c..9245b8e32a4 100644 --- a/Interval_skip_list/test/Interval_skip_list/CMakeLists.txt +++ b/Interval_skip_list/test/Interval_skip_list/CMakeLists.txt @@ -4,18 +4,12 @@ project( Interval_skip_list_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Interval_support/test/Interval_support/CMakeLists.txt b/Interval_support/test/Interval_support/CMakeLists.txt index d795bab0889..220902b3b7d 100644 --- a/Interval_support/test/Interval_support/CMakeLists.txt +++ b/Interval_support/test/Interval_support/CMakeLists.txt @@ -4,17 +4,13 @@ project( Interval_support_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET COMPONENTS Core ) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") + include(${CGAL_USE_FILE}) # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) diff --git a/Inventor/test/Inventor/CMakeLists.txt b/Inventor/test/Inventor/CMakeLists.txt index 5598698424e..cf2ec4f6944 100644 --- a/Inventor/test/Inventor/CMakeLists.txt +++ b/Inventor/test/Inventor/CMakeLists.txt @@ -4,18 +4,12 @@ project( Inventor_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Jet_fitting_3/doc/Jet_fitting_3/CGAL/Monge_via_jet_fitting.h b/Jet_fitting_3/doc/Jet_fitting_3/CGAL/Monge_via_jet_fitting.h index 7f31a429a16..2bfe86e437a 100644 --- a/Jet_fitting_3/doc/Jet_fitting_3/CGAL/Monge_via_jet_fitting.h +++ b/Jet_fitting_3/doc/Jet_fitting_3/CGAL/Monge_via_jet_fitting.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgJet_fitting_3 +\ingroup PkgJetFitting3Ref The class `Monge_via_jet_fitting` is designed to perform the estimation of the local differential quantities at a given point. The point range is @@ -39,7 +39,7 @@ public: /// @{ /*! -\ingroup PkgJet_fitting_3 +\ingroup PkgJetFitting3Ref The class `Monge_form` stores the Monge representation, i.e., the Monge coordinate system and the coefficients of the Monge form in this diff --git a/Jet_fitting_3/doc/Jet_fitting_3/Concepts/DataKernel.h b/Jet_fitting_3/doc/Jet_fitting_3/Concepts/DataKernel.h index 52107e77128..23f4f36fce0 100644 --- a/Jet_fitting_3/doc/Jet_fitting_3/Concepts/DataKernel.h +++ b/Jet_fitting_3/doc/Jet_fitting_3/Concepts/DataKernel.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgJet_fitting_3Concepts +\ingroup PkgJetFitting3Concepts \cgalConcept The concept `DataKernel` describes the set of requirements to be diff --git a/Jet_fitting_3/doc/Jet_fitting_3/Concepts/LocalKernel.h b/Jet_fitting_3/doc/Jet_fitting_3/Concepts/LocalKernel.h index 93e8c849938..bd830a31714 100644 --- a/Jet_fitting_3/doc/Jet_fitting_3/Concepts/LocalKernel.h +++ b/Jet_fitting_3/doc/Jet_fitting_3/Concepts/LocalKernel.h @@ -1,6 +1,6 @@ /*! -\ingroup PkgJet_fitting_3Concepts +\ingroup PkgJetFitting3Concepts \cgalConcept The concept `LocalKernel` describes the set of requirements to be diff --git a/Jet_fitting_3/doc/Jet_fitting_3/PackageDescription.txt b/Jet_fitting_3/doc/Jet_fitting_3/PackageDescription.txt index ff80e0f65c4..adb780b42f7 100644 --- a/Jet_fitting_3/doc/Jet_fitting_3/PackageDescription.txt +++ b/Jet_fitting_3/doc/Jet_fitting_3/PackageDescription.txt @@ -1,19 +1,19 @@ -/// \defgroup PkgJet_fitting_3 Estimation of Local Differential Properties of Point-Sampled Surfaces Reference -/// \defgroup PkgJet_fitting_3Concepts Concepts -/// \ingroup PkgJet_fitting_3 +/// \defgroup PkgJetFitting3Ref Estimation of Local Differential Properties of Point-Sampled Surfaces Reference +/// \defgroup PkgJetFitting3Concepts Concepts +/// \ingroup PkgJetFitting3Ref /*! -\addtogroup PkgJet_fitting_3 +\addtogroup PkgJetFitting3Ref \todo check generated documentation -\cgalPkgDescriptionBegin{Estimation of Local Differential Properties of Point-Sampled Surfaces,PkgJet_fitting_3Summary} +\cgalPkgDescriptionBegin{Estimation of Local Differential Properties of Point-Sampled Surfaces,PkgJetFitting3} \cgalPkgPicture{DavidDetail.png} \cgalPkgSummaryBegin \cgalPkgAuthors{Marc Pouget and Frédéric Cazals} \cgalPkgDesc{For a surface discretized as a point cloud or a mesh, it is desirable to estimate pointwise differential quantities. More precisely, first order properties correspond to the normal or the tangent plane; second order properties provide the principal curvatures and directions, third order properties provide the directional derivatives of the principal curvatures along the curvature lines, etc. This package allows the estimation of local differential quantities of a surface from a point sample.} -\cgalPkgManuals{Chapter_Estimation_of_Local_Differential_Properties_of_Point-Sampled_Surfaces,PkgJet_fitting_3} +\cgalPkgManuals{Chapter_Estimation_of_Local_Differential_Properties_of_Point-Sampled_Surfaces,PkgJetFitting3Ref} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{3.3} -\cgalPkgDependsOn{\ref PkgSolverSummary and \ref thirdpartyEigen} +\cgalPkgDependsOn{\ref PkgSolverInterface and \ref thirdpartyEigen} \cgalPkgBib{cgal:pc-eldp} \cgalPkgLicense{\ref licensesGPL "GPL"} \cgalPkgDemo{Polyhedron demo,polyhedron_3.zip} diff --git a/Jet_fitting_3/examples/Jet_fitting_3/CMakeLists.txt b/Jet_fitting_3/examples/Jet_fitting_3/CMakeLists.txt index 4d2ef94eab9..99d25985c62 100644 --- a/Jet_fitting_3/examples/Jet_fitting_3/CMakeLists.txt +++ b/Jet_fitting_3/examples/Jet_fitting_3/CMakeLists.txt @@ -4,17 +4,13 @@ project( Jet_fitting_3_Examples ) -cmake_minimum_required(VERSION 2.8.11) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - # use either Eigen or BLAS/LAPACK find_package(Eigen3 3.1.0) #(requires 3.1.0 or greater) if (NOT EIGEN3_FOUND) diff --git a/Jet_fitting_3/test/Jet_fitting_3/CMakeLists.txt b/Jet_fitting_3/test/Jet_fitting_3/CMakeLists.txt index 5bb3152d9cd..e1f65cb1884 100644 --- a/Jet_fitting_3/test/Jet_fitting_3/CMakeLists.txt +++ b/Jet_fitting_3/test/Jet_fitting_3/CMakeLists.txt @@ -4,17 +4,13 @@ project( Jet_fitting_3_Tests ) -cmake_minimum_required(VERSION 2.8.11) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - # use either Eigen or BLAS/LAPACK find_package(Eigen3 3.1.0) #(requires 3.1.0 or greater) if (NOT EIGEN3_FOUND) @@ -29,8 +25,6 @@ if ( CGAL_FOUND ) if(EIGEN3_FOUND OR LAPACK_FOUND) - include_directories (BEFORE ../../include) - create_single_source_cgal_program( "blind_1pt.cpp" ) else(EIGEN3_FOUND OR LAPACK_FOUND) diff --git a/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_2.h b/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_2.h index 7e888aa8b1a..274d63e33ff 100644 --- a/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_2.h +++ b/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_2.h @@ -247,6 +247,11 @@ gives the inverse transformation. */ Aff_transformation_2 inverse() const; +/*! +compares two affine transformations. +*/ +bool operator==(const Aff_transformation_2 &s) const; + /*! returns `true`, if the transformation is not reflecting, i.e.\ the determinant of the involved linear transformation is diff --git a/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_3.h b/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_3.h index 10199d96314..b95e1530c98 100644 --- a/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_3.h +++ b/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_3.h @@ -115,7 +115,7 @@ const Kernel::RT &hw = RT(1)); \name Operations The main thing to do with transformations is to apply them on -geometric objects. Each class `Class_2` representing a +geometric objects. Each class `Class_3` representing a geometric object has a member function: \code @@ -179,6 +179,12 @@ gives the inverse transformation. */ Aff_transformation_3 inverse() const; +/*! +compares two affine transformations. +*/ +bool operator==(const Aff_transformation_3 &s) const; + + /*! returns `true`, if the transformation is not reflecting, i.e.\ the determinant of the involved linear transformation is diff --git a/Kernel_23/doc/Kernel_23/CGAL/Origin.h b/Kernel_23/doc/Kernel_23/CGAL/Origin.h index ad1fccbaaa7..2b590a04bed 100644 --- a/Kernel_23/doc/Kernel_23/CGAL/Origin.h +++ b/Kernel_23/doc/Kernel_23/CGAL/Origin.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgKernel23 +\ingroup PkgKernel23Ref \cgal defines a symbolic constant `NULL_VECTOR` to construct zero length vectors. @@ -21,7 +21,7 @@ public: namespace CGAL { /*! -\ingroup PkgKernel23 +\ingroup PkgKernel23Ref \cgal defines a symbolic constant `ORIGIN` which denotes the point at the origin. diff --git a/Kernel_23/doc/Kernel_23/Concepts/FunctionObjectConcepts.h b/Kernel_23/doc/Kernel_23/Concepts/FunctionObjectConcepts.h index 89ef9d08cab..5f6f6b9e38e 100644 --- a/Kernel_23/doc/Kernel_23/Concepts/FunctionObjectConcepts.h +++ b/Kernel_23/doc/Kernel_23/Concepts/FunctionObjectConcepts.h @@ -3846,7 +3846,7 @@ public: direction as the sum of the normalized normal vectors of the two planes, and passes through the intersection of `h1` and `h2`. If `h1` and `h2` are parallel, then the bisector is defined as the - plane which has the same oriented normal vector as `l1`, and which is at + plane which has the same oriented normal vector as `h1`, and which is at the same distance from `h1` and `h2`. This function requires that `Kernel::RT` supports the `sqrt()` operation. diff --git a/Kernel_23/doc/Kernel_23/PackageDescription.txt b/Kernel_23/doc/Kernel_23/PackageDescription.txt index aa5e95fc237..4dfd75a4e2d 100644 --- a/Kernel_23/doc/Kernel_23/PackageDescription.txt +++ b/Kernel_23/doc/Kernel_23/PackageDescription.txt @@ -1,7 +1,7 @@ -/// \defgroup PkgKernel23 2D and 3D Linear Geometry Kernel Reference +/// \defgroup PkgKernel23Ref 2D and 3D Linear Geometry Kernel Reference /// \defgroup PkgKernel23Concepts Concepts -/// \ingroup PkgKernel23 +/// \ingroup PkgKernel23Ref /// \defgroup PkgKernel23ConceptsGeomObject Kernel Geometric Object Concepts /// \ingroup PkgKernel23Concepts @@ -10,37 +10,37 @@ /// \ingroup PkgKernel23Concepts /// \defgroup kernel_predef Predefined Kernels -/// \ingroup PkgKernel23 +/// \ingroup PkgKernel23Ref /// \defgroup kernel_classes2 2D Kernel Objects -/// \ingroup PkgKernel23 +/// \ingroup PkgKernel23Ref /// \defgroup kernel_classes3 3D Kernel Objects -/// \ingroup PkgKernel23 +/// \ingroup PkgKernel23Ref /// \defgroup kernel_classes Kernel Classes -/// \ingroup PkgKernel23 +/// \ingroup PkgKernel23Ref /// \defgroup kernel_global_function Global Kernel Functions -/// \ingroup PkgKernel23 +/// \ingroup PkgKernel23Ref /// \defgroup kernel_enums Enumerations and Related Functions -/// \ingroup PkgKernel23 +/// \ingroup PkgKernel23Ref /// \defgroup kernel_conversion Cartesian/Homogenous Conversion -/// \ingroup PkgKernel23 +/// \ingroup PkgKernel23Ref /// \defgroup kernel_dimension Dimension Handling Tools -/// \ingroup PkgKernel23 +/// \ingroup PkgKernel23Ref /*! -\addtogroup PkgKernel23 -\cgalPkgDescriptionBegin{2D and 3D Linear Geometry Kernel,PkgKernel23Summary} +\addtogroup PkgKernel23Ref +\cgalPkgDescriptionBegin{2D and 3D Linear Geometry Kernel,PkgKernel23} \cgalPkgPicture{pointSegmentTriangle.png} \cgalPkgSummaryBegin \cgalPkgAuthors{Hervé Brönnimann, Andreas Fabri, Geert-Jan Giezeman, Susan Hert, Michael Hoffmann, Lutz Kettner, Sylvain Pion, and Stefan Schirra} \cgalPkgDesc{This package contains kernels each containing objects of constant size, such as point, vector, direction, line, ray, segment, circle as well as predicates and constructions for these objects. The kernels mainly differ in the way they handle robustness issues.} -\cgalPkgManuals{Chapter_2D_and_3D_Geometry_Kernel,PkgKernel23} +\cgalPkgManuals{Chapter_2D_and_3D_Geometry_Kernel,PkgKernel23Ref} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{0.9} diff --git a/Kernel_23/examples/Kernel_23/CMakeLists.txt b/Kernel_23/examples/Kernel_23/CMakeLists.txt index 5ce6c416571..efa36a2a3e9 100644 --- a/Kernel_23/examples/Kernel_23/CMakeLists.txt +++ b/Kernel_23/examples/Kernel_23/CMakeLists.txt @@ -4,18 +4,12 @@ project( Kernel_23_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Kernel_23/test/Kernel_23/CMakeLists.txt b/Kernel_23/test/Kernel_23/CMakeLists.txt index f2b3e31b248..47e33a4d04f 100644 --- a/Kernel_23/test/Kernel_23/CMakeLists.txt +++ b/Kernel_23/test/Kernel_23/CMakeLists.txt @@ -4,19 +4,14 @@ project( Kernel_23_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET COMPONENTS Core) if ( CGAL_FOUND AND CGAL_Core_FOUND) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - - include_directories (BEFORE "include") + include(${CGAL_USE_FILE}) + include_directories (BEFORE "include") # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) diff --git a/Kernel_23/test/Kernel_23/include/CGAL/_test_cls_aff_transformation_2.h b/Kernel_23/test/Kernel_23/include/CGAL/_test_cls_aff_transformation_2.h index 23aff3a4c96..a4791a873aa 100644 --- a/Kernel_23/test/Kernel_23/include/CGAL/_test_cls_aff_transformation_2.h +++ b/Kernel_23/test/Kernel_23/include/CGAL/_test_cls_aff_transformation_2.h @@ -577,6 +577,13 @@ _test_cls_aff_transformation_2(const R& ) assert( ident.homogeneous(1,2) == ident.hm(1,2) ); assert( gscale.homogeneous(1,1) == gscale.hm(1,1) ); + //equality + CGAL::Aff_transformation_2 a2(0,1,0,1), + a3(0,1,0,1), a4(0,0,1,1); + assert(a2 == a3); + assert(a3 != a4); + + std::cout << "done" << std::endl; return true; } diff --git a/Kernel_23/test/Kernel_23/include/CGAL/_test_cls_aff_transformation_3.h b/Kernel_23/test/Kernel_23/include/CGAL/_test_cls_aff_transformation_3.h index a186c20d14a..35b0df744ca 100644 --- a/Kernel_23/test/Kernel_23/include/CGAL/_test_cls_aff_transformation_3.h +++ b/Kernel_23/test/Kernel_23/include/CGAL/_test_cls_aff_transformation_3.h @@ -543,6 +543,12 @@ _test_cls_aff_transformation_3(const R& ) assert(unit_sphere.orthogonal_transform(ident) == unit_sphere); assert(unit_sphere.orthogonal_transform(translate).center() == pnt); + //equality + CGAL::Aff_transformation_3 a2(0,1,0,1,0,1,1,0,1,0,0,1), + a3(0,1,0,1,0,1,1,0,1,0,0,1), a4(0,0,1,1,0,0,1,1,0,0,1,1); + assert(a2 == a3); + assert(a3 != a4); + std::cout << "done" << std::endl; return true; } diff --git a/Kernel_23/test/Kernel_23/issue_3301.cpp b/Kernel_23/test/Kernel_23/issue_3301.cpp new file mode 100644 index 00000000000..fedc8357787 --- /dev/null +++ b/Kernel_23/test/Kernel_23/issue_3301.cpp @@ -0,0 +1,17 @@ +#include +#include + +typedef CGAL::Simple_cartesian K; +typedef K::Point_2 Point_2; +typedef K::Line_2 Line_2; + +int main() +{ + Line_2 line(-4.2885603045067812e-18, 1, 250.73609999999996); + + Point_2 point(35.306000000000004, 250.69800000000001); + std::cout.precision(17); + std::cout << line.projection(point) << std::endl; + + return 0; +} diff --git a/Kernel_d/doc/Kernel_d/PackageDescription.txt b/Kernel_d/doc/Kernel_d/PackageDescription.txt index 296f53b8bf4..a2a4f31cbf3 100644 --- a/Kernel_d/doc/Kernel_d/PackageDescription.txt +++ b/Kernel_d/doc/Kernel_d/PackageDescription.txt @@ -1,33 +1,33 @@ -/// \defgroup PkgKernelD dD Geometry Kernel Reference +/// \defgroup PkgKernelDRef dD Geometry Kernel Reference /// \defgroup PkgKernelDLinAlgConcepts Linear Algebra Concepts -/// \ingroup PkgKernelD +/// \ingroup PkgKernelDRef /// \defgroup PkgKernelDLinAlgClasses Linear Algebra Classes -/// \ingroup PkgKernelD +/// \ingroup PkgKernelDRef /// \defgroup PkgKernelDKernels Kernels -/// \ingroup PkgKernelD +/// \ingroup PkgKernelDRef /// \defgroup PkgKernelDKernelObjs Kernel Objects -/// \ingroup PkgKernelD +/// \ingroup PkgKernelDRef /// \defgroup PkgKernelDFunctions Global Kernel Functions -/// \ingroup PkgKernelD +/// \ingroup PkgKernelDRef /// \defgroup PkgKernelDKernelConcept Kernel Concept -/// \ingroup PkgKernelD +/// \ingroup PkgKernelDRef /*! -\addtogroup PkgKernelD +\addtogroup PkgKernelDRef \todo check generated documentation -\cgalPkgDescriptionBegin{dD Geometry Kernel,PkgKernelDSummary} +\cgalPkgDescriptionBegin{dD Geometry Kernel,PkgKernelD} \cgalPkgPicture{hypercube.png} \cgalPkgSummaryBegin \cgalPkgAuthor{Michael Seel} \cgalPkgDesc{The dD %Kernel contains objects of constant size, such as point, vector, direction, line, ray, segment, circle in d dimensional Euclidean space, as well as predicates and constructions for these objects.} -\cgalPkgManuals{Chapter_dD_Geometry_Kernel,PkgKernelD} +\cgalPkgManuals{Chapter_dD_Geometry_Kernel,PkgKernelDRef} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{1.1} diff --git a/Kernel_d/test/Kernel_d/CMakeLists.txt b/Kernel_d/test/Kernel_d/CMakeLists.txt index c6da1842844..d762e532a7a 100644 --- a/Kernel_d/test/Kernel_d/CMakeLists.txt +++ b/Kernel_d/test/Kernel_d/CMakeLists.txt @@ -4,19 +4,13 @@ project( Kernel_d_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - - include_directories (BEFORE "include") + include_directories (BEFORE "include") # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) diff --git a/Linear_cell_complex/benchmark/Linear_cell_complex_2/CMakeLists.txt b/Linear_cell_complex/benchmark/Linear_cell_complex_2/CMakeLists.txt index 6eae9b0b136..f80ad42a2ee 100644 --- a/Linear_cell_complex/benchmark/Linear_cell_complex_2/CMakeLists.txt +++ b/Linear_cell_complex/benchmark/Linear_cell_complex_2/CMakeLists.txt @@ -1,15 +1,13 @@ project(LCC_performance_2) -cmake_minimum_required(VERSION 2.8.11) +cmake_minimum_required(VERSION 3.1) set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/) add_subdirectory(surface_mesh) find_package(CGAL REQUIRED) -include(${CGAL_USE_FILE}) -include_directories(BEFORE "../../include") include_directories(BEFORE "./surface_mesh") include_directories(BEFORE "./cgogn" "./cgogn/include") LINK_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/cgogn/lib/Release) diff --git a/Linear_cell_complex/benchmark/Linear_cell_complex_3/CMakeLists.txt b/Linear_cell_complex/benchmark/Linear_cell_complex_3/CMakeLists.txt index 9faf17e58ac..e3eff7e6d85 100644 --- a/Linear_cell_complex/benchmark/Linear_cell_complex_3/CMakeLists.txt +++ b/Linear_cell_complex/benchmark/Linear_cell_complex_3/CMakeLists.txt @@ -7,7 +7,6 @@ if(NOT POLICY CMP0070 AND POLICY CMP0053) endif() find_package(CGAL REQUIRED) -include(${CGAL_USE_FILE}) find_package(Boost 1.43.0) if(Boost_FOUND) @@ -19,7 +18,6 @@ endif() add_subdirectory(openvolumemesh) include_directories(BEFORE openvolumemesh/src) -include_directories(BEFORE "../../include") include_directories(BEFORE "./cgogn" "./cgogn/include") include_directories(BEFORE "/usr/include/libxml2/") include_directories(BEFORE "/usr/include/eigen3/") diff --git a/Linear_cell_complex/demo/Linear_cell_complex/CMakeLists.txt b/Linear_cell_complex/demo/Linear_cell_complex/CMakeLists.txt index d774c81cc65..108432031ff 100644 --- a/Linear_cell_complex/demo/Linear_cell_complex/CMakeLists.txt +++ b/Linear_cell_complex/demo/Linear_cell_complex/CMakeLists.txt @@ -36,7 +36,6 @@ add_definitions(-DCGAL_PROFILE_LCC_DEMO) ################## find_package(CGAL COMPONENTS Qt5) -include(${CGAL_USE_FILE}) find_package(Qt5 QUIET COMPONENTS Xml Script OpenGL Svg) @@ -49,8 +48,6 @@ else() add_definitions(-DQT_NO_KEYWORDS) -include_directories(BEFORE . ../../include/) - # ui file, created wih Qt Designer qt5_wrap_ui(uis MainWindow.ui CreateMesh.ui CreateMenger.ui CreateSierpinskiCarpet.ui CreateSierpinskiTriangle.ui) diff --git a/Linear_cell_complex/doc/Linear_cell_complex/PackageDescription.txt b/Linear_cell_complex/doc/Linear_cell_complex/PackageDescription.txt index 8eb6f42e7dc..4aa6d9777bf 100644 --- a/Linear_cell_complex/doc/Linear_cell_complex/PackageDescription.txt +++ b/Linear_cell_complex/doc/Linear_cell_complex/PackageDescription.txt @@ -1,15 +1,15 @@ -/// \defgroup PkgLinearCellComplex Linear Cell Complex Reference +/// \defgroup PkgLinearCellComplexRef Linear Cell Complex Reference /// \defgroup PkgLinearCellComplexConcepts Concepts -/// \ingroup PkgLinearCellComplex +/// \ingroup PkgLinearCellComplexRef /// \defgroup PkgLinearCellComplexClasses Classes -/// \ingroup PkgLinearCellComplex +/// \ingroup PkgLinearCellComplexRef /*! Basic constructions. */ /// \defgroup PkgLinearCellComplexConstructions Constructions for Linear Cell Complex -/// \ingroup PkgLinearCellComplex +/// \ingroup PkgLinearCellComplexRef /*! High-level operations. \code @@ -17,7 +17,7 @@ \endcode */ /// \defgroup PkgLinearCellComplexOperations Operations for Linear Cell Complex -/// \ingroup PkgLinearCellComplex +/// \ingroup PkgLinearCellComplexRef /*! Draw. \code @@ -25,22 +25,22 @@ \endcode */ /// \defgroup PkgDrawLinearCellComplex Draw a Linear Cell Complex -/// \ingroup PkgLinearCellComplex +/// \ingroup PkgLinearCellComplexRef /*! -\addtogroup PkgLinearCellComplex -\cgalPkgDescriptionBegin{Linear Cell Complex,PkgLinearCellComplexSummary} +\addtogroup PkgLinearCellComplexRef +\cgalPkgDescriptionBegin{Linear Cell Complex,PkgLinearCellComplex} \cgalPkgPicture{lcc_logo.png} \cgalPkgSummaryBegin \cgalPkgAuthor{Guillaume Damiand} \cgalPkgDesc{This package implements linear cell complexes, objects in d-dimension with linear geometry. The combinatorial part of objects is described either by a combinatorial or a generalized map, representing all the cells of the object plus the incidence and adjacency relations between cells. Geometry is added to the combinatorial data-structure simply by associating a point to each vertex of the map. Taking a 2D combinatorial map, and using 3D points, gives a linear cell complex equivalent to a Polyhedron_3.} -\cgalPkgManuals{Chapter_Linear_Cell_Complex,PkgLinearCellComplex} +\cgalPkgManuals{Chapter_Linear_Cell_Complex,PkgLinearCellComplexRef} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{4.0} -\cgalPkgDependsOn{\ref PkgCombinatorialMapsSummary} -\cgalPkgDependsOn{\ref PkgGeneralizedMapsSummary} +\cgalPkgDependsOn{\ref PkgCombinatorialMaps} +\cgalPkgDependsOn{\ref PkgGeneralizedMaps} \cgalPkgBib{cgal:d-lcc-12} \cgalPkgLicense{\ref licensesLGPL "LGPL"} \cgalPkgDemo{3D Linear Cell Complex,linear_cell_complex_3.zip} diff --git a/Linear_cell_complex/examples/Linear_cell_complex/CMakeLists.txt b/Linear_cell_complex/examples/Linear_cell_complex/CMakeLists.txt index 9c0372c277d..653f6e2bc8b 100644 --- a/Linear_cell_complex/examples/Linear_cell_complex/CMakeLists.txt +++ b/Linear_cell_complex/examples/Linear_cell_complex/CMakeLists.txt @@ -23,10 +23,6 @@ endif() # add_definition(-DCGAL_DISABLE_ROUNDING_MATH_CHECK) if (CGAL_FOUND) - include( ${CGAL_USE_FILE} ) - - include(CGAL_CreateSingleSourceCGALProgram) - include_directories(BEFORE ../../include) create_single_source_cgal_program("gmap_linear_cell_complex_3.cpp") create_single_source_cgal_program("linear_cell_complex_3.cpp") diff --git a/Linear_cell_complex/include/CGAL/draw_linear_cell_complex.h b/Linear_cell_complex/include/CGAL/draw_linear_cell_complex.h index e792b745282..70249fd05f6 100644 --- a/Linear_cell_complex/include/CGAL/draw_linear_cell_complex.h +++ b/Linear_cell_complex/include/CGAL/draw_linear_cell_complex.h @@ -45,29 +45,30 @@ struct DefaultColorFunctorLCC } }; -template -struct Geom_utils; +template +struct LCC_geom_utils; -template -struct Geom_utils +template +struct LCC_geom_utils { - static typename LCC::Vector get_vertex_normal(const LCC& lcc, - typename LCC::Dart_const_handle dh) + static typename Kernel::Vector_3 + get_vertex_normal(const LCC& lcc, typename LCC::Dart_const_handle dh) { - typename LCC::Vector n = CGAL::compute_normal_of_cell_0(lcc,dh); + typename Kernel::Vector_3 n = internal::Geom_utils:: + get_local_vector(CGAL::compute_normal_of_cell_0(lcc,dh)); n = n/(CGAL::sqrt(n*n)); return n; } }; -template -struct Geom_utils +template +struct LCC_geom_utils { - static typename LCC::Vector get_vertex_normal(const LCC&, - typename LCC::Dart_const_handle) + static typename Kernel::Vector_3 + get_vertex_normal(const LCC&, typename LCC::Dart_const_handle) { - typename LCC::Vector res=CGAL::NULL_VECTOR; - return res; + typename Kernel::Vector_3 n=CGAL::NULL_VECTOR; + return n; } }; @@ -121,8 +122,8 @@ protected: cur=dh; do { - add_point_in_face(lcc.point(cur), - Geom_utils::get_vertex_normal(lcc, cur)); + add_point_in_face(lcc.point(cur), LCC_geom_utils:: + get_vertex_normal(lcc, cur)); cur=lcc.next(cur); } while(cur!=dh); diff --git a/Linear_cell_complex/test/Linear_cell_complex/CMakeLists.txt b/Linear_cell_complex/test/Linear_cell_complex/CMakeLists.txt index 21a5a13be57..9ae14e0d428 100644 --- a/Linear_cell_complex/test/Linear_cell_complex/CMakeLists.txt +++ b/Linear_cell_complex/test/Linear_cell_complex/CMakeLists.txt @@ -4,18 +4,12 @@ project( Linear_cell_complex_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - file(GLOB hfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.h) diff --git a/Matrix_search/doc/Matrix_search/CGAL/Dynamic_matrix.h b/Matrix_search/doc/Matrix_search/CGAL/Dynamic_matrix.h index 4761f703302..96b960f8b4a 100644 --- a/Matrix_search/doc/Matrix_search/CGAL/Dynamic_matrix.h +++ b/Matrix_search/doc/Matrix_search/CGAL/Dynamic_matrix.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgMatrixSearch +\ingroup PkgMatrixSearchRef The class `Dynamic_matrix` is an adaptor for an arbitrary matrix class `M` to provide the dynamic operations needed for monotone diff --git a/Matrix_search/doc/Matrix_search/CGAL/Sorted_matrix_search_traits_adaptor.h b/Matrix_search/doc/Matrix_search/CGAL/Sorted_matrix_search_traits_adaptor.h index e4f01c40586..cff3fcffd6a 100644 --- a/Matrix_search/doc/Matrix_search/CGAL/Sorted_matrix_search_traits_adaptor.h +++ b/Matrix_search/doc/Matrix_search/CGAL/Sorted_matrix_search_traits_adaptor.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgMatrixSearch +\ingroup PkgMatrixSearchRef The class `Sorted_matrix_search_traits_adaptor` can be used as an adaptor to create sorted matrix search traits classes for diff --git a/Matrix_search/doc/Matrix_search/CGAL/monotone_matrix_search.h b/Matrix_search/doc/Matrix_search/CGAL/monotone_matrix_search.h index a62799d1a10..91b60ccd958 100644 --- a/Matrix_search/doc/Matrix_search/CGAL/monotone_matrix_search.h +++ b/Matrix_search/doc/Matrix_search/CGAL/monotone_matrix_search.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgMatrixSearch +\ingroup PkgMatrixSearchRef \brief computes the maximum (as specified by `compare_strictly`) entry for each row of `m` and writes the corresponding column diff --git a/Matrix_search/doc/Matrix_search/CGAL/sorted_matrix_search.h b/Matrix_search/doc/Matrix_search/CGAL/sorted_matrix_search.h index f54578520b4..d27ad901387 100644 --- a/Matrix_search/doc/Matrix_search/CGAL/sorted_matrix_search.h +++ b/Matrix_search/doc/Matrix_search/CGAL/sorted_matrix_search.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgMatrixSearch +\ingroup PkgMatrixSearchRef \brief returns the element `x` in one of the sorted matrices from the range `[f, l)`, for which `t.is_feasible(x)` diff --git a/Matrix_search/doc/Matrix_search/PackageDescription.txt b/Matrix_search/doc/Matrix_search/PackageDescription.txt index 97b2f8fbd5c..6e91a1dba4e 100644 --- a/Matrix_search/doc/Matrix_search/PackageDescription.txt +++ b/Matrix_search/doc/Matrix_search/PackageDescription.txt @@ -1,17 +1,17 @@ -/// \defgroup PkgMatrixSearch Monotone and Sorted Matrix Search Reference +/// \defgroup PkgMatrixSearchRef Monotone and Sorted Matrix Search Reference /// \defgroup PkgMatrixSearchConcepts Concepts -/// \ingroup PkgMatrixSearch +/// \ingroup PkgMatrixSearchRef /*! -\addtogroup PkgMatrixSearch +\addtogroup PkgMatrixSearchRef \todo check generated documentation -\cgalPkgDescriptionBegin{Monotone and Sorted Matrix Search,PkgMatrixSearchSummary} +\cgalPkgDescriptionBegin{Monotone and Sorted Matrix Search,PkgMatrixSearch} \cgalPkgPicture{matrix.png} \cgalPkgSummaryBegin \cgalPkgAuthor{Michael Hoffmann} \cgalPkgDesc{This package provides a matrix search framework, which is the underlying technique for the computation of all furthest neighbors for the vertices of a convex polygon, maximal k-gons inscribed into a planar point set, and computing rectangular p-centers.} -\cgalPkgManuals{Chapter_Monotone_and_Sorted_Matrix_Search,PkgMatrixSearch} +\cgalPkgManuals{Chapter_Monotone_and_Sorted_Matrix_Search,PkgMatrixSearchRef} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{1.1} diff --git a/Matrix_search/examples/Matrix_search/CMakeLists.txt b/Matrix_search/examples/Matrix_search/CMakeLists.txt index 9b31e4bc4da..d72870c96af 100644 --- a/Matrix_search/examples/Matrix_search/CMakeLists.txt +++ b/Matrix_search/examples/Matrix_search/CMakeLists.txt @@ -4,18 +4,12 @@ project( Matrix_search_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Matrix_search/test/Matrix_search/CMakeLists.txt b/Matrix_search/test/Matrix_search/CMakeLists.txt index 6f84d2e2d5a..fd3de9c33ab 100644 --- a/Matrix_search/test/Matrix_search/CMakeLists.txt +++ b/Matrix_search/test/Matrix_search/CMakeLists.txt @@ -4,18 +4,12 @@ project( Matrix_search_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) diff --git a/Mesh_2/demo/Mesh_2/CMakeLists.txt b/Mesh_2/demo/Mesh_2/CMakeLists.txt index 71a049e416f..ea268eec3f0 100644 --- a/Mesh_2/demo/Mesh_2/CMakeLists.txt +++ b/Mesh_2/demo/Mesh_2/CMakeLists.txt @@ -10,13 +10,12 @@ if(NOT POLICY CMP0070 AND POLICY CMP0053) endif() find_package(CGAL QUIET) -include( ${CGAL_USE_FILE} ) -include_directories(BEFORE ../../include) include_directories(BEFORE ../../../Triangulation_2/include) if ( CGAL_FOUND ) + include(${CGAL_USE_FILE}) # conform target add_executable (conform conform.cpp) diff --git a/Mesh_2/doc/Mesh_2/CGAL/Delaunay_mesh_criteria_2.h b/Mesh_2/doc/Mesh_2/CGAL/Delaunay_mesh_criteria_2.h index e80acb71a5b..3979f8baf04 100644 --- a/Mesh_2/doc/Mesh_2/CGAL/Delaunay_mesh_criteria_2.h +++ b/Mesh_2/doc/Mesh_2/CGAL/Delaunay_mesh_criteria_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgMesh2 +\ingroup PkgMesh2Ref diff --git a/Mesh_2/doc/Mesh_2/CGAL/Delaunay_mesh_face_base_2.h b/Mesh_2/doc/Mesh_2/CGAL/Delaunay_mesh_face_base_2.h index 3fe813eecfe..909c91012c5 100644 --- a/Mesh_2/doc/Mesh_2/CGAL/Delaunay_mesh_face_base_2.h +++ b/Mesh_2/doc/Mesh_2/CGAL/Delaunay_mesh_face_base_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgMesh2 +\ingroup PkgMesh2Ref diff --git a/Mesh_2/doc/Mesh_2/CGAL/Delaunay_mesh_size_criteria_2.h b/Mesh_2/doc/Mesh_2/CGAL/Delaunay_mesh_size_criteria_2.h index f8624d97adc..1c29f732f89 100644 --- a/Mesh_2/doc/Mesh_2/CGAL/Delaunay_mesh_size_criteria_2.h +++ b/Mesh_2/doc/Mesh_2/CGAL/Delaunay_mesh_size_criteria_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgMesh2 +\ingroup PkgMesh2Ref diff --git a/Mesh_2/doc/Mesh_2/CGAL/Delaunay_mesh_vertex_base_2.h b/Mesh_2/doc/Mesh_2/CGAL/Delaunay_mesh_vertex_base_2.h index 02894cb4e84..0eb0c2f8028 100644 --- a/Mesh_2/doc/Mesh_2/CGAL/Delaunay_mesh_vertex_base_2.h +++ b/Mesh_2/doc/Mesh_2/CGAL/Delaunay_mesh_vertex_base_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgMesh2 +\ingroup PkgMesh2Ref The class `Delaunay_mesh_vertex_base_2` is a model for the concept `DelaunayMeshVertexBase_2`. diff --git a/Mesh_2/doc/Mesh_2/CGAL/Delaunay_mesher_2.h b/Mesh_2/doc/Mesh_2/CGAL/Delaunay_mesher_2.h index 449cb10d6e7..dd71a465d4d 100644 --- a/Mesh_2/doc/Mesh_2/CGAL/Delaunay_mesher_2.h +++ b/Mesh_2/doc/Mesh_2/CGAL/Delaunay_mesher_2.h @@ -2,7 +2,7 @@ namespace CGAL { /*! -\ingroup PkgMesh2 +\ingroup PkgMesh2Ref This class implements a 2D mesh generator. diff --git a/Mesh_2/doc/Mesh_2/CGAL/Mesh_2/Face_badness.h b/Mesh_2/doc/Mesh_2/CGAL/Mesh_2/Face_badness.h index fc3e577f324..57ac738075b 100644 --- a/Mesh_2/doc/Mesh_2/CGAL/Mesh_2/Face_badness.h +++ b/Mesh_2/doc/Mesh_2/CGAL/Mesh_2/Face_badness.h @@ -1,7 +1,7 @@ namespace CGAL { namespace Mesh_2 { /*! -\ingroup PkgMesh2 +\ingroup PkgMesh2Ref */ enum Face_badness { NOT_BAD, BAD, IMPERATIVELY_BAD}; diff --git a/Mesh_2/doc/Mesh_2/CGAL/Triangulation_conformer_2.h b/Mesh_2/doc/Mesh_2/CGAL/Triangulation_conformer_2.h index b0ff428a78e..2a8fcae9eef 100644 --- a/Mesh_2/doc/Mesh_2/CGAL/Triangulation_conformer_2.h +++ b/Mesh_2/doc/Mesh_2/CGAL/Triangulation_conformer_2.h @@ -40,7 +40,7 @@ template void make_conforming_Gabriel_2 (CDT &t); namespace CGAL { /*! -\ingroup PkgMesh2 +\ingroup PkgMesh2Ref The class `Triangulation_conformer_2` is an auxiliary class of diff --git a/Mesh_2/doc/Mesh_2/PackageDescription.txt b/Mesh_2/doc/Mesh_2/PackageDescription.txt index d76b4a3b3c4..38289e92ef8 100644 --- a/Mesh_2/doc/Mesh_2/PackageDescription.txt +++ b/Mesh_2/doc/Mesh_2/PackageDescription.txt @@ -1,19 +1,19 @@ -/// \defgroup PkgMesh2 2D Conforming Triangulations and Meshes Reference +/// \defgroup PkgMesh2Ref 2D Conforming Triangulations and Meshes Reference /// \defgroup PkgMesh2Concepts Concepts -/// \ingroup PkgMesh2 +/// \ingroup PkgMesh2Ref /// \defgroup PkgMesh2Functions Mesh Generation Functions -/// \ingroup PkgMesh2 +/// \ingroup PkgMesh2Ref /// The main function to generate a mesh is `refine_Delaunay_mesh_2()`. /// The function `lloyd_optimize_mesh_2()` allows to optimize an existing mesh. /// \defgroup PkgMesh2Enum Enumerations -/// \ingroup PkgMesh2 +/// \ingroup PkgMesh2Ref /*! -\addtogroup PkgMesh2 -\cgalPkgDescriptionBegin{2D Conforming Triangulations and Meshes,PkgMesh2Summary} +\addtogroup PkgMesh2Ref +\cgalPkgDescriptionBegin{2D Conforming Triangulations and Meshes,PkgMesh2} \cgalPkgPicture{Mesh_2/fig/delaunaymesh-small.png} \cgalPkgSummaryBegin \cgalPkgAuthor{Laurent Rineau} @@ -23,11 +23,11 @@ Conforming Gabriel triangulations are obtained by further refining constrained The package provides also a 2D mesh generator that refines triangles and constrained edges until user defined size and shape criteria on triangles are satisfied. The generated meshes can be optimized using the Lloyd algorithm, also provided in this package. The package can handle intersecting input constraints and set no restriction on the angle formed by two constraints sharing an endpoint.} -\cgalPkgManuals{Chapter_2D_Conforming_Triangulations_and_Meshes,PkgMesh2} +\cgalPkgManuals{Chapter_2D_Conforming_Triangulations_and_Meshes,PkgMesh2Ref} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin \cgalPkgSince{3.1} -\cgalPkgDependsOn{\ref PkgTriangulation2Summary} +\cgalPkgDependsOn{\ref PkgTriangulation2} \cgalPkgBib{cgal:r-ctm2} \cgalPkgLicense{\ref licensesGPL "GPL"} \cgalPkgDemo{2D Mesh Generator,constrained_delaunay_triangulation_2.zip} diff --git a/Mesh_2/examples/Mesh_2/CMakeLists.txt b/Mesh_2/examples/Mesh_2/CMakeLists.txt index 43eaf6b585d..69148ac52ee 100644 --- a/Mesh_2/examples/Mesh_2/CMakeLists.txt +++ b/Mesh_2/examples/Mesh_2/CMakeLists.txt @@ -1,6 +1,6 @@ project( Mesh_2_Examples ) -cmake_minimum_required(VERSION 2.8.12) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET) diff --git a/Mesh_2/test/Mesh_2/CMakeLists.txt b/Mesh_2/test/Mesh_2/CMakeLists.txt index 68453547a9f..e5bb16314ee 100644 --- a/Mesh_2/test/Mesh_2/CMakeLists.txt +++ b/Mesh_2/test/Mesh_2/CMakeLists.txt @@ -4,17 +4,13 @@ project( Mesh_2_Tests ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 3.1) find_package(CGAL QUIET COMPONENTS Core) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") + include(${CGAL_USE_FILE}) # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) diff --git a/Mesh_3/archive/applications/CMakeLists.txt b/Mesh_3/archive/applications/CMakeLists.txt index 7324e7ef359..9ce425b3cd8 100644 --- a/Mesh_3/archive/applications/CMakeLists.txt +++ b/Mesh_3/archive/applications/CMakeLists.txt @@ -4,7 +4,7 @@ project( Mesh_3_applications ) -CMAKE_MINIMUM_REQUIRED(VERSION 2.6.2) +CMAKE_MINIMUM_REQUIRED(VERSION 3.1) include_directories(../include) @@ -12,8 +12,6 @@ include_directories(../include) find_package(CGAL COMPONENTS ImageIO) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - find_package( Boost COMPONENTS program_options filesystem system) if ( Boost_FOUND AND Boost_VERSION GREATER 103400) @@ -27,8 +25,6 @@ if ( CGAL_FOUND ) message(FATAL_ERROR "This program requires Boost >= 1.34.1") endif() - include( CGAL_CreateSingleSourceCGALProgram ) - # Compilable examples create_single_source_cgal_program( "mesh_implicit_domains.cpp" "../examples/Mesh_3/implicit_functions.cpp" ) if( CGAL_ImageIO_USE_ZLIB ) diff --git a/Mesh_3/benchmark/Mesh_3/CMakeLists.txt b/Mesh_3/benchmark/Mesh_3/CMakeLists.txt index 9b359370bef..27422304a52 100644 --- a/Mesh_3/benchmark/Mesh_3/CMakeLists.txt +++ b/Mesh_3/benchmark/Mesh_3/CMakeLists.txt @@ -4,7 +4,7 @@ project( Mesh_3_benchmark ) -cmake_minimum_required(VERSION 2.8.11) +cmake_minimum_required(VERSION 3.1) # Creates a new CMake option, turned ON by default @@ -35,7 +35,6 @@ if(MSVC AND ACTIVATE_MSVC_PRECOMPILED_HEADERS AND NOT(MSVC_VERSION LESS 1310)) set(CGAL_CXX_FLAGS "${CGAL_CXX_FLAGS} /Zm1000") endif() -include_directories(../../include) include_directories(../../../Triangulation_3/include) include_directories(../../../STL_Extension/include) include_directories(../../../AABB_tree/include) @@ -49,8 +48,6 @@ endif() find_package(CGAL COMPONENTS ImageIO) if ( CGAL_FOUND ) - include( ${CGAL_USE_FILE} ) - # Activate concurrency ? (turned OFF by default) option(CGAL_ACTIVATE_CONCURRENT_MESH_3 "Activate parallelism in Mesh_3" @@ -82,8 +79,6 @@ if ( CGAL_FOUND ) endif() if ( Boost_FOUND AND Boost_VERSION GREATER 103400 ) - include( CGAL_CreateSingleSourceCGALProgram ) - # Compilable benchmark set (BENCHMARK_SOURCE_FILES "concurrency.cpp") if(TBB_FOUND) diff --git a/Mesh_3/doc/Mesh_3/CGAL/Compact_mesh_cell_base_3.h b/Mesh_3/doc/Mesh_3/CGAL/Compact_mesh_cell_base_3.h index d6ac28deb44..9de1c57ecc6 100644 --- a/Mesh_3/doc/Mesh_3/CGAL/Compact_mesh_cell_base_3.h +++ b/Mesh_3/doc/Mesh_3/CGAL/Compact_mesh_cell_base_3.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgMesh_3MeshClasses +\ingroup PkgMesh3MeshClasses The class `Compact_mesh_cell_base_3` is a model of the concept `MeshCellBase_3`. It is designed to serve as cell base class for the 3D triangulation diff --git a/Mesh_3/doc/Mesh_3/CGAL/Gray_image_mesh_domain_3.h b/Mesh_3/doc/Mesh_3/CGAL/Gray_image_mesh_domain_3.h index cc6d2afdd75..d48567bd057 100644 --- a/Mesh_3/doc/Mesh_3/CGAL/Gray_image_mesh_domain_3.h +++ b/Mesh_3/doc/Mesh_3/CGAL/Gray_image_mesh_domain_3.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgMesh_3Domains +\ingroup PkgMesh3Domains \deprecated The class template `Gray_image_mesh_domain_3` is deprecated since CGAL-4.13, in favor of the class template `Labeled_mesh_domain_3` and diff --git a/Mesh_3/doc/Mesh_3/CGAL/IO/File_medit.h b/Mesh_3/doc/Mesh_3/CGAL/IO/File_medit.h index e50566add7b..69966bf22b5 100644 --- a/Mesh_3/doc/Mesh_3/CGAL/IO/File_medit.h +++ b/Mesh_3/doc/Mesh_3/CGAL/IO/File_medit.h @@ -1,6 +1,6 @@ namespace CGAL { -/// \ingroup PkgMesh_3IOFunctions +/// \ingroup PkgMesh3IOFunctions /// /// \brief Outputs a mesh complex to the medit (`.mesh`) file format. /// See \cgalCite{frey:inria-00069921} for a comprehensive description of this file format. diff --git a/Mesh_3/doc/Mesh_3/CGAL/IO/facets_in_complex_3_to_triangle_mesh.h b/Mesh_3/doc/Mesh_3/CGAL/IO/facets_in_complex_3_to_triangle_mesh.h index 8864ad40203..b672d4d3273 100644 --- a/Mesh_3/doc/Mesh_3/CGAL/IO/facets_in_complex_3_to_triangle_mesh.h +++ b/Mesh_3/doc/Mesh_3/CGAL/IO/facets_in_complex_3_to_triangle_mesh.h @@ -1,5 +1,5 @@ namespace CGAL { -//! \ingroup PkgMesh_3Functions +//! \ingroup PkgMesh3Functions //! //! \brief builds a `TriangleMesh` from the surface facets, with a consistent orientation at the interface of two subdomains. //! diff --git a/Mesh_3/doc/Mesh_3/CGAL/Image_3.h b/Mesh_3/doc/Mesh_3/CGAL/Image_3.h index b973c7d2632..db38404cc9d 100644 --- a/Mesh_3/doc/Mesh_3/CGAL/Image_3.h +++ b/Mesh_3/doc/Mesh_3/CGAL/Image_3.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgMesh_3Domains +\ingroup PkgMesh3Domains The class `Image_3` is a C++ wrapper around the InrImage library. It holds a diff --git a/Mesh_3/doc/Mesh_3/CGAL/Implicit_mesh_domain_3.h b/Mesh_3/doc/Mesh_3/CGAL/Implicit_mesh_domain_3.h index a8dc87d0ea6..904d18d0e97 100644 --- a/Mesh_3/doc/Mesh_3/CGAL/Implicit_mesh_domain_3.h +++ b/Mesh_3/doc/Mesh_3/CGAL/Implicit_mesh_domain_3.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgMesh_3Domains +\ingroup PkgMesh3Domains \deprecated The class template `Implicit_mesh_domain_3` is deprecated since CGAL-4.13, in favor of the class template `Labeled_mesh_domain_3` and diff --git a/Mesh_3/doc/Mesh_3/CGAL/Implicit_to_labeling_function_wrapper.h b/Mesh_3/doc/Mesh_3/CGAL/Implicit_to_labeling_function_wrapper.h index f6b3601a71f..6446729e1c5 100644 --- a/Mesh_3/doc/Mesh_3/CGAL/Implicit_to_labeling_function_wrapper.h +++ b/Mesh_3/doc/Mesh_3/CGAL/Implicit_to_labeling_function_wrapper.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgMesh_3Domains +\ingroup PkgMesh3Domains The class `Implicit_multi_domain_to_labeling_function_wrapper` is a helping class to get a function with integer values labeling the components of a multi-domain. The multidomain is described through a set of functions {fi(p), i=1, ...n}. diff --git a/Mesh_3/doc/Mesh_3/CGAL/Labeled_image_mesh_domain_3.h b/Mesh_3/doc/Mesh_3/CGAL/Labeled_image_mesh_domain_3.h index 0aa10bb88a8..d23791874ac 100644 --- a/Mesh_3/doc/Mesh_3/CGAL/Labeled_image_mesh_domain_3.h +++ b/Mesh_3/doc/Mesh_3/CGAL/Labeled_image_mesh_domain_3.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgMesh_3Domains +\ingroup PkgMesh3Domains \deprecated The class template `Labeled_image_mesh_domain_3` is deprecated since CGAL-4.13, in favor of the class template `Labeled_mesh_domain_3` and diff --git a/Mesh_3/doc/Mesh_3/CGAL/Labeled_mesh_domain_3.h b/Mesh_3/doc/Mesh_3/CGAL/Labeled_mesh_domain_3.h index 26720eb2cc9..399abd9a027 100644 --- a/Mesh_3/doc/Mesh_3/CGAL/Labeled_mesh_domain_3.h +++ b/Mesh_3/doc/Mesh_3/CGAL/Labeled_mesh_domain_3.h @@ -1,7 +1,7 @@ namespace CGAL { /*! -\ingroup PkgMesh_3Domains +\ingroup PkgMesh3Domains \brief The class `Labeled_mesh_domain_3` implements indexed domains. diff --git a/Mesh_3/doc/Mesh_3/CGAL/Mesh_cell_base_3.h b/Mesh_3/doc/Mesh_3/CGAL/Mesh_cell_base_3.h index 6d4171492d2..f2166607f7d 100644 --- a/Mesh_3/doc/Mesh_3/CGAL/Mesh_cell_base_3.h +++ b/Mesh_3/doc/Mesh_3/CGAL/Mesh_cell_base_3.h @@ -3,7 +3,7 @@ namespace CGAL { /*! -\ingroup PkgMesh_3MeshClasses +\ingroup PkgMesh3MeshClasses