mirror of https://github.com/CGAL/cgal
Solve conflicts
This commit is contained in:
commit
78db3f646d
88
.travis.yml
88
.travis.yml
|
|
@ -20,34 +20,35 @@ env:
|
||||||
- PACKAGE='Envelope_3 Filtered_kernel Generalized_map '
|
- PACKAGE='Envelope_3 Filtered_kernel Generalized_map '
|
||||||
- PACKAGE='Generator Geomview GraphicsView '
|
- PACKAGE='Generator Geomview GraphicsView '
|
||||||
- PACKAGE='HalfedgeDS Hash_map Heat_method_3 '
|
- PACKAGE='HalfedgeDS Hash_map Heat_method_3 '
|
||||||
- PACKAGE='Homogeneous_kernel Inscribed_areas Installation '
|
- PACKAGE='Homogeneous_kernel Hyperbolic_triangulation_2 Inscribed_areas '
|
||||||
- PACKAGE='Interpolation Intersections_2 Intersections_3 '
|
- PACKAGE='Installation Interpolation Intersections_2 '
|
||||||
- PACKAGE='Interval_skip_list Interval_support Inventor '
|
- PACKAGE='Intersections_3 Interval_skip_list Interval_support '
|
||||||
- PACKAGE='Jet_fitting_3 Kernel_23 Kernel_d '
|
- PACKAGE='Inventor Jet_fitting_3 Kernel_23 '
|
||||||
- PACKAGE='LEDA Linear_cell_complex MacOSX '
|
- PACKAGE='Kernel_d LEDA Linear_cell_complex '
|
||||||
- PACKAGE='Maintenance Matrix_search Mesh_2 '
|
- PACKAGE='MacOSX Maintenance Matrix_search '
|
||||||
- PACKAGE='Mesh_3 Mesher_level Minkowski_sum_2 '
|
- PACKAGE='Mesh_2 Mesh_3 Mesher_level '
|
||||||
- PACKAGE='Minkowski_sum_3 Modifier Modular_arithmetic '
|
- PACKAGE='Minkowski_sum_2 Minkowski_sum_3 Modifier '
|
||||||
- PACKAGE='Nef_2 Nef_3 Nef_S2 '
|
- PACKAGE='Modular_arithmetic Nef_2 Nef_3 '
|
||||||
- PACKAGE='NewKernel_d Number_types OpenNL '
|
- PACKAGE='Nef_S2 NewKernel_d Number_types '
|
||||||
- PACKAGE='Optimal_transportation_reconstruction_2 Optimisation_basic Partition_2 '
|
- PACKAGE='OpenNL Optimal_transportation_reconstruction_2 Optimisation_basic '
|
||||||
- PACKAGE='Periodic_2_triangulation_2 Periodic_3_mesh_3 Periodic_3_triangulation_3 '
|
- PACKAGE='Partition_2 Periodic_2_triangulation_2 Periodic_3_mesh_3 '
|
||||||
- PACKAGE='Point_set_2 Point_set_3 Point_set_processing_3 '
|
- PACKAGE='Periodic_3_triangulation_3 Periodic_4_hyperbolic_triangulation_2 Point_set_2 '
|
||||||
- PACKAGE='Point_set_shape_detection_3 Poisson_surface_reconstruction_3 Polygon '
|
- PACKAGE='Point_set_3 Point_set_processing_3 Point_set_shape_detection_3 '
|
||||||
- PACKAGE='Polygon_mesh_processing Polyhedron Polyhedron_IO '
|
- PACKAGE='Poisson_surface_reconstruction_3 Polygon Polygon_mesh_processing '
|
||||||
- PACKAGE='Polyline_simplification_2 Polynomial Polytope_distance_d '
|
- PACKAGE='Polyhedron Polyhedron_IO Polyline_simplification_2 '
|
||||||
- PACKAGE='Principal_component_analysis Principal_component_analysis_LGPL Profiling_tools '
|
- PACKAGE='Polynomial Polytope_distance_d Principal_component_analysis '
|
||||||
- PACKAGE='Property_map QP_solver Random_numbers '
|
- PACKAGE='Principal_component_analysis_LGPL Profiling_tools Property_map '
|
||||||
- PACKAGE='Ridges_3 Scale_space_reconstruction_3 Scripts '
|
- PACKAGE='QP_solver Random_numbers Ridges_3 '
|
||||||
- PACKAGE='SearchStructures Segment_Delaunay_graph_2 Segment_Delaunay_graph_Linf_2 '
|
- PACKAGE='Scale_space_reconstruction_3 Scripts SearchStructures '
|
||||||
- PACKAGE='Set_movable_separability_2 Skin_surface_3 Snap_rounding_2 '
|
- PACKAGE='Segment_Delaunay_graph_2 Segment_Delaunay_graph_Linf_2 Set_movable_separability_2 '
|
||||||
- PACKAGE='Solver_interface Spatial_searching Spatial_sorting '
|
- PACKAGE='Skin_surface_3 Snap_rounding_2 Solver_interface '
|
||||||
- PACKAGE='STL_Extension Straight_skeleton_2 Stream_lines_2 '
|
- PACKAGE='Spatial_searching Spatial_sorting STL_Extension '
|
||||||
- PACKAGE='Stream_support Subdivision_method_3 Surface_mesh '
|
- PACKAGE='Straight_skeleton_2 Stream_lines_2 Stream_support '
|
||||||
- PACKAGE='Surface_mesh_approximation Surface_mesh_deformation Surface_mesher '
|
- PACKAGE='Subdivision_method_3 Surface_mesh Surface_mesh_approximation '
|
||||||
- PACKAGE='Surface_mesh_parameterization Surface_mesh_segmentation Surface_mesh_shortest_path '
|
- PACKAGE='Surface_mesh_deformation Surface_mesher Surface_mesh_parameterization '
|
||||||
- PACKAGE='Surface_mesh_simplification Surface_mesh_skeletonization Surface_sweep_2 '
|
- PACKAGE='Surface_mesh_segmentation Surface_mesh_shortest_path Surface_mesh_simplification '
|
||||||
- PACKAGE='TDS_2 TDS_3 Testsuite '
|
- PACKAGE='Surface_mesh_skeletonization Surface_sweep_2 TDS_2 '
|
||||||
|
- PACKAGE='TDS_3 TestPackage Testsuite '
|
||||||
- PACKAGE='Three Triangulation Triangulation_2 '
|
- PACKAGE='Three Triangulation Triangulation_2 '
|
||||||
- PACKAGE='Triangulation_3 Union_find Visibility_2 '
|
- PACKAGE='Triangulation_3 Union_find Visibility_2 '
|
||||||
- PACKAGE='Voronoi_diagram_2 wininst '
|
- PACKAGE='Voronoi_diagram_2 wininst '
|
||||||
|
|
@ -55,23 +56,24 @@ compiler: clang
|
||||||
install:
|
install:
|
||||||
- echo "$PWD"
|
- echo "$PWD"
|
||||||
- if [ -n "$TRAVIS_PULL_REQUEST" ] && [ "$PACKAGE" != CHECK ]; then DO_IGNORE=FALSE; for ARG in $(echo "$PACKAGE");do if [ "$ARG" = "Maintenance" ]; then continue; fi; . $PWD/.travis/test_package.sh "$PWD" "$ARG"; echo "DO_IGNORE is $DO_IGNORE"; if [ "$DO_IGNORE" = "FALSE" ]; then break; fi; done; if [ "$DO_IGNORE" = "TRUE" ]; then travis_terminate 0; fi;fi
|
- if [ -n "$TRAVIS_PULL_REQUEST" ] && [ "$PACKAGE" != CHECK ]; then DO_IGNORE=FALSE; for ARG in $(echo "$PACKAGE");do if [ "$ARG" = "Maintenance" ]; then continue; fi; . $PWD/.travis/test_package.sh "$PWD" "$ARG"; echo "DO_IGNORE is $DO_IGNORE"; if [ "$DO_IGNORE" = "FALSE" ]; then break; fi; done; if [ "$DO_IGNORE" = "TRUE" ]; then travis_terminate 0; fi;fi
|
||||||
- bash .travis/install.sh
|
- /usr/bin/time -f 'Spend time of %C -- %E (real)' bash .travis/install.sh
|
||||||
- export CXX=clang++ CC=clang;
|
- export CXX=clang++ CC=clang;
|
||||||
before_script:
|
before_script:
|
||||||
- wget -O doxygen_exe https://cgal.geometryfactory.com/~mgimeno/doxygen_exe
|
- wget -O doxygen_exe https://cgal.geometryfactory.com/~mgimeno/doxygen_exe
|
||||||
- sudo mv doxygen_exe /usr/bin/doxygen
|
- sudo mv doxygen_exe /usr/bin/doxygen
|
||||||
- sudo chmod +x /usr/bin/doxygen
|
- sudo chmod +x /usr/bin/doxygen
|
||||||
- mkdir -p build
|
- mkdir -p build
|
||||||
- cd build
|
- cd build
|
||||||
- cmake -DCMAKE_CXX_FLAGS="-std=c++1y" -DCGAL_HEADER_ONLY=ON -DCMAKE_CXX_FLAGS_RELEASE=-DCGAL_NDEBUG -DWITH_examples=ON -DWITH_demos=ON -DWITH_tests=ON ..
|
- /usr/bin/time -f 'Spend time of %C -- %E (real)' cmake -DCMAKE_CXX_FLAGS="-std=c++1y" -DCGAL_HEADER_ONLY=ON -DCMAKE_CXX_FLAGS_RELEASE=-DCGAL_NDEBUG -DWITH_examples=ON -DWITH_demos=ON -DWITH_tests=ON ..
|
||||||
- make
|
- /usr/bin/time -f 'Spend time of %C -- %E (real)' make
|
||||||
- sudo make install &>/dev/null
|
- /usr/bin/time -f 'Spend time of %C -- %E (real)' sudo make install &>/dev/null
|
||||||
- cd ..
|
- cd ..
|
||||||
script:
|
script:
|
||||||
- cd ./.travis
|
- cd ./.travis
|
||||||
- bash ./build_package.sh $PACKAGE
|
- /usr/bin/time -f 'Spend time of %C -- %E (real)' bash ./build_package.sh $PACKAGE
|
||||||
notifications:
|
notifications:
|
||||||
email:
|
email:
|
||||||
on_success: change # default: always
|
on_success: change
|
||||||
on_failure: always # default: always
|
# default: always
|
||||||
|
on_failure: always
|
||||||
|
# default: always
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,15 @@ set -e
|
||||||
|
|
||||||
CXX_FLAGS="-DCGAL_NDEBUG -ftemplate-backtrace-limit=0"
|
CXX_FLAGS="-DCGAL_NDEBUG -ftemplate-backtrace-limit=0"
|
||||||
|
|
||||||
|
function mytime {
|
||||||
|
/usr/bin/time -f "Spend time of %C: %E (real)" "$@"
|
||||||
|
}
|
||||||
|
|
||||||
function build_examples {
|
function build_examples {
|
||||||
mkdir -p build-travis
|
mkdir -p build-travis
|
||||||
cd build-travis
|
cd build-travis
|
||||||
cmake -DCGAL_DIR="/usr/local/lib/cmake/CGAL" -DCMAKE_CXX_FLAGS="${CXX_FLAGS}" ..
|
mytime cmake -DCGAL_DIR="/usr/local/lib/cmake/CGAL" -DCMAKE_CXX_FLAGS="${CXX_FLAGS}" ..
|
||||||
make -j2
|
mytime make -j2
|
||||||
}
|
}
|
||||||
|
|
||||||
function build_tests {
|
function build_tests {
|
||||||
|
|
@ -24,8 +28,8 @@ function build_demo {
|
||||||
EXTRA_CXX_FLAGS="-Werror=inconsistent-missing-override"
|
EXTRA_CXX_FLAGS="-Werror=inconsistent-missing-override"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
cmake -DCGAL_DIR="/usr/local/lib/cmake/CGAL" -DCGAL_DONT_OVERRIDE_CMAKE_FLAGS:BOOL=ON -DCMAKE_CXX_FLAGS="${CXX_FLAGS} ${EXTRA_CXX_FLAGS}" ..
|
mytime cmake -DCGAL_DIR="/usr/local/lib/cmake/CGAL" -DCGAL_DONT_OVERRIDE_CMAKE_FLAGS:BOOL=ON -DCMAKE_CXX_FLAGS="${CXX_FLAGS} ${EXTRA_CXX_FLAGS}" ..
|
||||||
make -j2
|
mytime make -j2
|
||||||
}
|
}
|
||||||
old_IFS=$IFS
|
old_IFS=$IFS
|
||||||
IFS=$' '
|
IFS=$' '
|
||||||
|
|
@ -42,20 +46,20 @@ cd $ROOT
|
||||||
[ "$ARG" = Polygon_mesh_processing ] || [ "$ARG" = Property_map ] ||\
|
[ "$ARG" = Polygon_mesh_processing ] || [ "$ARG" = Property_map ] ||\
|
||||||
[ "$ARG" = Surface_mesh_deformation ] || [ "$ARG" = Surface_mesh_shortest_path ] ||\
|
[ "$ARG" = Surface_mesh_deformation ] || [ "$ARG" = Surface_mesh_shortest_path ] ||\
|
||||||
[ "$ARG" = Surface_mesh_simplification ]; then
|
[ "$ARG" = Surface_mesh_simplification ]; then
|
||||||
sudo bash .travis/install_openmesh.sh
|
mytime sudo bash .travis/install_openmesh.sh
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
if [ "$ARG" = "CHECK" ]
|
if [ "$ARG" = "CHECK" ]
|
||||||
then
|
then
|
||||||
cd .travis
|
cd .travis
|
||||||
./generate_travis.sh --check
|
mytime ./generate_travis.sh --check
|
||||||
cd ..
|
cd ..
|
||||||
IFS=$old_IFS
|
IFS=$old_IFS
|
||||||
zsh $ROOT/Scripts/developer_scripts/test_merge_of_branch HEAD
|
mytime zsh $ROOT/Scripts/developer_scripts/test_merge_of_branch HEAD
|
||||||
#test dependencies
|
#test dependencies
|
||||||
cd $ROOT
|
cd $ROOT
|
||||||
bash Scripts/developer_scripts/cgal_check_dependencies.sh --check_headers /usr/bin/doxygen
|
mytime bash Scripts/developer_scripts/cgal_check_dependencies.sh --check_headers /usr/bin/doxygen
|
||||||
|
|
||||||
cd .travis
|
cd .travis
|
||||||
#parse current matrix and check that no package has been forgotten
|
#parse current matrix and check that no package has been forgotten
|
||||||
|
|
@ -92,8 +96,8 @@ cd $ROOT
|
||||||
cd $ROOT
|
cd $ROOT
|
||||||
mkdir build_test
|
mkdir build_test
|
||||||
cd build_test
|
cd build_test
|
||||||
cmake -DCMAKE_INSTALL_PREFIX=install/ ..
|
mytime cmake -DCMAKE_INSTALL_PREFIX=install/ ..
|
||||||
make install
|
mytime make install
|
||||||
# test install with minimal downstream example
|
# test install with minimal downstream example
|
||||||
mkdir installtest
|
mkdir installtest
|
||||||
cd installtest
|
cd installtest
|
||||||
|
|
@ -106,7 +110,7 @@ cd $ROOT
|
||||||
echo 'target_link_libraries(${PROJECT_NAME} CGAL::CGAL)' >> CMakeLists.txt
|
echo 'target_link_libraries(${PROJECT_NAME} CGAL::CGAL)' >> CMakeLists.txt
|
||||||
echo '#include "CGAL/remove_outliers.h"' >> main.cpp
|
echo '#include "CGAL/remove_outliers.h"' >> main.cpp
|
||||||
cd build
|
cd build
|
||||||
cmake -DCMAKE_INSTALL_PREFIX=../../install ..
|
mytime cmake -DCMAKE_INSTALL_PREFIX=../../install ..
|
||||||
cd ..
|
cd ..
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
|
|
@ -48,12 +48,12 @@ do
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
echo " matrix: " >> .travis.yml
|
echo " matrix:" >> .travis.yml
|
||||||
#writes the matrix
|
#writes the matrix
|
||||||
echo " - PACKAGE='CHECK' " >> .travis.yml
|
echo " - PACKAGE='CHECK'" >> .travis.yml
|
||||||
for package in ${PACKAGES[@]}
|
for package in ${PACKAGES[@]}
|
||||||
do
|
do
|
||||||
echo " - PACKAGE='$package' " >> .travis.yml
|
echo " - PACKAGE='$package'" >> .travis.yml
|
||||||
done
|
done
|
||||||
|
|
||||||
#writes the end of the file
|
#writes the end of the file
|
||||||
|
|
@ -69,7 +69,6 @@ do
|
||||||
echo "$LINE" >> .travis.yml
|
echo "$LINE" >> .travis.yml
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
echo "" >> .travis.yml
|
|
||||||
IFS=$' '
|
IFS=$' '
|
||||||
#check if there are differences between the files
|
#check if there are differences between the files
|
||||||
if ! cmp -s ./.travis.yml ./.travis.old;
|
if ! cmp -s ./.travis.yml ./.travis.old;
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ do
|
||||||
DONE=1 && sudo -E apt-get -yq --no-install-suggests --no-install-recommends --force-yes install clang zsh \
|
DONE=1 && sudo -E apt-get -yq --no-install-suggests --no-install-recommends --force-yes install clang zsh \
|
||||||
flex bison cmake graphviz libgmp-dev libmpfr-dev libmpfi-dev zlib1g-dev libeigen3-dev libboost-dev \
|
flex bison cmake graphviz libgmp-dev libmpfr-dev libmpfi-dev zlib1g-dev libeigen3-dev libboost-dev \
|
||||||
libboost-system-dev libboost-program-options-dev libboost-thread-dev libboost-iostreams-dev \
|
libboost-system-dev libboost-program-options-dev libboost-thread-dev libboost-iostreams-dev \
|
||||||
qtbase5-dev libqt5opengl5-dev qtscript5-dev libqt5svg5-dev qttools5-dev qttools5-dev-tools qml-module-qtgraphicaleffects libopencv-dev mesa-common-dev libmetis-dev libglu1-mesa-dev \
|
qtbase5-dev libqt5sql5-sqlite libqt5opengl5-dev qtscript5-dev libqt5svg5-dev qttools5-dev qttools5-dev-tools qml-module-qtgraphicaleffects libopencv-dev mesa-common-dev libmetis-dev libglu1-mesa-dev \
|
||||||
|| DONE=0 && sudo apt-get update
|
|| DONE=0 && sudo apt-get update
|
||||||
done
|
done
|
||||||
exit 0
|
exit 0
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ HalfedgeDS
|
||||||
Hash_map
|
Hash_map
|
||||||
Heat_method_3
|
Heat_method_3
|
||||||
Homogeneous_kernel
|
Homogeneous_kernel
|
||||||
|
Hyperbolic_triangulation_2
|
||||||
Inscribed_areas
|
Inscribed_areas
|
||||||
Installation
|
Installation
|
||||||
Interpolation
|
Interpolation
|
||||||
|
|
@ -76,6 +77,7 @@ Partition_2
|
||||||
Periodic_2_triangulation_2
|
Periodic_2_triangulation_2
|
||||||
Periodic_3_mesh_3
|
Periodic_3_mesh_3
|
||||||
Periodic_3_triangulation_3
|
Periodic_3_triangulation_3
|
||||||
|
Periodic_4_hyperbolic_triangulation_2
|
||||||
Point_set_2
|
Point_set_2
|
||||||
Point_set_3
|
Point_set_3
|
||||||
Point_set_processing_3
|
Point_set_processing_3
|
||||||
|
|
@ -123,6 +125,7 @@ Surface_mesh_skeletonization
|
||||||
Surface_sweep_2
|
Surface_sweep_2
|
||||||
TDS_2
|
TDS_2
|
||||||
TDS_3
|
TDS_3
|
||||||
|
TestPackage
|
||||||
Testsuite
|
Testsuite
|
||||||
Three
|
Three
|
||||||
Triangulation
|
Triangulation
|
||||||
|
|
|
||||||
|
|
@ -11,23 +11,24 @@ compiler: clang
|
||||||
install:
|
install:
|
||||||
- echo "$PWD"
|
- echo "$PWD"
|
||||||
- if [ -n "$TRAVIS_PULL_REQUEST" ] && [ "$PACKAGE" != CHECK ]; then DO_IGNORE=FALSE; for ARG in $(echo "$PACKAGE");do if [ "$ARG" = "Maintenance" ]; then continue; fi; . $PWD/.travis/test_package.sh "$PWD" "$ARG"; echo "DO_IGNORE is $DO_IGNORE"; if [ "$DO_IGNORE" = "FALSE" ]; then break; fi; done; if [ "$DO_IGNORE" = "TRUE" ]; then travis_terminate 0; fi;fi
|
- if [ -n "$TRAVIS_PULL_REQUEST" ] && [ "$PACKAGE" != CHECK ]; then DO_IGNORE=FALSE; for ARG in $(echo "$PACKAGE");do if [ "$ARG" = "Maintenance" ]; then continue; fi; . $PWD/.travis/test_package.sh "$PWD" "$ARG"; echo "DO_IGNORE is $DO_IGNORE"; if [ "$DO_IGNORE" = "FALSE" ]; then break; fi; done; if [ "$DO_IGNORE" = "TRUE" ]; then travis_terminate 0; fi;fi
|
||||||
- bash .travis/install.sh
|
- /usr/bin/time -f 'Spend time of %C -- %E (real)' bash .travis/install.sh
|
||||||
- export CXX=clang++ CC=clang;
|
- export CXX=clang++ CC=clang;
|
||||||
before_script:
|
before_script:
|
||||||
- wget -O doxygen_exe https://cgal.geometryfactory.com/~mgimeno/doxygen_exe
|
- wget -O doxygen_exe https://cgal.geometryfactory.com/~mgimeno/doxygen_exe
|
||||||
- sudo mv doxygen_exe /usr/bin/doxygen
|
- sudo mv doxygen_exe /usr/bin/doxygen
|
||||||
- sudo chmod +x /usr/bin/doxygen
|
- sudo chmod +x /usr/bin/doxygen
|
||||||
- mkdir -p build
|
- mkdir -p build
|
||||||
- cd build
|
- cd build
|
||||||
- cmake -DCMAKE_CXX_FLAGS="-std=c++1y" -DCGAL_HEADER_ONLY=ON -DCMAKE_CXX_FLAGS_RELEASE=-DCGAL_NDEBUG -DWITH_examples=ON -DWITH_demos=ON -DWITH_tests=ON ..
|
- /usr/bin/time -f 'Spend time of %C -- %E (real)' cmake -DCMAKE_CXX_FLAGS="-std=c++1y" -DCGAL_HEADER_ONLY=ON -DCMAKE_CXX_FLAGS_RELEASE=-DCGAL_NDEBUG -DWITH_examples=ON -DWITH_demos=ON -DWITH_tests=ON ..
|
||||||
- make
|
- /usr/bin/time -f 'Spend time of %C -- %E (real)' make
|
||||||
- sudo make install &>/dev/null
|
- /usr/bin/time -f 'Spend time of %C -- %E (real)' sudo make install &>/dev/null
|
||||||
- cd ..
|
- cd ..
|
||||||
script:
|
script:
|
||||||
- cd ./.travis
|
- cd ./.travis
|
||||||
- bash ./build_package.sh $PACKAGE
|
- /usr/bin/time -f 'Spend time of %C -- %E (real)' bash ./build_package.sh $PACKAGE
|
||||||
notifications:
|
notifications:
|
||||||
email:
|
email:
|
||||||
on_success: change # default: always
|
on_success: change
|
||||||
on_failure: always # default: always
|
# default: always
|
||||||
|
on_failure: always
|
||||||
|
# default: always
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ if [ ! -f "$2/package_info/$2/dependencies" ];then
|
||||||
echo "No dependencies found for $2"
|
echo "No dependencies found for $2"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
LIST_OF_FILES=$(git diff --name-only origin/master |cut -d/ -f1 |uniq |sort)
|
LIST_OF_FILES=$(git diff --name-only origin/master... |cut -d/ -f1 |uniq |sort)
|
||||||
LIST_OF_DEPS=$(cat "$2/package_info/$2/dependencies")
|
LIST_OF_DEPS=$(cat "$2/package_info/$2/dependencies")
|
||||||
echo "$LIST_OF_DEPS"
|
echo "$LIST_OF_DEPS"
|
||||||
for flie in $LIST_OF_DEPS
|
for flie in $LIST_OF_DEPS
|
||||||
|
|
|
||||||
|
|
@ -22,17 +22,17 @@
|
||||||
|
|
||||||
\cgalClassifedRefPages
|
\cgalClassifedRefPages
|
||||||
|
|
||||||
## Concepts ##
|
\cgalCRPSection{Concepts}
|
||||||
- `AABBPrimitive`
|
- `AABBPrimitive`
|
||||||
- `AABBPrimitiveWithSharedData`
|
- `AABBPrimitiveWithSharedData`
|
||||||
- `AABBTraits`
|
- `AABBTraits`
|
||||||
- `AABBGeomTraits`
|
- `AABBGeomTraits`
|
||||||
|
|
||||||
## Classes ##
|
\cgalCRPSection{Classes}
|
||||||
- `CGAL::AABB_traits<GeomTraits,Primitive>`
|
- `CGAL::AABB_traits<GeomTraits,Primitive>`
|
||||||
- `CGAL::AABB_tree<AT>`
|
- `CGAL::AABB_tree<AT>`
|
||||||
|
|
||||||
## Primitives ##
|
\cgalCRPSection{Primitives}
|
||||||
- `CGAL::AABB_triangle_primitive<GeomTraits, Iterator, CacheDatum>`
|
- `CGAL::AABB_triangle_primitive<GeomTraits, Iterator, CacheDatum>`
|
||||||
- `CGAL::AABB_segment_primitive<GeomTraits, Iterator, CacheDatum>`
|
- `CGAL::AABB_segment_primitive<GeomTraits, Iterator, CacheDatum>`
|
||||||
- `CGAL::AABB_primitive<Id,ObjectPropertyMap,PointPropertyMapPolyhedron,ExternalPropertyMaps,CacheDatum>`
|
- `CGAL::AABB_primitive<Id,ObjectPropertyMap,PointPropertyMapPolyhedron,ExternalPropertyMaps,CacheDatum>`
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,7 @@ void surface_mesh_cache_bbox(const char* fname)
|
||||||
t.start();
|
t.start();
|
||||||
Bbox_pmap bb = tmesh.add_property_map<face_descriptor,Bbox_3>("f:bbox",Bbox_3()).first;
|
Bbox_pmap bb = tmesh.add_property_map<face_descriptor,Bbox_3>("f:bbox",Bbox_3()).first;
|
||||||
|
|
||||||
BOOST_FOREACH(face_descriptor fd, faces(tmesh)){
|
for(face_descriptor fd : faces(tmesh)){
|
||||||
put(bb, fd, bbox(fd,tmesh));
|
put(bb, fd, bbox(fd,tmesh));
|
||||||
}
|
}
|
||||||
Traits traits(bb);
|
Traits traits(bb);
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ int main(int argc, char* argv[])
|
||||||
|
|
||||||
double d = CGAL::Polygon_mesh_processing::is_outward_oriented(mesh)?-1:1;
|
double d = CGAL::Polygon_mesh_processing::is_outward_oriented(mesh)?-1:1;
|
||||||
|
|
||||||
BOOST_FOREACH(face_descriptor fd, faces(mesh)){
|
for(face_descriptor fd : faces(mesh)){
|
||||||
halfedge_descriptor hd = halfedge(fd,mesh);
|
halfedge_descriptor hd = halfedge(fd,mesh);
|
||||||
Point p = CGAL::centroid(mesh.point(source(hd,mesh)),
|
Point p = CGAL::centroid(mesh.point(source(hd,mesh)),
|
||||||
mesh.point(target(hd,mesh)),
|
mesh.point(target(hd,mesh)),
|
||||||
|
|
|
||||||
|
|
@ -60,41 +60,10 @@ template <class Primitive>
|
||||||
struct AABB_traits_base<Primitive,true>{
|
struct AABB_traits_base<Primitive,true>{
|
||||||
typename Primitive::Shared_data m_primitive_data;
|
typename Primitive::Shared_data m_primitive_data;
|
||||||
|
|
||||||
#if !defined(CGAL_CFG_NO_CPP0X_VARIADIC_TEMPLATES) && !defined(CGAL_CFG_NO_CPP0X_RVALUE_REFERENCE)
|
|
||||||
template <typename ... T>
|
template <typename ... T>
|
||||||
void set_shared_data(T&& ... t){
|
void set_shared_data(T&& ... t){
|
||||||
m_primitive_data=Primitive::construct_shared_data(std::forward<T>(t)...);
|
m_primitive_data=Primitive::construct_shared_data(std::forward<T>(t)...);
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
void set_shared_data(){
|
|
||||||
m_primitive_data=Primitive::construct_shared_data();
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T1>
|
|
||||||
void set_shared_data(T1& t1){
|
|
||||||
m_primitive_data=Primitive::construct_shared_data(t1);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T1,class T2>
|
|
||||||
void set_shared_data(T1& t1, T2& t2){
|
|
||||||
m_primitive_data=Primitive::construct_shared_data(t1,t2);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T1,class T2,class T3>
|
|
||||||
void set_shared_data(T1& t1,T2& t2,T3& t3){
|
|
||||||
m_primitive_data=Primitive::construct_shared_data(t1,t2,t3);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T1,class T2,class T3,class T4>
|
|
||||||
void set_shared_data(T1& t1,T2& t2,T3& t3,T4& t4){
|
|
||||||
m_primitive_data=Primitive::construct_shared_data(t1,t2,t3,t4);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T1,class T2,class T3,class T4,class T5>
|
|
||||||
void set_shared_data(T1& t1,T2& t2,T3& t3,T4& t4,T5& t5){
|
|
||||||
m_primitive_data=Primitive::construct_shared_data(t1,t2,t3,t4,t5);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
const typename Primitive::Shared_data& shared_data() const {return m_primitive_data;}
|
const typename Primitive::Shared_data& shared_data() const {return m_primitive_data;}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -396,20 +365,6 @@ public:
|
||||||
public:
|
public:
|
||||||
Intersection(const AABB_traits<GeomTraits,AABBPrimitive,BboxMap>& traits)
|
Intersection(const AABB_traits<GeomTraits,AABBPrimitive,BboxMap>& traits)
|
||||||
:m_traits(traits) {}
|
:m_traits(traits) {}
|
||||||
#if CGAL_INTERSECTION_VERSION < 2
|
|
||||||
template<typename Query>
|
|
||||||
boost::optional<typename AT::Object_and_primitive_id>
|
|
||||||
operator()(const Query& query, const typename AT::Primitive& primitive) const
|
|
||||||
{
|
|
||||||
typedef boost::optional<Object_and_primitive_id> Intersection;
|
|
||||||
|
|
||||||
CGAL::Object object = GeomTraits().intersect_3_object()(internal::Primitive_helper<AT>::get_datum(primitive,m_traits),query);
|
|
||||||
if ( object.empty() )
|
|
||||||
return Intersection();
|
|
||||||
else
|
|
||||||
return Intersection(Object_and_primitive_id(object,primitive.id()));
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
template<typename Query>
|
template<typename Query>
|
||||||
boost::optional< typename Intersection_and_primitive_id<Query>::Type >
|
boost::optional< typename Intersection_and_primitive_id<Query>::Type >
|
||||||
operator()(const Query& query, const typename AT::Primitive& primitive) const {
|
operator()(const Query& query, const typename AT::Primitive& primitive) const {
|
||||||
|
|
@ -419,7 +374,6 @@ public:
|
||||||
return boost::none;
|
return boost::none;
|
||||||
return boost::make_optional( std::make_pair(*inter_res, primitive.id()) );
|
return boost::make_optional( std::make_pair(*inter_res, primitive.id()) );
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Intersection intersection_object() const {return Intersection(*this);}
|
Intersection intersection_object() const {return Intersection(*this);}
|
||||||
|
|
|
||||||
|
|
@ -126,27 +126,10 @@ namespace CGAL {
|
||||||
* @param beyond past-the-end iterator
|
* @param beyond past-the-end iterator
|
||||||
*
|
*
|
||||||
* It is equivalent to constructing an empty tree and calling `insert(first,last,t...)`.
|
* It is equivalent to constructing an empty tree and calling `insert(first,last,t...)`.
|
||||||
* For compilers that do not support variadic templates, overloads up to
|
|
||||||
* 5 template arguments are provided.
|
|
||||||
* The tree stays empty if the memory allocation is not successful.
|
* The tree stays empty if the memory allocation is not successful.
|
||||||
*/
|
*/
|
||||||
#if !defined(CGAL_CFG_NO_CPP0X_VARIADIC_TEMPLATES) && !defined(CGAL_CFG_NO_CPP0X_RVALUE_REFERENCE)
|
|
||||||
template<typename InputIterator,typename ... T>
|
template<typename InputIterator,typename ... T>
|
||||||
AABB_tree(InputIterator first, InputIterator beyond,T&& ...);
|
AABB_tree(InputIterator first, InputIterator beyond,T&& ...);
|
||||||
#else
|
|
||||||
template<typename InputIterator>
|
|
||||||
AABB_tree(InputIterator first, InputIterator beyond);
|
|
||||||
template<typename InputIterator, typename T1>
|
|
||||||
AABB_tree(InputIterator first, InputIterator beyond, T1&);
|
|
||||||
template<typename InputIterator, typename T1, typename T2>
|
|
||||||
AABB_tree(InputIterator first, InputIterator beyond,T1&,T2&);
|
|
||||||
template<typename InputIterator, typename T1, typename T2, typename T3>
|
|
||||||
AABB_tree(InputIterator first, InputIterator beyond,T1&,T2&,T3&);
|
|
||||||
template<typename InputIterator, typename T1, typename T2, typename T3, typename T4>
|
|
||||||
AABB_tree(InputIterator first, InputIterator beyond,T1&,T2&,T3&,T4&);
|
|
||||||
template<typename InputIterator, typename T1, typename T2, typename T3, typename T4, typename T5>
|
|
||||||
AABB_tree(InputIterator first, InputIterator beyond,T1&,T2&,T3&,T4&,T5&);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/// After one or more calls to `insert()` the internal data
|
/// After one or more calls to `insert()` the internal data
|
||||||
/// structure of the tree must be reconstructed. This procedure
|
/// structure of the tree must be reconstructed. This procedure
|
||||||
|
|
@ -158,26 +141,10 @@ namespace CGAL {
|
||||||
/// data structure.
|
/// data structure.
|
||||||
/// A call to `AABBTraits::set_shared_data(t...)`
|
/// A call to `AABBTraits::set_shared_data(t...)`
|
||||||
/// is made using the internally stored traits.
|
/// 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<typename ... T>
|
template<typename ... T>
|
||||||
void build(T&& ...);
|
void build(T&& ...);
|
||||||
#ifndef DOXYGEN_RUNNING
|
#ifndef DOXYGEN_RUNNING
|
||||||
void build();
|
void build();
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
void build();
|
|
||||||
template<typename T1>
|
|
||||||
void build(T1& t1);
|
|
||||||
template<typename T1, typename T2>
|
|
||||||
void build(T1& t1, T2& t2);
|
|
||||||
template<typename T1, typename T2,typename T3>
|
|
||||||
void build(T1& t1, T2& t2, T3& t3);
|
|
||||||
template<typename T1, typename T2,typename T3,typename T4>
|
|
||||||
void build(T1& t1, T2& t2, T3& t3, T4& t4);
|
|
||||||
template<typename T1, typename T2,typename T3,typename T4,typename T5>
|
|
||||||
void build(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5);
|
|
||||||
#endif
|
#endif
|
||||||
///@}
|
///@}
|
||||||
|
|
||||||
|
|
@ -185,25 +152,8 @@ namespace CGAL {
|
||||||
///@{
|
///@{
|
||||||
|
|
||||||
/// Equivalent to calling `clear()` and then `insert(first,last,t...)`.
|
/// Equivalent to calling `clear()` and then `insert(first,last,t...)`.
|
||||||
/// 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<typename ConstPrimitiveIterator,typename ... T>
|
template<typename ConstPrimitiveIterator,typename ... T>
|
||||||
void rebuild(ConstPrimitiveIterator first, ConstPrimitiveIterator beyond,T&& ...);
|
void rebuild(ConstPrimitiveIterator first, ConstPrimitiveIterator beyond,T&& ...);
|
||||||
#else
|
|
||||||
template<typename ConstPrimitiveIterator>
|
|
||||||
void rebuild(ConstPrimitiveIterator first, ConstPrimitiveIterator beyond);
|
|
||||||
template<typename ConstPrimitiveIterator, typename T1>
|
|
||||||
void rebuild(ConstPrimitiveIterator first, ConstPrimitiveIterator beyond, T1&);
|
|
||||||
template<typename ConstPrimitiveIterator, typename T1, typename T2>
|
|
||||||
void rebuild(ConstPrimitiveIterator first, ConstPrimitiveIterator beyond,T1&,T2&);
|
|
||||||
template<typename ConstPrimitiveIterator, typename T1, typename T2, typename T3>
|
|
||||||
void rebuild(ConstPrimitiveIterator first, ConstPrimitiveIterator beyond,T1&,T2&,T3&);
|
|
||||||
template<typename ConstPrimitiveIterator, typename T1, typename T2, typename T3, typename T4>
|
|
||||||
void rebuild(ConstPrimitiveIterator first, ConstPrimitiveIterator beyond,T1&,T2&,T3&,T4&);
|
|
||||||
template<typename ConstPrimitiveIterator, typename T1, typename T2, typename T3, typename T4, typename T5>
|
|
||||||
void rebuild(ConstPrimitiveIterator first, ConstPrimitiveIterator beyond,T1&,T2&,T3&,T4&,T5&);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/// Add a sequence of primitives to the set of primitives of the AABB tree.
|
/// Add a sequence of primitives to the set of primitives of the AABB tree.
|
||||||
|
|
@ -212,25 +162,8 @@ namespace CGAL {
|
||||||
/// `Primitive(%InputIterator, T...)`. If `Primitive` is a model of the concept
|
/// `Primitive(%InputIterator, T...)`. If `Primitive` is a model of the concept
|
||||||
/// `AABBPrimitiveWithSharedData`, a call to `AABBTraits::set_shared_data(t...)`
|
/// `AABBPrimitiveWithSharedData`, a call to `AABBTraits::set_shared_data(t...)`
|
||||||
/// is made using the internally stored traits.
|
/// 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<typename InputIterator,typename ... T>
|
template<typename InputIterator,typename ... T>
|
||||||
void insert(InputIterator first, InputIterator beyond,T&& ...);
|
void insert(InputIterator first, InputIterator beyond,T&& ...);
|
||||||
#else
|
|
||||||
template<typename InputIterator>
|
|
||||||
void insert(InputIterator first, InputIterator beyond);
|
|
||||||
template<typename InputIterator, typename T1>
|
|
||||||
void insert(InputIterator first, InputIterator beyond,T1&);
|
|
||||||
template<typename InputIterator, typename T1, typename T2>
|
|
||||||
void insert(InputIterator first, InputIterator beyond,T1&, T2&);
|
|
||||||
template<typename InputIterator, typename T1, typename T2, typename T3>
|
|
||||||
void insert(InputIterator first, InputIterator beyond,T1&,T2&,T3&);
|
|
||||||
template<typename InputIterator, typename T1, typename T2, typename T3, typename T4>
|
|
||||||
void insert(InputIterator first, InputIterator beyond,T1&,T2&,T3&,T4&);
|
|
||||||
template<typename InputIterator, typename T1, typename T2, typename T3, typename T4, typename T5>
|
|
||||||
void insert(InputIterator first, InputIterator beyond,T1&,T2&,T3&,T4&,T5&);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/// Adds a primitive to the set of primitives of the tree.
|
/// Adds a primitive to the set of primitives of the tree.
|
||||||
inline void insert(const Primitive& p);
|
inline void insert(const Primitive& p);
|
||||||
|
|
@ -274,7 +207,6 @@ namespace CGAL {
|
||||||
///@}
|
///@}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
#if !defined(CGAL_CFG_NO_CPP0X_VARIADIC_TEMPLATES) && !defined(CGAL_CFG_NO_CPP0X_RVALUE_REFERENCE)
|
|
||||||
template <typename ... T>
|
template <typename ... T>
|
||||||
void set_primitive_data_impl(CGAL::Boolean_tag<false>,T ... ){}
|
void set_primitive_data_impl(CGAL::Boolean_tag<false>,T ... ){}
|
||||||
template <typename ... T>
|
template <typename ... T>
|
||||||
|
|
@ -285,64 +217,6 @@ namespace CGAL {
|
||||||
void set_shared_data(T&& ...t){
|
void set_shared_data(T&& ...t){
|
||||||
set_primitive_data_impl(CGAL::Boolean_tag<internal::Has_nested_type_Shared_data<Primitive>::value>(),std::forward<T>(t)...);
|
set_primitive_data_impl(CGAL::Boolean_tag<internal::Has_nested_type_Shared_data<Primitive>::value>(),std::forward<T>(t)...);
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
void set_primitive_data_impl(CGAL::Boolean_tag<false>){}
|
|
||||||
void set_primitive_data_impl(CGAL::Boolean_tag<true>)
|
|
||||||
{m_traits.set_shared_data();}
|
|
||||||
void set_shared_data(){
|
|
||||||
set_primitive_data_impl(CGAL::Boolean_tag<internal::Has_nested_type_Shared_data<Primitive>::value>());
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename T1>
|
|
||||||
void set_primitive_data_impl(CGAL::Boolean_tag<false>,T1){}
|
|
||||||
template <typename T1>
|
|
||||||
void set_primitive_data_impl(CGAL::Boolean_tag<true>,T1& t1)
|
|
||||||
{m_traits.set_shared_data(t1);}
|
|
||||||
template <typename T1>
|
|
||||||
void set_shared_data(T1& t1){
|
|
||||||
set_primitive_data_impl(Boolean_tag<internal::Has_nested_type_Shared_data<Primitive>::value>(),t1);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename T1, typename T2>
|
|
||||||
void set_primitive_data_impl(CGAL::Boolean_tag<false>,T1,T2){}
|
|
||||||
template <typename T1, typename T2>
|
|
||||||
void set_primitive_data_impl(CGAL::Boolean_tag<true>,T1& t1,T2& t2)
|
|
||||||
{m_traits.set_shared_data(t1,t2);}
|
|
||||||
template <typename T1, typename T2>
|
|
||||||
void set_shared_data(const T1& t1,const T2& t2){
|
|
||||||
set_primitive_data_impl(Boolean_tag<internal::Has_nested_type_Shared_data<Primitive>::value>(),t1,t2);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename T1, typename T2, typename T3>
|
|
||||||
void set_primitive_data_impl(CGAL::Boolean_tag<false>,T1,T2,T3){}
|
|
||||||
template <typename T1, typename T2, typename T3>
|
|
||||||
void set_primitive_data_impl(CGAL::Boolean_tag<true>,T1& t1,T2& t2,T3& t3)
|
|
||||||
{m_traits.set_shared_data(t1,t2,t3);}
|
|
||||||
template <typename T1, typename T2, typename T3>
|
|
||||||
void set_shared_data(T1& t1,T2& t2,T3& t3){
|
|
||||||
set_primitive_data_impl(Boolean_tag<internal::Has_nested_type_Shared_data<Primitive>::value>(),t1,t2,t3);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename T1, typename T2, typename T3, typename T4>
|
|
||||||
void set_primitive_data_impl(CGAL::Boolean_tag<false>,T1,T2,T3,T4){}
|
|
||||||
template <typename T1, typename T2, typename T3, typename T4>
|
|
||||||
void set_primitive_data_impl(CGAL::Boolean_tag<true>,T1& t1,T2& t2,T3& t3,T4& t4)
|
|
||||||
{m_traits.set_shared_data(t1,t2,t3,t4);}
|
|
||||||
template <typename T1, typename T2, typename T3, typename T4>
|
|
||||||
void set_shared_data(T1& t1,T2& t2,T3& t3,T4& t4){
|
|
||||||
set_primitive_data_impl(Boolean_tag<internal::Has_nested_type_Shared_data<Primitive>::value>(),t1,t2,t3,t4);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename T1, typename T2, typename T3, typename T4, typename T5>
|
|
||||||
void set_primitive_data_impl(CGAL::Boolean_tag<false>,T1,T2,T3,T4,T5){}
|
|
||||||
template <typename T1, typename T2, typename T3, typename T4, typename T5>
|
|
||||||
void set_primitive_data_impl(CGAL::Boolean_tag<true>,T1& t1,T2& t2,T3& t3,T4& t4,T5& t5)
|
|
||||||
{m_traits.set_shared_data(t1,t2,t3,t4,t5);}
|
|
||||||
template <typename T1, typename T2, typename T3, typename T4, typename T5>
|
|
||||||
void set_shared_data(T1& t1,T2& t2,T3& t3,T4& t4,T5& t5){
|
|
||||||
set_primitive_data_impl(Boolean_tag<internal::Has_nested_type_Shared_data<Primitive>::value>(),t1,t2,t3,t4,t5);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
bool build_kd_tree() const;
|
bool build_kd_tree() const;
|
||||||
template<typename ConstPointIterator>
|
template<typename ConstPointIterator>
|
||||||
|
|
@ -410,11 +284,7 @@ public:
|
||||||
/// for which `do_intersect` predicates
|
/// for which `do_intersect` predicates
|
||||||
/// and intersections are defined in the traits class AABBTraits.
|
/// and intersections are defined in the traits class AABBTraits.
|
||||||
template <typename Query>
|
template <typename Query>
|
||||||
#if CGAL_INTERSECTION_VERSION < 2 && !defined(DOXYGEN_RUNNING)
|
|
||||||
boost::optional<Object_and_primitive_id>
|
|
||||||
#else
|
|
||||||
boost::optional< typename Intersection_and_primitive_id<Query>::Type >
|
boost::optional< typename Intersection_and_primitive_id<Query>::Type >
|
||||||
#endif
|
|
||||||
any_intersection(const Query& query) const;
|
any_intersection(const Query& query) const;
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -429,6 +299,12 @@ public:
|
||||||
/// that returns `true` in order to skip the primitive.
|
/// that returns `true` in order to skip the primitive.
|
||||||
/// Defaults to a functor that always returns `false`.
|
/// Defaults to a functor that always returns `false`.
|
||||||
///
|
///
|
||||||
|
/// \note `skip` might be given some primitives that are not intersected by `query`
|
||||||
|
/// because the intersection test is done after the skip test. Also note that
|
||||||
|
/// the order the primitives are given to `skip` is not necessarily the
|
||||||
|
/// intersection order with `query`.
|
||||||
|
///
|
||||||
|
///
|
||||||
/// `AABBTraits` must be a model of `AABBRayIntersectionTraits` to
|
/// `AABBTraits` must be a model of `AABBRayIntersectionTraits` to
|
||||||
/// call this member function.
|
/// call this member function.
|
||||||
template<typename Ray, typename SkipFunctor>
|
template<typename Ray, typename SkipFunctor>
|
||||||
|
|
@ -738,7 +614,6 @@ public:
|
||||||
, m_need_build(false)
|
, m_need_build(false)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
#if !defined(CGAL_CFG_NO_CPP0X_VARIADIC_TEMPLATES) && !defined(CGAL_CFG_NO_CPP0X_RVALUE_REFERENCE)
|
|
||||||
template<typename Tr>
|
template<typename Tr>
|
||||||
template<typename ConstPrimitiveIterator, typename ... T>
|
template<typename ConstPrimitiveIterator, typename ... T>
|
||||||
AABB_tree<Tr>::AABB_tree(ConstPrimitiveIterator first,
|
AABB_tree<Tr>::AABB_tree(ConstPrimitiveIterator first,
|
||||||
|
|
@ -794,324 +669,6 @@ public:
|
||||||
set_shared_data(std::forward<T>(t)...);
|
set_shared_data(std::forward<T>(t)...);
|
||||||
build();
|
build();
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
//=============constructor======================
|
|
||||||
template<typename Tr>
|
|
||||||
template<typename ConstPrimitiveIterator>
|
|
||||||
AABB_tree<Tr>::AABB_tree(ConstPrimitiveIterator first,
|
|
||||||
ConstPrimitiveIterator beyond)
|
|
||||||
: m_traits()
|
|
||||||
, m_primitives()
|
|
||||||
, m_p_root_node(NULL)
|
|
||||||
, m_p_search_tree(NULL)
|
|
||||||
, m_search_tree_constructed(false)
|
|
||||||
, m_default_search_tree_constructed(false)
|
|
||||||
, m_need_build(false)
|
|
||||||
{
|
|
||||||
// Insert each primitive into tree
|
|
||||||
insert(first, beyond);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename Tr>
|
|
||||||
template<typename ConstPrimitiveIterator, typename T1>
|
|
||||||
AABB_tree<Tr>::AABB_tree(ConstPrimitiveIterator first,
|
|
||||||
ConstPrimitiveIterator beyond,
|
|
||||||
T1& t1)
|
|
||||||
: m_traits()
|
|
||||||
, m_primitives()
|
|
||||||
, m_p_root_node(NULL)
|
|
||||||
, m_p_search_tree(NULL)
|
|
||||||
, m_search_tree_constructed(false)
|
|
||||||
, m_default_search_tree_constructed(false)
|
|
||||||
, m_need_build(false)
|
|
||||||
{
|
|
||||||
// Insert each primitive into tree
|
|
||||||
insert(first, beyond,t1);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename Tr>
|
|
||||||
template<typename ConstPrimitiveIterator, typename T1, typename T2>
|
|
||||||
AABB_tree<Tr>::AABB_tree(ConstPrimitiveIterator first,
|
|
||||||
ConstPrimitiveIterator beyond,
|
|
||||||
T1& t1,T2& t2)
|
|
||||||
: m_traits()
|
|
||||||
, m_primitives()
|
|
||||||
, m_p_root_node(NULL)
|
|
||||||
, m_p_search_tree(NULL)
|
|
||||||
, m_search_tree_constructed(false)
|
|
||||||
, m_default_search_tree_constructed(false)
|
|
||||||
, m_need_build(false)
|
|
||||||
{
|
|
||||||
// Insert each primitive into tree
|
|
||||||
insert(first, beyond,t1,t2);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename Tr>
|
|
||||||
template<typename ConstPrimitiveIterator, typename T1, typename T2, typename T3>
|
|
||||||
AABB_tree<Tr>::AABB_tree(ConstPrimitiveIterator first,
|
|
||||||
ConstPrimitiveIterator beyond,
|
|
||||||
T1& t1,T2& t2,T3& t3)
|
|
||||||
: m_traits()
|
|
||||||
, m_primitives()
|
|
||||||
, m_p_root_node(NULL)
|
|
||||||
, m_p_search_tree(NULL)
|
|
||||||
, m_search_tree_constructed(false)
|
|
||||||
, m_default_search_tree_constructed(false)
|
|
||||||
, m_need_build(false)
|
|
||||||
{
|
|
||||||
// Insert each primitive into tree
|
|
||||||
insert(first, beyond,t1,t2,t3);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename Tr>
|
|
||||||
template<typename ConstPrimitiveIterator, typename T1, typename T2, typename T3, typename T4>
|
|
||||||
AABB_tree<Tr>::AABB_tree(ConstPrimitiveIterator first,
|
|
||||||
ConstPrimitiveIterator beyond,
|
|
||||||
T1& t1,T2& t2,T3& t3,T4& t4)
|
|
||||||
: m_traits()
|
|
||||||
, m_primitives()
|
|
||||||
, m_p_root_node(NULL)
|
|
||||||
, m_p_search_tree(NULL)
|
|
||||||
, m_search_tree_constructed(false)
|
|
||||||
, m_default_search_tree_constructed(false)
|
|
||||||
, m_need_build(false)
|
|
||||||
{
|
|
||||||
// Insert each primitive into tree
|
|
||||||
insert(first, beyond,t1,t2,t3,t4);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename Tr>
|
|
||||||
template<typename ConstPrimitiveIterator, typename T1, typename T2, typename T3, typename T4, typename T5>
|
|
||||||
AABB_tree<Tr>::AABB_tree(ConstPrimitiveIterator first,
|
|
||||||
ConstPrimitiveIterator beyond,
|
|
||||||
T1& t1,T2& t2,T3& t3,T4& t4,T5& t5)
|
|
||||||
: m_traits()
|
|
||||||
, m_primitives()
|
|
||||||
, m_p_root_node(NULL)
|
|
||||||
, m_p_search_tree(NULL)
|
|
||||||
, m_search_tree_constructed(false)
|
|
||||||
, m_default_search_tree_constructed(false)
|
|
||||||
, m_need_build(false)
|
|
||||||
{
|
|
||||||
// Insert each primitive into tree
|
|
||||||
insert(first, beyond,t1,t2,t3,t4,t5);
|
|
||||||
}
|
|
||||||
//=============insert======================
|
|
||||||
template<typename Tr>
|
|
||||||
template<typename ConstPrimitiveIterator>
|
|
||||||
void AABB_tree<Tr>::insert(ConstPrimitiveIterator first,
|
|
||||||
ConstPrimitiveIterator beyond)
|
|
||||||
{
|
|
||||||
set_shared_data();
|
|
||||||
while(first != beyond)
|
|
||||||
{
|
|
||||||
m_primitives.push_back(Primitive(first));
|
|
||||||
++first;
|
|
||||||
}
|
|
||||||
m_need_build = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename Tr>
|
|
||||||
template<typename ConstPrimitiveIterator, typename T1>
|
|
||||||
void AABB_tree<Tr>::insert(ConstPrimitiveIterator first,
|
|
||||||
ConstPrimitiveIterator beyond,
|
|
||||||
T1& t1)
|
|
||||||
{
|
|
||||||
set_shared_data(t1);
|
|
||||||
while(first != beyond)
|
|
||||||
{
|
|
||||||
m_primitives.push_back(Primitive(first,t1));
|
|
||||||
++first;
|
|
||||||
}
|
|
||||||
m_need_build = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename Tr>
|
|
||||||
template<typename ConstPrimitiveIterator, typename T1, typename T2>
|
|
||||||
void AABB_tree<Tr>::insert(ConstPrimitiveIterator first,
|
|
||||||
ConstPrimitiveIterator beyond,
|
|
||||||
T1& t1, T2& t2)
|
|
||||||
{
|
|
||||||
set_shared_data(t1,t2);
|
|
||||||
while(first != beyond)
|
|
||||||
{
|
|
||||||
m_primitives.push_back(Primitive(first,t1,t2));
|
|
||||||
++first;
|
|
||||||
}
|
|
||||||
m_need_build = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename Tr>
|
|
||||||
template<typename ConstPrimitiveIterator, typename T1, typename T2, typename T3>
|
|
||||||
void AABB_tree<Tr>::insert(ConstPrimitiveIterator first,
|
|
||||||
ConstPrimitiveIterator beyond,
|
|
||||||
T1& t1,T2& t2,T3& t3)
|
|
||||||
{
|
|
||||||
set_shared_data(t1,t2,t3);
|
|
||||||
while(first != beyond)
|
|
||||||
{
|
|
||||||
m_primitives.push_back(Primitive(first,t1,t2,t3));
|
|
||||||
++first;
|
|
||||||
}
|
|
||||||
m_need_build = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename Tr>
|
|
||||||
template<typename ConstPrimitiveIterator, typename T1, typename T2, typename T3, typename T4>
|
|
||||||
void AABB_tree<Tr>::insert(ConstPrimitiveIterator first,
|
|
||||||
ConstPrimitiveIterator beyond,
|
|
||||||
T1& t1,T2& t2,T3& t3,T4& t4)
|
|
||||||
{
|
|
||||||
set_shared_data(t1,t2,t3,t4);
|
|
||||||
while(first != beyond)
|
|
||||||
{
|
|
||||||
m_primitives.push_back(Primitive(first,t1,t2,t3,t4));
|
|
||||||
++first;
|
|
||||||
}
|
|
||||||
m_need_build = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename Tr>
|
|
||||||
template<typename ConstPrimitiveIterator, typename T1, typename T2, typename T3, typename T4, typename T5>
|
|
||||||
void AABB_tree<Tr>::insert(ConstPrimitiveIterator first,
|
|
||||||
ConstPrimitiveIterator beyond,
|
|
||||||
T1& t1,T2& t2,T3& t3,T4& t4,T5& t5)
|
|
||||||
{
|
|
||||||
set_shared_data(t1,t2,t3,t4,t5);
|
|
||||||
while(first != beyond)
|
|
||||||
{
|
|
||||||
m_primitives.push_back(Primitive(first,t1,t2,t3,t4,t5));
|
|
||||||
++first;
|
|
||||||
}
|
|
||||||
m_need_build = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
//=============rebuild======================
|
|
||||||
template<typename Tr>
|
|
||||||
template<typename ConstPrimitiveIterator>
|
|
||||||
void AABB_tree<Tr>::rebuild(ConstPrimitiveIterator first,
|
|
||||||
ConstPrimitiveIterator beyond)
|
|
||||||
{
|
|
||||||
// cleanup current tree and internal KD tree
|
|
||||||
clear();
|
|
||||||
|
|
||||||
// inserts primitives
|
|
||||||
insert(first, beyond);
|
|
||||||
|
|
||||||
build();
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename Tr>
|
|
||||||
template<typename ConstPrimitiveIterator, typename T1>
|
|
||||||
void AABB_tree<Tr>::rebuild(ConstPrimitiveIterator first,
|
|
||||||
ConstPrimitiveIterator beyond,
|
|
||||||
T1& t1)
|
|
||||||
{
|
|
||||||
// cleanup current tree and internal KD tree
|
|
||||||
clear();
|
|
||||||
|
|
||||||
// inserts primitives
|
|
||||||
insert(first, beyond,t1);
|
|
||||||
|
|
||||||
build();
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename Tr>
|
|
||||||
template<typename ConstPrimitiveIterator, typename T1, typename T2>
|
|
||||||
void AABB_tree<Tr>::rebuild(ConstPrimitiveIterator first,
|
|
||||||
ConstPrimitiveIterator beyond,
|
|
||||||
T1& t1, T2& t2)
|
|
||||||
{
|
|
||||||
// cleanup current tree and internal KD tree
|
|
||||||
clear();
|
|
||||||
|
|
||||||
// inserts primitives
|
|
||||||
insert(first, beyond,t1,t2);
|
|
||||||
|
|
||||||
build();
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename Tr>
|
|
||||||
template<typename ConstPrimitiveIterator, typename T1, typename T2, typename T3>
|
|
||||||
void AABB_tree<Tr>::rebuild(ConstPrimitiveIterator first,
|
|
||||||
ConstPrimitiveIterator beyond,
|
|
||||||
T1& t1,T2& t2,T3& t3)
|
|
||||||
{
|
|
||||||
// cleanup current tree and internal KD tree
|
|
||||||
clear();
|
|
||||||
|
|
||||||
// inserts primitives
|
|
||||||
insert(first, beyond,t1,t2,t3);
|
|
||||||
|
|
||||||
build();
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename Tr>
|
|
||||||
template<typename ConstPrimitiveIterator, typename T1, typename T2, typename T3, typename T4>
|
|
||||||
void AABB_tree<Tr>::rebuild(ConstPrimitiveIterator first,
|
|
||||||
ConstPrimitiveIterator beyond,
|
|
||||||
T1& t1,T2& t2,T3& t3,T4& t4)
|
|
||||||
{
|
|
||||||
// cleanup current tree and internal KD tree
|
|
||||||
clear();
|
|
||||||
|
|
||||||
// inserts primitives
|
|
||||||
insert(first, beyond,t1,t2,t3,t4);
|
|
||||||
|
|
||||||
build();
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename Tr>
|
|
||||||
template<typename ConstPrimitiveIterator, typename T1, typename T2, typename T3, typename T4, typename T5>
|
|
||||||
void AABB_tree<Tr>::rebuild(ConstPrimitiveIterator first,
|
|
||||||
ConstPrimitiveIterator beyond,
|
|
||||||
T1& t1,T2& t2,T3& t3,T4& t4,T5& t5)
|
|
||||||
{
|
|
||||||
// cleanup current tree and internal KD tree
|
|
||||||
clear();
|
|
||||||
|
|
||||||
// inserts primitives
|
|
||||||
insert(first, beyond,t1,t2,t3,t4,t5);
|
|
||||||
|
|
||||||
build();
|
|
||||||
}
|
|
||||||
//overloads calling set_shared_data()
|
|
||||||
template<typename Tr>
|
|
||||||
template<typename T1>
|
|
||||||
void AABB_tree<Tr>::build(T1& t1)
|
|
||||||
{
|
|
||||||
set_shared_data(t1);
|
|
||||||
build();
|
|
||||||
}
|
|
||||||
template<typename Tr>
|
|
||||||
template<typename T1, typename T2>
|
|
||||||
void AABB_tree<Tr>::build(T1& t1, T2& t2)
|
|
||||||
{
|
|
||||||
set_shared_data(t1, t2);
|
|
||||||
build();
|
|
||||||
}
|
|
||||||
template<typename Tr>
|
|
||||||
template<typename T1, typename T2, typename T3>
|
|
||||||
void AABB_tree<Tr>::build(T1& t1, T2& t2, T3& t3)
|
|
||||||
{
|
|
||||||
set_shared_data(t1, t2, t3);
|
|
||||||
build();
|
|
||||||
}
|
|
||||||
template<typename Tr>
|
|
||||||
template<typename T1, typename T2, typename T3, typename T4>
|
|
||||||
void AABB_tree<Tr>::build(T1& t1, T2& t2, T3& t3, T4& t4)
|
|
||||||
{
|
|
||||||
set_shared_data(t1, t2, t3, t4);
|
|
||||||
build();
|
|
||||||
}
|
|
||||||
template<typename Tr>
|
|
||||||
template<typename T1, typename T2, typename T3, typename T4, typename T5>
|
|
||||||
void AABB_tree<Tr>::build(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5)
|
|
||||||
{
|
|
||||||
set_shared_data(t1, t2, t3, t4, t5);
|
|
||||||
build();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template<typename Tr>
|
template<typename Tr>
|
||||||
void AABB_tree<Tr>::insert(const Primitive& p)
|
void AABB_tree<Tr>::insert(const Primitive& p)
|
||||||
|
|
@ -1285,11 +842,7 @@ public:
|
||||||
|
|
||||||
template <typename Tr>
|
template <typename Tr>
|
||||||
template <typename Query>
|
template <typename Query>
|
||||||
#if CGAL_INTERSECTION_VERSION < 2
|
|
||||||
boost::optional<typename AABB_tree<Tr>::Object_and_primitive_id>
|
|
||||||
#else
|
|
||||||
boost::optional< typename AABB_tree<Tr>::template Intersection_and_primitive_id<Query>::Type >
|
boost::optional< typename AABB_tree<Tr>::template Intersection_and_primitive_id<Query>::Type >
|
||||||
#endif
|
|
||||||
AABB_tree<Tr>::any_intersection(const Query& query) const
|
AABB_tree<Tr>::any_intersection(const Query& query) const
|
||||||
{
|
{
|
||||||
using namespace CGAL::internal::AABB_tree;
|
using namespace CGAL::internal::AABB_tree;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,105 @@
|
||||||
|
// Copyright (c) 2017 GeometryFactory (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
|
||||||
|
// 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: GPL-3.0+
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Author : Jane Tournois
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef CGAL_AABB_TRIANGULATION_3_CELL_PRIMITIVE_H_
|
||||||
|
#define CGAL_AABB_TRIANGULATION_3_CELL_PRIMITIVE_H_
|
||||||
|
|
||||||
|
#include <CGAL/license/AABB_tree.h>
|
||||||
|
|
||||||
|
|
||||||
|
#include <CGAL/AABB_primitive.h>
|
||||||
|
#include <CGAL/result_of.h>
|
||||||
|
#include <iterator>
|
||||||
|
|
||||||
|
namespace CGAL
|
||||||
|
{
|
||||||
|
namespace internal
|
||||||
|
{
|
||||||
|
template <class GeomTraits, class Iterator>
|
||||||
|
struct Point_from_cell_iterator_proprety_map
|
||||||
|
{
|
||||||
|
//classical typedefs
|
||||||
|
typedef Iterator key_type;
|
||||||
|
typedef typename GeomTraits::Point_3 value_type;
|
||||||
|
typedef typename cpp11::result_of<
|
||||||
|
typename GeomTraits::Construct_vertex_3(typename GeomTraits::Tetrahedron_3, int)
|
||||||
|
>::type reference;
|
||||||
|
typedef boost::readable_property_map_tag category;
|
||||||
|
|
||||||
|
inline friend
|
||||||
|
typename Point_from_cell_iterator_proprety_map<GeomTraits, Iterator>::reference
|
||||||
|
get(Point_from_cell_iterator_proprety_map<GeomTraits, Iterator>, Iterator it)
|
||||||
|
{
|
||||||
|
typename GeomTraits::Construct_point_3 point;
|
||||||
|
return point(it->vertex(1)->point());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class GeomTraits, class Iterator>
|
||||||
|
struct Tet_from_cell_iterator_proprety_map
|
||||||
|
{
|
||||||
|
//classical typedefs
|
||||||
|
typedef Iterator key_type;
|
||||||
|
typedef typename GeomTraits::Tetrahedron_3 value_type;
|
||||||
|
typedef value_type reference;
|
||||||
|
typedef boost::readable_property_map_tag category;
|
||||||
|
|
||||||
|
inline friend
|
||||||
|
reference
|
||||||
|
get(Tet_from_cell_iterator_proprety_map<GeomTraits, Iterator>, key_type it)
|
||||||
|
{
|
||||||
|
typename GeomTraits::Construct_point_3 point;
|
||||||
|
return value_type(point(it->vertex(0)->point()),
|
||||||
|
point(it->vertex(1)->point()),
|
||||||
|
point(it->vertex(2)->point()),
|
||||||
|
point(it->vertex(3)->point()));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
}//namespace internal
|
||||||
|
|
||||||
|
|
||||||
|
template < class GeomTraits,
|
||||||
|
class Tr,
|
||||||
|
class CacheDatum = Tag_false,
|
||||||
|
class Handle = typename Tr::Cell_handle>
|
||||||
|
class AABB_triangulation_3_cell_primitive
|
||||||
|
#ifndef DOXYGEN_RUNNING
|
||||||
|
: public AABB_primitive< Handle,
|
||||||
|
internal::Tet_from_cell_iterator_proprety_map<GeomTraits, Handle>,
|
||||||
|
internal::Point_from_cell_iterator_proprety_map<GeomTraits, Handle>,
|
||||||
|
Tag_false,
|
||||||
|
CacheDatum >
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
typedef AABB_primitive< Handle,
|
||||||
|
internal::Tet_from_cell_iterator_proprety_map<GeomTraits, Handle>,
|
||||||
|
internal::Point_from_cell_iterator_proprety_map<GeomTraits, Handle>,
|
||||||
|
Tag_false,
|
||||||
|
CacheDatum > Base;
|
||||||
|
public:
|
||||||
|
AABB_triangulation_3_cell_primitive(Handle h) : Base(h){} };
|
||||||
|
|
||||||
|
} // end namespace CGAL
|
||||||
|
|
||||||
|
|
||||||
|
#endif // CGAL_AABB_TRIANGULATION_3_CELL_PRIMITIVE_H_
|
||||||
|
|
@ -188,7 +188,14 @@ private:
|
||||||
|
|
||||||
struct as_ray_param_visitor {
|
struct as_ray_param_visitor {
|
||||||
typedef FT result_type;
|
typedef FT result_type;
|
||||||
as_ray_param_visitor(const Ray* ray) : ray(ray) {}
|
as_ray_param_visitor(const Ray* ray)
|
||||||
|
: ray(ray), max_i(0)
|
||||||
|
{
|
||||||
|
typename AABB_traits::Geom_traits::Vector_3 v = ray->to_vector();
|
||||||
|
for (int i=1; i<3; ++i)
|
||||||
|
if( CGAL::abs(v[i]) > CGAL::abs(v[max_i]) )
|
||||||
|
max_i = i;
|
||||||
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
FT operator()(const T& s)
|
FT operator()(const T& s)
|
||||||
|
|
@ -204,16 +211,11 @@ private:
|
||||||
typename AABB_traits::Geom_traits::Vector_3 x(ray->source(), point);
|
typename AABB_traits::Geom_traits::Vector_3 x(ray->source(), point);
|
||||||
typename AABB_traits::Geom_traits::Vector_3 v = ray->to_vector();
|
typename AABB_traits::Geom_traits::Vector_3 v = ray->to_vector();
|
||||||
|
|
||||||
for(int i = 0; i < 3; ++i) {
|
return x[max_i] / v[max_i];
|
||||||
if(v[i] != FT(0.)) {
|
|
||||||
return x[i] / v[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
CGAL_assertion(false); // should never end-up here
|
|
||||||
return FT(0.);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const Ray* ray;
|
const Ray* ray;
|
||||||
|
int max_i;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -65,6 +65,7 @@ namespace CGAL
|
||||||
m_id = rhs.m_id;
|
m_id = rhs.m_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Decorated_point& operator=(const Decorated_point&)=default;
|
||||||
private:
|
private:
|
||||||
Id m_id;
|
Id m_id;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -78,11 +78,7 @@ class First_intersection_traits
|
||||||
|
|
||||||
public:
|
public:
|
||||||
typedef
|
typedef
|
||||||
#if CGAL_INTERSECTION_VERSION < 2
|
|
||||||
boost::optional<Object_and_primitive_id>
|
|
||||||
#else
|
|
||||||
boost::optional< typename AABBTraits::template Intersection_and_primitive_id<Query>::Type >
|
boost::optional< typename AABBTraits::template Intersection_and_primitive_id<Query>::Type >
|
||||||
#endif
|
|
||||||
Result;
|
Result;
|
||||||
public:
|
public:
|
||||||
First_intersection_traits(const AABBTraits& traits)
|
First_intersection_traits(const AABBTraits& traits)
|
||||||
|
|
@ -137,11 +133,7 @@ public:
|
||||||
|
|
||||||
void intersection(const Query& query, const Primitive& primitive)
|
void intersection(const Query& query, const Primitive& primitive)
|
||||||
{
|
{
|
||||||
#if CGAL_INTERSECTION_VERSION < 2
|
|
||||||
boost::optional<Object_and_primitive_id>
|
|
||||||
#else
|
|
||||||
boost::optional< typename AABBTraits::template Intersection_and_primitive_id<Query>::Type >
|
boost::optional< typename AABBTraits::template Intersection_and_primitive_id<Query>::Type >
|
||||||
#endif
|
|
||||||
intersection = m_traits.intersection_object()(query, primitive);
|
intersection = m_traits.intersection_object()(query, primitive);
|
||||||
|
|
||||||
if(intersection)
|
if(intersection)
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@
|
||||||
#include <CGAL/AABB_face_graph_triangle_primitive.h>
|
#include <CGAL/AABB_face_graph_triangle_primitive.h>
|
||||||
#include <CGAL/AABB_halfedge_graph_segment_primitive.h>
|
#include <CGAL/AABB_halfedge_graph_segment_primitive.h>
|
||||||
#include <CGAL/Polyhedron_3.h>
|
#include <CGAL/Polyhedron_3.h>
|
||||||
|
#include <CGAL/Timer.h>
|
||||||
|
|
||||||
#include <CGAL/disable_warnings.h>
|
#include <CGAL/disable_warnings.h>
|
||||||
|
|
||||||
|
|
@ -103,17 +104,9 @@ void test_all_intersection_query_types(Tree& tree)
|
||||||
tree.all_intersected_primitives(segment,std::back_inserter(primitives));
|
tree.all_intersected_primitives(segment,std::back_inserter(primitives));
|
||||||
|
|
||||||
// any_intersection
|
// any_intersection
|
||||||
#if CGAL_INTERSECTION_VERSION < 2
|
|
||||||
typedef typename Tree::Object_and_primitive_id Object_and_primitive_id;
|
|
||||||
boost::optional<Object_and_primitive_id> optional_object_and_primitive;
|
|
||||||
optional_object_and_primitive = tree.any_intersection(ray);
|
|
||||||
optional_object_and_primitive = tree.any_intersection(line);
|
|
||||||
optional_object_and_primitive = tree.any_intersection(segment);
|
|
||||||
#else
|
|
||||||
boost::optional< typename Tree::AABB_traits::template Intersection_and_primitive_id<Ray>::Type > r = tree.any_intersection(ray);
|
boost::optional< typename Tree::AABB_traits::template Intersection_and_primitive_id<Ray>::Type > r = tree.any_intersection(ray);
|
||||||
boost::optional< typename Tree::AABB_traits::template Intersection_and_primitive_id<Line>::Type > l = tree.any_intersection(line);
|
boost::optional< typename Tree::AABB_traits::template Intersection_and_primitive_id<Line>::Type > l = tree.any_intersection(line);
|
||||||
boost::optional< typename Tree::AABB_traits::template Intersection_and_primitive_id<Segment>::Type > s = tree.any_intersection(segment);
|
boost::optional< typename Tree::AABB_traits::template Intersection_and_primitive_id<Segment>::Type > s = tree.any_intersection(segment);
|
||||||
#endif
|
|
||||||
|
|
||||||
// any_intersected_primitive
|
// any_intersected_primitive
|
||||||
boost::optional<typename Primitive::Id> optional_primitive;
|
boost::optional<typename Primitive::Id> optional_primitive;
|
||||||
|
|
@ -122,19 +115,12 @@ void test_all_intersection_query_types(Tree& tree)
|
||||||
optional_primitive = tree.any_intersected_primitive(segment);
|
optional_primitive = tree.any_intersected_primitive(segment);
|
||||||
|
|
||||||
// all_intersections
|
// all_intersections
|
||||||
#if CGAL_INTERSECTION_VERSION < 2
|
|
||||||
std::list<Object_and_primitive_id> intersections;
|
|
||||||
tree.all_intersections(ray,std::back_inserter(intersections));
|
|
||||||
tree.all_intersections(line,std::back_inserter(intersections));
|
|
||||||
tree.all_intersections(segment,std::back_inserter(intersections));
|
|
||||||
#else
|
|
||||||
std::list< boost::optional< typename Tree::AABB_traits::template Intersection_and_primitive_id<Ray>::Type > > intersections_r;
|
std::list< boost::optional< typename Tree::AABB_traits::template Intersection_and_primitive_id<Ray>::Type > > intersections_r;
|
||||||
std::list< boost::optional< typename Tree::AABB_traits::template Intersection_and_primitive_id<Line>::Type > > intersections_l;
|
std::list< boost::optional< typename Tree::AABB_traits::template Intersection_and_primitive_id<Line>::Type > > intersections_l;
|
||||||
std::list< boost::optional< typename Tree::AABB_traits::template Intersection_and_primitive_id<Segment>::Type > > intersections_s;
|
std::list< boost::optional< typename Tree::AABB_traits::template Intersection_and_primitive_id<Segment>::Type > > intersections_s;
|
||||||
tree.all_intersections(ray,std::back_inserter(intersections_r));
|
tree.all_intersections(ray,std::back_inserter(intersections_r));
|
||||||
tree.all_intersections(line,std::back_inserter(intersections_l));
|
tree.all_intersections(line,std::back_inserter(intersections_l));
|
||||||
tree.all_intersections(segment,std::back_inserter(intersections_s));
|
tree.all_intersections(segment,std::back_inserter(intersections_s));
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -403,13 +389,8 @@ public:
|
||||||
Polyhedron_primitive_iterator it = Pr_generator().begin(p);
|
Polyhedron_primitive_iterator it = Pr_generator().begin(p);
|
||||||
for ( ; it != Pr_generator().end(p) ; ++it )
|
for ( ; it != Pr_generator().end(p) ; ++it )
|
||||||
{
|
{
|
||||||
#if CGAL_INTERSECTION_VERSION < 2
|
|
||||||
Intersection_result
|
|
||||||
intersection = Traits().intersection_object()(query, Pr(it,p));
|
|
||||||
#else
|
|
||||||
boost::optional< typename Traits::template Intersection_and_primitive_id<Query>::Type >
|
boost::optional< typename Traits::template Intersection_and_primitive_id<Query>::Type >
|
||||||
intersection = m_traits.intersection_object()(query, Pr(it,p));
|
intersection = m_traits.intersection_object()(query, Pr(it,p));
|
||||||
#endif
|
|
||||||
if ( intersection )
|
if ( intersection )
|
||||||
*out++ = *intersection;
|
*out++ = *intersection;
|
||||||
}
|
}
|
||||||
|
|
@ -716,11 +697,7 @@ private:
|
||||||
const Naive_implementation& naive) const
|
const Naive_implementation& naive) const
|
||||||
{
|
{
|
||||||
typedef
|
typedef
|
||||||
#if CGAL_INTERSECTION_VERSION < 2
|
|
||||||
Object_and_primitive_id
|
|
||||||
#else
|
|
||||||
typename Tree::AABB_traits::template Intersection_and_primitive_id<Query>::Type
|
typename Tree::AABB_traits::template Intersection_and_primitive_id<Query>::Type
|
||||||
#endif
|
|
||||||
Obj_type;
|
Obj_type;
|
||||||
|
|
||||||
typedef
|
typedef
|
||||||
|
|
@ -758,11 +735,7 @@ private:
|
||||||
}
|
}
|
||||||
|
|
||||||
// Any intersection test (do not count time here)
|
// Any intersection test (do not count time here)
|
||||||
#if CGAL_INTERSECTION_VERSION < 2
|
|
||||||
boost::optional<Object_and_primitive_id>
|
|
||||||
#else
|
|
||||||
boost::optional< typename Tree::AABB_traits::template Intersection_and_primitive_id<Query>::Type >
|
boost::optional< typename Tree::AABB_traits::template Intersection_and_primitive_id<Query>::Type >
|
||||||
#endif
|
|
||||||
intersection = tree.any_intersection(query);
|
intersection = tree.any_intersection(query);
|
||||||
|
|
||||||
// Check: verify we do get the result by naive method
|
// Check: verify we do get the result by naive method
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,3 @@
|
||||||
#define CGAL_INTERSECTION_VERSION 2
|
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
@ -40,11 +38,7 @@ struct FilterP {
|
||||||
template<typename ForwardIterator, typename Tree>
|
template<typename ForwardIterator, typename Tree>
|
||||||
std::size_t intersect(ForwardIterator b, ForwardIterator e, const Tree& tree, long& counter) {
|
std::size_t intersect(ForwardIterator b, ForwardIterator e, const Tree& tree, long& counter) {
|
||||||
typedef
|
typedef
|
||||||
#if CGAL_INTERSECTION_VERSION < 2
|
|
||||||
typename Tree::Object_and_primitive_id
|
|
||||||
#else
|
|
||||||
typename Tree::AABB_traits::template Intersection_and_primitive_id<typename ForwardIterator::value_type>::Type
|
typename Tree::AABB_traits::template Intersection_and_primitive_id<typename ForwardIterator::value_type>::Type
|
||||||
#endif
|
|
||||||
Obj_type;
|
Obj_type;
|
||||||
|
|
||||||
std::vector<Obj_type> v;
|
std::vector<Obj_type> v;
|
||||||
|
|
@ -84,7 +78,7 @@ boost::tuple<std::size_t, std::size_t, std::size_t, long> test(const char* name)
|
||||||
|
|
||||||
std::vector<Point> points;
|
std::vector<Point> points;
|
||||||
points.reserve(elements * 2);
|
points.reserve(elements * 2);
|
||||||
CGAL::cpp11::copy_n(g, elements * 2, std::back_inserter(points));
|
std::copy_n(g, elements * 2, std::back_inserter(points));
|
||||||
|
|
||||||
// generate a bunch of happy random primitives
|
// generate a bunch of happy random primitives
|
||||||
std::vector<Line> lines;
|
std::vector<Line> lines;
|
||||||
|
|
|
||||||
|
|
@ -26,9 +26,6 @@
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
#include <CGAL/Timer.h>
|
|
||||||
|
|
||||||
#include <CGAL/Cartesian.h>
|
|
||||||
#include <CGAL/Simple_cartesian.h>
|
#include <CGAL/Simple_cartesian.h>
|
||||||
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,10 +25,8 @@
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <CGAL/Timer.h>
|
|
||||||
|
|
||||||
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
||||||
#include <CGAL/Cartesian.h>
|
|
||||||
#include <CGAL/Simple_cartesian.h>
|
#include <CGAL/Simple_cartesian.h>
|
||||||
|
|
||||||
#include <CGAL/AABB_tree.h>
|
#include <CGAL/AABB_tree.h>
|
||||||
|
|
|
||||||
|
|
@ -28,14 +28,12 @@
|
||||||
#include <CGAL/Timer.h>
|
#include <CGAL/Timer.h>
|
||||||
|
|
||||||
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
||||||
#include <CGAL/Cartesian.h>
|
|
||||||
#include <CGAL/Simple_cartesian.h>
|
#include <CGAL/Simple_cartesian.h>
|
||||||
|
|
||||||
#include <CGAL/AABB_tree.h>
|
#include <CGAL/AABB_tree.h>
|
||||||
#include <CGAL/AABB_traits.h>
|
#include <CGAL/AABB_traits.h>
|
||||||
#include <CGAL/Polyhedron_3.h>
|
#include <CGAL/Polyhedron_3.h>
|
||||||
|
|
||||||
|
|
||||||
#include <CGAL/spatial_sort.h>
|
#include <CGAL/spatial_sort.h>
|
||||||
|
|
||||||
#include "AABB_test_util.h"
|
#include "AABB_test_util.h"
|
||||||
|
|
|
||||||
|
|
@ -24,8 +24,6 @@
|
||||||
//
|
//
|
||||||
//******************************************************************************
|
//******************************************************************************
|
||||||
|
|
||||||
#define CGAL_INTERSECTION_VERSION 1
|
|
||||||
|
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -24,8 +24,6 @@
|
||||||
//
|
//
|
||||||
//******************************************************************************
|
//******************************************************************************
|
||||||
|
|
||||||
#define CGAL_INTERSECTION_VERSION 2
|
|
||||||
|
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -109,8 +109,8 @@ int main()
|
||||||
const double r = max_extent / 2;
|
const double r = max_extent / 2;
|
||||||
// Generate NB_RAYS*2 points that lie on a sphere of radius r, centered around bbox_center
|
// Generate NB_RAYS*2 points that lie on a sphere of radius r, centered around bbox_center
|
||||||
CGAL::Random rand = CGAL::Random(23); // fix the seed to yield the same results each run
|
CGAL::Random rand = CGAL::Random(23); // fix the seed to yield the same results each run
|
||||||
CGAL::cpp11::copy_n(CGAL::Random_points_on_sphere_3<Point>(r, rand), NB_RAYS, std::back_inserter(v1));
|
std::copy_n(CGAL::Random_points_on_sphere_3<Point>(r, rand), NB_RAYS, std::back_inserter(v1));
|
||||||
CGAL::cpp11::copy_n(CGAL::Random_points_on_sphere_3<Point>(r, rand), NB_RAYS, std::back_inserter(v2));
|
std::copy_n(CGAL::Random_points_on_sphere_3<Point>(r, rand), NB_RAYS, std::back_inserter(v2));
|
||||||
|
|
||||||
for(std::vector<Point>::iterator it = v1.begin(); it != v1.end(); ++it) {
|
for(std::vector<Point>::iterator it = v1.begin(); it != v1.end(); ++it) {
|
||||||
*it = *it + bbox_center;
|
*it = *it + bbox_center;
|
||||||
|
|
|
||||||
|
|
@ -25,13 +25,13 @@ of topological singularities. }
|
||||||
|
|
||||||
\cgalClassifedRefPages
|
\cgalClassifedRefPages
|
||||||
|
|
||||||
## Classes ##
|
\cgalCRPSection{Classes}
|
||||||
|
|
||||||
- `CGAL::Advancing_front_surface_reconstruction`
|
- `CGAL::Advancing_front_surface_reconstruction`
|
||||||
- `CGAL::Advancing_front_surface_reconstruction_vertex_base_3`
|
- `CGAL::Advancing_front_surface_reconstruction_vertex_base_3`
|
||||||
- `CGAL::Advancing_front_surface_reconstruction_cell_base_3`
|
- `CGAL::Advancing_front_surface_reconstruction_cell_base_3`
|
||||||
|
|
||||||
## Functions ##
|
\cgalCRPSection{Functions}
|
||||||
|
|
||||||
- `CGAL::advancing_front_surface_reconstruction()`
|
- `CGAL::advancing_front_surface_reconstruction()`
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,10 +10,6 @@ find_package(CGAL QUIET)
|
||||||
|
|
||||||
if ( CGAL_FOUND )
|
if ( CGAL_FOUND )
|
||||||
|
|
||||||
if (MSVC AND ( CMAKE_SIZEOF_VOID_P EQUAL 4 ) )
|
|
||||||
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4244")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# create a target per cppfile
|
# create a target per cppfile
|
||||||
file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
|
file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
|
||||||
foreach(cppfile ${cppfiles})
|
foreach(cppfile ${cppfiles})
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
||||||
#include <CGAL/Advancing_front_surface_reconstruction.h>
|
#include <CGAL/Advancing_front_surface_reconstruction.h>
|
||||||
#include <boost/foreach.hpp>
|
|
||||||
|
|
||||||
struct Perimeter {
|
struct Perimeter {
|
||||||
|
|
||||||
|
|
@ -64,15 +63,15 @@ int main(int argc, char* argv[])
|
||||||
reconstruction.run();
|
reconstruction.run();
|
||||||
|
|
||||||
std::cout << reconstruction.number_of_outliers() << " outliers:\n" << std::endl;
|
std::cout << reconstruction.number_of_outliers() << " outliers:\n" << std::endl;
|
||||||
BOOST_FOREACH(const Point_3& p, reconstruction.outliers()){
|
for(const Point_3& p : reconstruction.outliers()){
|
||||||
std::cout << p << std::endl;
|
std::cout << p << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::cout << "Boundaries:" << std::endl ;
|
std::cout << "Boundaries:" << std::endl ;
|
||||||
BOOST_FOREACH(const Vertex_on_boundary_range & vobr, reconstruction.boundaries()){
|
for(const Vertex_on_boundary_range& vobr : reconstruction.boundaries()){
|
||||||
std::cout << "boundary\n";
|
std::cout << "boundary\n";
|
||||||
// As we use BOOST_FOREACH we do not use the type Boundary_range
|
// As we use range-base loop we do not use the type Boundary_range
|
||||||
BOOST_FOREACH(Vertex_handle v, vobr){
|
for(Vertex_handle v : vobr){
|
||||||
std::cout << v->point() << std::endl;
|
std::cout << v->point() << std::endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
typedef CGAL::Simple_cartesian<double> K;
|
typedef CGAL::Simple_cartesian<double> K;
|
||||||
typedef K::Point_3 Point_3;
|
typedef K::Point_3 Point_3;
|
||||||
|
|
||||||
typedef CGAL::cpp11::array<std::size_t,3> Facet;
|
typedef std::array<std::size_t,3> Facet;
|
||||||
|
|
||||||
namespace std {
|
namespace std {
|
||||||
std::ostream&
|
std::ostream&
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ typedef CGAL::Triangulation_data_structure_3<LVb,LCb> Tds;
|
||||||
typedef CGAL::Delaunay_triangulation_3<Kernel,Tds> Triangulation_3;
|
typedef CGAL::Delaunay_triangulation_3<Kernel,Tds> Triangulation_3;
|
||||||
typedef Triangulation_3::Vertex_handle Vertex_handle;
|
typedef Triangulation_3::Vertex_handle Vertex_handle;
|
||||||
|
|
||||||
typedef CGAL::cpp11::array<std::size_t,3> Facet;
|
typedef std::array<std::size_t,3> Facet;
|
||||||
|
|
||||||
|
|
||||||
// Functor to init the advancing front algorithm with indexed points
|
// Functor to init the advancing front algorithm with indexed points
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
#include <CGAL/array.h>
|
#include <CGAL/array.h>
|
||||||
#include <CGAL/disable_warnings.h>
|
#include <CGAL/disable_warnings.h>
|
||||||
|
|
||||||
typedef CGAL::cpp11::array<std::size_t,3> Facet;
|
typedef std::array<std::size_t,3> Facet;
|
||||||
|
|
||||||
typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel;
|
typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel;
|
||||||
typedef Kernel::Point_3 Point_3;
|
typedef Kernel::Point_3 Point_3;
|
||||||
|
|
|
||||||
|
|
@ -2488,7 +2488,7 @@ namespace CGAL {
|
||||||
\tparam PointInputIterator must be an input iterator with 3D points as value type. This point type must
|
\tparam PointInputIterator must be an input iterator with 3D points as value type. This point type must
|
||||||
be convertible to `Exact_predicates_inexact_constructions_kernel::Point_3` with the `Cartesian_converter`.
|
be convertible to `Exact_predicates_inexact_constructions_kernel::Point_3` with the `Cartesian_converter`.
|
||||||
\tparam IndicesOutputIterator must be an output iterator to which
|
\tparam IndicesOutputIterator must be an output iterator to which
|
||||||
`CGAL::cpp11::array<std::size_t, 3>` can be assigned.
|
`std::array<std::size_t, 3>` can be assigned.
|
||||||
|
|
||||||
\param b iterator on the first point of the sequence
|
\param b iterator on the first point of the sequence
|
||||||
\param e past the end iterator of the point sequence
|
\param e past the end iterator of the point sequence
|
||||||
|
|
@ -2540,7 +2540,7 @@ namespace CGAL {
|
||||||
\tparam PointInputIterator must be an input iterator with 3D points as value type. This point type must
|
\tparam PointInputIterator must be an input iterator with 3D points as value type. This point type must
|
||||||
be convertible to `Exact_predicates_inexact_constructions_kernel::Point_3` with the `Cartesian_converter`.
|
be convertible to `Exact_predicates_inexact_constructions_kernel::Point_3` with the `Cartesian_converter`.
|
||||||
\tparam IndicesOutputIterator must be an output iterator to which
|
\tparam IndicesOutputIterator must be an output iterator to which
|
||||||
`CGAL::cpp11::array<std::size_t, 3>` can be assigned.
|
`std::array<std::size_t, 3>` can be assigned.
|
||||||
\tparam Priority must be a functor with `double operator()(AdvancingFront,Cell_handle,int)` returning the
|
\tparam Priority must be a functor with `double operator()(AdvancingFront,Cell_handle,int)` returning the
|
||||||
priority of the facet `(Cell_handle,int)`.
|
priority of the facet `(Cell_handle,int)`.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
typedef CGAL::Simple_cartesian<double> K;
|
typedef CGAL::Simple_cartesian<double> K;
|
||||||
|
|
||||||
|
|
||||||
typedef CGAL::cpp11::array<std::size_t,3> Facet;
|
typedef std::array<std::size_t,3> Facet;
|
||||||
|
|
||||||
namespace std {
|
namespace std {
|
||||||
std::ostream&
|
std::ostream&
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
typedef CGAL::Simple_cartesian<double> K;
|
typedef CGAL::Simple_cartesian<double> K;
|
||||||
typedef K::Point_3 Point_3;
|
typedef K::Point_3 Point_3;
|
||||||
|
|
||||||
typedef CGAL::cpp11::array<std::size_t,3> Facet;
|
typedef std::array<std::size_t,3> Facet;
|
||||||
|
|
||||||
namespace std {
|
namespace std {
|
||||||
std::ostream&
|
std::ostream&
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ typedef K::Point_3 Point_3;
|
||||||
|
|
||||||
typedef CGAL::Polyhedron_3<K> Polyhedron;
|
typedef CGAL::Polyhedron_3<K> Polyhedron;
|
||||||
|
|
||||||
typedef CGAL::cpp11::array<std::size_t,3> Facet;
|
typedef std::array<std::size_t,3> Facet;
|
||||||
|
|
||||||
namespace std {
|
namespace std {
|
||||||
std::ostream&
|
std::ostream&
|
||||||
|
|
|
||||||
|
|
@ -23,9 +23,9 @@
|
||||||
|
|
||||||
\cgalClassifedRefPages
|
\cgalClassifedRefPages
|
||||||
|
|
||||||
## Algebraic Structures ##
|
\cgalCRPSection{Algebraic Structures}
|
||||||
|
|
||||||
### Concepts ###
|
\cgalCRPSubsection{Concepts}
|
||||||
|
|
||||||
- `IntegralDomainWithoutDivision`
|
- `IntegralDomainWithoutDivision`
|
||||||
- `IntegralDomain`
|
- `IntegralDomain`
|
||||||
|
|
@ -54,7 +54,7 @@
|
||||||
- `AlgebraicStructureTraits_::KthRoot`
|
- `AlgebraicStructureTraits_::KthRoot`
|
||||||
- `AlgebraicStructureTraits_::RootOf`
|
- `AlgebraicStructureTraits_::RootOf`
|
||||||
|
|
||||||
### Classes ###
|
\cgalCRPSubsection{Classes}
|
||||||
|
|
||||||
- `CGAL::Algebraic_structure_traits<T>`
|
- `CGAL::Algebraic_structure_traits<T>`
|
||||||
- `CGAL::Integral_domain_without_division_tag`
|
- `CGAL::Integral_domain_without_division_tag`
|
||||||
|
|
@ -64,7 +64,7 @@
|
||||||
- `CGAL::Unique_factorization_domain_tag`
|
- `CGAL::Unique_factorization_domain_tag`
|
||||||
- `CGAL::Euclidean_ring_tag`
|
- `CGAL::Euclidean_ring_tag`
|
||||||
|
|
||||||
### Global Functions ###
|
\cgalCRPSubsection{Global Functions}
|
||||||
|
|
||||||
- `CGAL::is_zero()`
|
- `CGAL::is_zero()`
|
||||||
- `CGAL::is_one()`
|
- `CGAL::is_one()`
|
||||||
|
|
@ -82,9 +82,9 @@
|
||||||
- `CGAL::kth_root()`
|
- `CGAL::kth_root()`
|
||||||
- `CGAL::root_of()`
|
- `CGAL::root_of()`
|
||||||
|
|
||||||
## Real Embeddable ##
|
\cgalCRPSection{Real Embeddable}
|
||||||
|
|
||||||
### Concepts ###
|
\cgalCRPSubsection{Concepts}
|
||||||
|
|
||||||
- `RealEmbeddable`
|
- `RealEmbeddable`
|
||||||
|
|
||||||
|
|
@ -98,11 +98,11 @@
|
||||||
- `RealEmbeddableTraits_::ToDouble`
|
- `RealEmbeddableTraits_::ToDouble`
|
||||||
- `RealEmbeddableTraits_::ToInterval`
|
- `RealEmbeddableTraits_::ToInterval`
|
||||||
|
|
||||||
### Classes ###
|
\cgalCRPSubsection{Classes}
|
||||||
|
|
||||||
- `CGAL::Real_embeddable_traits<T>`
|
- `CGAL::Real_embeddable_traits<T>`
|
||||||
|
|
||||||
### Global Functions ###
|
\cgalCRPSubsection{Global Functions}
|
||||||
|
|
||||||
- `CGAL::is_zero()`
|
- `CGAL::is_zero()`
|
||||||
- `CGAL::abs()`
|
- `CGAL::abs()`
|
||||||
|
|
@ -113,27 +113,27 @@
|
||||||
- `CGAL::to_double()`
|
- `CGAL::to_double()`
|
||||||
- `CGAL::to_interval()`
|
- `CGAL::to_interval()`
|
||||||
|
|
||||||
## Real Number Types ##
|
\cgalCRPSection{Real Number Types}
|
||||||
|
|
||||||
### Concepts ###
|
\cgalCRPSubsection{Concepts}
|
||||||
|
|
||||||
- `RingNumberType`
|
- `RingNumberType`
|
||||||
- `FieldNumberType`
|
- `FieldNumberType`
|
||||||
|
|
||||||
## Interoperability ##
|
\cgalCRPSection{Interoperability}
|
||||||
|
|
||||||
### Concepts ###
|
\cgalCRPSubsection{Concepts}
|
||||||
|
|
||||||
- `ExplicitInteroperable`
|
- `ExplicitInteroperable`
|
||||||
- `ImplicitInteroperable`
|
- `ImplicitInteroperable`
|
||||||
|
|
||||||
### Classes ###
|
\cgalCRPSubsection{Classes}
|
||||||
|
|
||||||
- `CGAL::Coercion_traits<A,B>`
|
- `CGAL::Coercion_traits<A,B>`
|
||||||
|
|
||||||
## Fractions ##
|
\cgalCRPSection{Fractions}
|
||||||
|
|
||||||
### Concepts ###
|
\cgalCRPSubsection{Concepts}
|
||||||
|
|
||||||
- `Fraction`
|
- `Fraction`
|
||||||
- `FractionTraits`
|
- `FractionTraits`
|
||||||
|
|
@ -141,13 +141,13 @@
|
||||||
- `FractionTraits_::Compose`
|
- `FractionTraits_::Compose`
|
||||||
- `FractionTraits_::CommonFactor`
|
- `FractionTraits_::CommonFactor`
|
||||||
|
|
||||||
### Classes ###
|
\cgalCRPSubsection{Classes}
|
||||||
|
|
||||||
- `CGAL::Fraction_traits<T>`
|
- `CGAL::Fraction_traits<T>`
|
||||||
|
|
||||||
## Miscellaneous ##
|
\cgalCRPSection{Miscellaneous}
|
||||||
|
|
||||||
### Concepts ###
|
\cgalCRPSubsection{Concepts}
|
||||||
- `FromIntConstructible`
|
- `FromIntConstructible`
|
||||||
- `FromDoubleConstructible`
|
- `FromDoubleConstructible`
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
#include <CGAL/basic.h>
|
|
||||||
#include <CGAL/IO/io.h>
|
#include <CGAL/IO/io.h>
|
||||||
#include <CGAL/Algebraic_structure_traits.h>
|
#include <CGAL/Algebraic_structure_traits.h>
|
||||||
|
#include <CGAL/number_utils.h>
|
||||||
|
#include <CGAL/int.h>
|
||||||
|
|
||||||
template< typename NT > NT unit_part(const NT& x);
|
template< typename NT > NT unit_part(const NT& x);
|
||||||
template< typename NT >
|
template< typename NT >
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#include <CGAL/basic.h>
|
|
||||||
#include <CGAL/Fraction_traits.h>
|
#include <CGAL/Fraction_traits.h>
|
||||||
#include <CGAL/IO/io.h>
|
#include <CGAL/IO/io.h>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#include <CGAL/basic.h>
|
|
||||||
#include <CGAL/Coercion_traits.h>
|
#include <CGAL/Coercion_traits.h>
|
||||||
#include <CGAL/Quotient.h>
|
#include <CGAL/Quotient.h>
|
||||||
#include <CGAL/Sqrt_extension.h>
|
#include <CGAL/Sqrt_extension.h>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
#include <CGAL/basic.h>
|
|
||||||
#include <CGAL/Fraction_traits.h>
|
#include <CGAL/Fraction_traits.h>
|
||||||
#include <CGAL/IO/io.h>
|
#include <CGAL/IO/io.h>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <CGAL/number_utils.h>
|
||||||
|
|
||||||
template <class Fraction>
|
template <class Fraction>
|
||||||
std::vector<typename CGAL::Fraction_traits<Fraction>::Numerator_type >
|
std::vector<typename CGAL::Fraction_traits<Fraction>::Numerator_type >
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#include <CGAL/basic.h>
|
|
||||||
#include <CGAL/Coercion_traits.h>
|
#include <CGAL/Coercion_traits.h>
|
||||||
#include <CGAL/IO/io.h>
|
#include <CGAL/IO/io.h>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ public:
|
||||||
/*!
|
/*!
|
||||||
|
|
||||||
*/
|
*/
|
||||||
typedef CGAL::cpp11::array<AlgebraicKernel_d_1::Bound, 4> result_type;
|
typedef std::array<AlgebraicKernel_d_1::Bound, 4> result_type;
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
|
|
@ -31,7 +31,7 @@ typedef CGAL::cpp11::array<AlgebraicKernel_d_1::Bound, 4> result_type;
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
The returned `CGAL::cpp11::array` \f$ [xl,xu,yl,yu]\f$ represents an open isolating box \f$ B=(xl,xu)\times(yl,yu)\f$
|
The returned `std::array` \f$ [xl,xu,yl,yu]\f$ represents an open isolating box \f$ B=(xl,xu)\times(yl,yu)\f$
|
||||||
for \f$ a\f$ with respect to \f$ f\f$.
|
for \f$ a\f$ with respect to \f$ f\f$.
|
||||||
\pre \f$ f(a)\neq0\f$
|
\pre \f$ f(a)\neq0\f$
|
||||||
\post \f$ a \in B\f$.
|
\post \f$ a \in B\f$.
|
||||||
|
|
@ -42,7 +42,7 @@ result_type
|
||||||
operator()( AlgebraicKernel_d_2::Algebraic_real_2 a, AlgebraicKernel_d_2::Polynomial_2 f);
|
operator()( AlgebraicKernel_d_2::Algebraic_real_2 a, AlgebraicKernel_d_2::Polynomial_2 f);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
The returned `CGAL::cpp11::array` \f$ [xl,xu,yl,yu]\f$ represents an open isolating box \f$ B=(xl,xu)\times(yl,yu)\f$
|
The returned `std::array` \f$ [xl,xu,yl,yu]\f$ represents an open isolating box \f$ B=(xl,xu)\times(yl,yu)\f$
|
||||||
for \f$ a\f$ with respect to the common solutions of \f$ f\f$ and \f$ g\f$.
|
for \f$ a\f$ with respect to the common solutions of \f$ f\f$ and \f$ g\f$.
|
||||||
It is not necessary that \f$ a\f$ is a common solution of \f$ f\f$ and \f$ g\f$.
|
It is not necessary that \f$ a\f$ is a common solution of \f$ f\f$ and \f$ g\f$.
|
||||||
\post \f$ a \in B\f$.
|
\post \f$ a \in B\f$.
|
||||||
|
|
|
||||||
|
|
@ -34,9 +34,9 @@
|
||||||
|
|
||||||
\cgalClassifedRefPages
|
\cgalClassifedRefPages
|
||||||
|
|
||||||
## Concepts ##
|
\cgalCRPSection{Concepts}
|
||||||
|
|
||||||
### Univariate Algebraic %Kernel ###
|
\cgalCRPSubsection{Univariate Algebraic %Kernel}
|
||||||
|
|
||||||
- `AlgebraicKernel_d_1`
|
- `AlgebraicKernel_d_1`
|
||||||
|
|
||||||
|
|
@ -58,7 +58,7 @@
|
||||||
- `AlgebraicKernel_d_1::ApproximateAbsolute_1`
|
- `AlgebraicKernel_d_1::ApproximateAbsolute_1`
|
||||||
- `AlgebraicKernel_d_1::ApproximateRelative_1`
|
- `AlgebraicKernel_d_1::ApproximateRelative_1`
|
||||||
|
|
||||||
### Bivariate Algebraic %Kernel ###
|
\cgalCRPSubsection{Bivariate Algebraic %Kernel}
|
||||||
|
|
||||||
- `AlgebraicKernel_d_2`
|
- `AlgebraicKernel_d_2`
|
||||||
|
|
||||||
|
|
@ -95,7 +95,7 @@
|
||||||
- `AlgebraicKernel_d_2::BoundBetweenX_2`
|
- `AlgebraicKernel_d_2::BoundBetweenX_2`
|
||||||
- `AlgebraicKernel_d_2::BoundBetweenY_2`
|
- `AlgebraicKernel_d_2::BoundBetweenY_2`
|
||||||
|
|
||||||
## Models ##
|
\cgalCRPSection{Models}
|
||||||
|
|
||||||
- `CGAL::Algebraic_kernel_d_1<Coeff>`
|
- `CGAL::Algebraic_kernel_d_1<Coeff>`
|
||||||
- `CGAL::Algebraic_kernel_d_2<Coeff>`
|
- `CGAL::Algebraic_kernel_d_2<Coeff>`
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
// $URL$
|
// $URL$
|
||||||
// $Id$
|
// $Id$
|
||||||
|
|
||||||
#include <CGAL/basic.h>
|
#include <CGAL/config.h>
|
||||||
#ifdef CGAL_USE_MPFI
|
#ifdef CGAL_USE_MPFI
|
||||||
#include <CGAL/Algebraic_kernel_d_1.h>
|
#include <CGAL/Algebraic_kernel_d_1.h>
|
||||||
#include <CGAL/Gmpz.h>
|
#include <CGAL/Gmpz.h>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
// $URL$
|
// $URL$
|
||||||
// $Id$
|
// $Id$
|
||||||
|
|
||||||
#include <CGAL/basic.h>
|
#include <CGAL/config.h>
|
||||||
#ifdef CGAL_USE_MPFI
|
#ifdef CGAL_USE_MPFI
|
||||||
#include <CGAL/Algebraic_kernel_d_1.h>
|
#include <CGAL/Algebraic_kernel_d_1.h>
|
||||||
#include <CGAL/Gmpz.h>
|
#include <CGAL/Gmpz.h>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
// $URL$
|
// $URL$
|
||||||
// $Id$
|
// $Id$
|
||||||
|
|
||||||
#include <CGAL/basic.h>
|
#include <CGAL/config.h>
|
||||||
#ifdef CGAL_USE_MPFI
|
#ifdef CGAL_USE_MPFI
|
||||||
#include <CGAL/Algebraic_kernel_d_1.h>
|
#include <CGAL/Algebraic_kernel_d_1.h>
|
||||||
#include <CGAL/Gmpz.h>
|
#include <CGAL/Gmpz.h>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
// $URL$
|
// $URL$
|
||||||
// $Id$
|
// $Id$
|
||||||
|
|
||||||
#include <CGAL/basic.h>
|
#include <CGAL/config.h>
|
||||||
#ifdef CGAL_USE_MPFI
|
#ifdef CGAL_USE_MPFI
|
||||||
#include <CGAL/Algebraic_kernel_d_1.h>
|
#include <CGAL/Algebraic_kernel_d_1.h>
|
||||||
#include <CGAL/Gmpz.h>
|
#include <CGAL/Gmpz.h>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
// $URL$
|
// $URL$
|
||||||
// $Id$
|
// $Id$
|
||||||
|
|
||||||
#include <CGAL/basic.h>
|
#include <CGAL/config.h>
|
||||||
#ifdef CGAL_USE_MPFI
|
#ifdef CGAL_USE_MPFI
|
||||||
#include <CGAL/Algebraic_kernel_d_1.h>
|
#include <CGAL/Algebraic_kernel_d_1.h>
|
||||||
#include <CGAL/Gmpz.h>
|
#include <CGAL/Gmpz.h>
|
||||||
|
|
|
||||||
|
|
@ -736,7 +736,7 @@ public:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
typedef CGAL::cpp11::array<Bound,4> result_type;
|
typedef std::array<Bound,4> result_type;
|
||||||
|
|
||||||
Isolate_2(const Algebraic_kernel_d_2* kernel)
|
Isolate_2(const Algebraic_kernel_d_2* kernel)
|
||||||
: _m_kernel(kernel) {}
|
: _m_kernel(kernel) {}
|
||||||
|
|
|
||||||
|
|
@ -114,9 +114,6 @@ public:
|
||||||
//! Default constructor
|
//! Default constructor
|
||||||
Algebraic_real_d_1() : Base(static_cast<const Base&>(get_default_instance())) {}
|
Algebraic_real_d_1() : Base(static_cast<const Base&>(get_default_instance())) {}
|
||||||
|
|
||||||
//! copy constructor: copy existing Algebraic_real_d_1 (shares rep)
|
|
||||||
Algebraic_real_d_1(const Self& p) : Base(static_cast<const Base&>(p)) {}
|
|
||||||
|
|
||||||
//! creates the algebraic real from \a i.
|
//! creates the algebraic real from \a i.
|
||||||
Algebraic_real_d_1(int i ) : Base(Algebraic_real_rep_d_1(i)) { }
|
Algebraic_real_d_1(int i ) : Base(Algebraic_real_rep_d_1(i)) { }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -108,8 +108,10 @@ public:
|
||||||
|
|
||||||
Bitstream_coefficient_kernel_at_alpha() : Base(Rep()) {}
|
Bitstream_coefficient_kernel_at_alpha() : Base(Rep()) {}
|
||||||
|
|
||||||
|
#ifdef DOXYGEN_RUNNING
|
||||||
Bitstream_coefficient_kernel_at_alpha(const Self& traits)
|
Bitstream_coefficient_kernel_at_alpha(const Self& traits)
|
||||||
: Base(static_cast<const Base&>(traits)) {}
|
: Base(static_cast<const Base&>(traits)) {}
|
||||||
|
#endif
|
||||||
|
|
||||||
Bitstream_coefficient_kernel_at_alpha(Algebraic_kernel_d_1* kernel,
|
Bitstream_coefficient_kernel_at_alpha(Algebraic_kernel_d_1* kernel,
|
||||||
Algebraic_real_1 alpha)
|
Algebraic_real_1 alpha)
|
||||||
|
|
|
||||||
|
|
@ -476,7 +476,7 @@ private:
|
||||||
log_C_eps_ = n.log_C_eps_;
|
log_C_eps_ = n.log_C_eps_;
|
||||||
}
|
}
|
||||||
|
|
||||||
// const Self& operator= (const Self&); // assignment is forbidden
|
Self& operator= (const Self&) = delete;
|
||||||
}; // struct Bitstream_descartes_E08_node
|
}; // struct Bitstream_descartes_E08_node
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -575,9 +575,11 @@ public:
|
||||||
Bitstream_descartes_E08_tree() : Base(Rep()) { }
|
Bitstream_descartes_E08_tree() : Base(Rep()) { }
|
||||||
|
|
||||||
//! copy constructor
|
//! copy constructor
|
||||||
|
#ifdef DOXYGEN_RUNNING
|
||||||
Bitstream_descartes_E08_tree(const Self& p)
|
Bitstream_descartes_E08_tree(const Self& p)
|
||||||
: Base(static_cast<const Base&>(p))
|
: Base(static_cast<const Base&>(p))
|
||||||
{ }
|
{ }
|
||||||
|
#endif
|
||||||
|
|
||||||
/*! \brief construct from initial interval and coefficients
|
/*! \brief construct from initial interval and coefficients
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -567,7 +567,7 @@ private:
|
||||||
log_C_eps_ = n.log_C_eps_;
|
log_C_eps_ = n.log_C_eps_;
|
||||||
}
|
}
|
||||||
|
|
||||||
// const Self& operator= (const Self&); // assignment is forbidden
|
Self& operator= (const Self&)=delete;
|
||||||
}; // struct Bitstream_descartes_rndl_node
|
}; // struct Bitstream_descartes_rndl_node
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -931,9 +931,11 @@ public:
|
||||||
Bitstream_descartes_rndl_tree() : Base(Rep()) { }
|
Bitstream_descartes_rndl_tree() : Base(Rep()) { }
|
||||||
|
|
||||||
//! copy constructor
|
//! copy constructor
|
||||||
|
#ifdef DOXYGEN_RUNNING
|
||||||
Bitstream_descartes_rndl_tree(const Self& p)
|
Bitstream_descartes_rndl_tree(const Self& p)
|
||||||
: Base(static_cast<const Base&>(p))
|
: Base(static_cast<const Base&>(p))
|
||||||
{ }
|
{ }
|
||||||
|
#endif
|
||||||
|
|
||||||
//! Internal function called by constructor. Avoids code duplication
|
//! Internal function called by constructor. Avoids code duplication
|
||||||
void init_tree() {
|
void init_tree() {
|
||||||
|
|
|
||||||
|
|
@ -154,9 +154,10 @@ public:
|
||||||
: Base(static_cast<const Base&>(get_default_instance())){}
|
: Base(static_cast<const Base&>(get_default_instance())){}
|
||||||
|
|
||||||
// explicit copy-constructor, required by VC9
|
// explicit copy-constructor, required by VC9
|
||||||
|
#ifdef DOXYGEN_RUNNING
|
||||||
Bitstream_descartes_rndl_tree_traits(const Self& traits)
|
Bitstream_descartes_rndl_tree_traits(const Self& traits)
|
||||||
: Base(static_cast<const Base&>(traits)){}
|
: Base(static_cast<const Base&>(traits)){}
|
||||||
|
#endif
|
||||||
//! @}
|
//! @}
|
||||||
|
|
||||||
class Approximator {
|
class Approximator {
|
||||||
|
|
|
||||||
|
|
@ -505,11 +505,12 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
//! \brief Copy constructor
|
//! \brief Copy constructor
|
||||||
|
#ifdef DOXYGEN_RUNNING
|
||||||
Curve_analysis_2(const Self& alg_curve)
|
Curve_analysis_2(const Self& alg_curve)
|
||||||
: Base(static_cast<const Base&>(alg_curve))
|
: Base(static_cast<const Base&>(alg_curve))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
//!@}
|
//!@}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -446,11 +446,12 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
//! \brief Copy constructor
|
//! \brief Copy constructor
|
||||||
|
#ifdef DOXYGEN_RUNNING
|
||||||
Curve_pair_analysis_2(const Self& alg_curve_pair)
|
Curve_pair_analysis_2(const Self& alg_curve_pair)
|
||||||
: Base(static_cast<const Base&>(alg_curve_pair))
|
: Base(static_cast<const Base&>(alg_curve_pair))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
// Assignable
|
// Assignable
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -1434,7 +1435,13 @@ compute_event_x_coordinates_with_event_indices() const {
|
||||||
CGAL_ACK_DEBUG_PRINT << " one curve event" << std::endl;
|
CGAL_ACK_DEBUG_PRINT << " one curve event" << std::endl;
|
||||||
#endif
|
#endif
|
||||||
*/
|
*/
|
||||||
|
#if CGAL_CXX11
|
||||||
|
// Fix a warning by using `emplace_back()` instead of
|
||||||
|
// copying a non-initialized `optional
|
||||||
|
this->ptr()->event_slices.emplace_back();
|
||||||
|
#else
|
||||||
this->ptr()->event_slices.push_back(Lazy_status_line_CPA_1());
|
this->ptr()->event_slices.push_back(Lazy_status_line_CPA_1());
|
||||||
|
#endif
|
||||||
switch(*(one_curve_it++)) {
|
switch(*(one_curve_it++)) {
|
||||||
case(CGAL::internal::ROOT_OF_FIRST_SET): {
|
case(CGAL::internal::ROOT_OF_FIRST_SET): {
|
||||||
event_indices.push_back(Event_indices(-1,f_count,-1));
|
event_indices.push_back(Event_indices(-1,f_count,-1));
|
||||||
|
|
@ -1461,8 +1468,11 @@ compute_event_x_coordinates_with_event_indices() const {
|
||||||
CGAL_ACK_DEBUG_PRINT << " two curve event" << std::endl;
|
CGAL_ACK_DEBUG_PRINT << " two curve event" << std::endl;
|
||||||
#endif
|
#endif
|
||||||
*/
|
*/
|
||||||
this->ptr()->
|
#if CGAL_CXX11
|
||||||
event_slices.push_back(Lazy_status_line_CPA_1());
|
this->ptr()->event_slices.emplace_back();
|
||||||
|
#else
|
||||||
|
this->ptr()->event_slices.push_back(Lazy_status_line_CPA_1());
|
||||||
|
#endif
|
||||||
|
|
||||||
event_indices.push_back
|
event_indices.push_back
|
||||||
(Event_indices(inter_count,-1,-1));
|
(Event_indices(inter_count,-1,-1));
|
||||||
|
|
@ -1476,7 +1486,11 @@ compute_event_x_coordinates_with_event_indices() const {
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
#endif
|
#endif
|
||||||
*/
|
*/
|
||||||
|
#if CGAL_CXX11
|
||||||
|
this->ptr()->event_slices.emplace_back();
|
||||||
|
#else
|
||||||
this->ptr()->event_slices.push_back(Lazy_status_line_CPA_1());
|
this->ptr()->event_slices.push_back(Lazy_status_line_CPA_1());
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
switch(*(one_curve_it++)) {
|
switch(*(one_curve_it++)) {
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@ struct Interval_evaluate_1 : public CGAL::cpp98::binary_function
|
||||||
}
|
}
|
||||||
|
|
||||||
result_type operator()(const Polynomial_1& p,
|
result_type operator()(const Polynomial_1& p,
|
||||||
const CGAL::cpp11::array< Bound, 2 >& b) const {
|
const std::array< Bound, 2 >& b) const {
|
||||||
|
|
||||||
typename CT::Cast cast;
|
typename CT::Cast cast;
|
||||||
|
|
||||||
|
|
@ -79,7 +79,7 @@ struct Interval_evaluate_1 : public CGAL::cpp98::binary_function
|
||||||
Coefficient_const_iterator_range range =
|
Coefficient_const_iterator_range range =
|
||||||
typename PT_1::Construct_coefficient_const_iterator_range()(p);
|
typename PT_1::Construct_coefficient_const_iterator_range()(p);
|
||||||
|
|
||||||
Coefficient_const_iterator it = CGAL::cpp11::prev(range.second);
|
Coefficient_const_iterator it = std::prev(range.second);
|
||||||
|
|
||||||
Coercion_interval res(cast(*it));
|
Coercion_interval res(cast(*it));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ namespace internal {
|
||||||
|
|
||||||
template<typename Polynomial_2, typename Bound>
|
template<typename Polynomial_2, typename Bound>
|
||||||
struct Interval_evaluate_2 : public CGAL::cpp98::binary_function
|
struct Interval_evaluate_2 : public CGAL::cpp98::binary_function
|
||||||
<Polynomial_2,CGAL::cpp11::array<Bound,4>,
|
<Polynomial_2,std::array<Bound,4>,
|
||||||
std::pair<typename CGAL::Coercion_traits<typename CGAL::Polynomial_traits_d<Polynomial_2>::Innermost_coefficient_type,Bound>::Type,
|
std::pair<typename CGAL::Coercion_traits<typename CGAL::Polynomial_traits_d<Polynomial_2>::Innermost_coefficient_type,Bound>::Type,
|
||||||
typename CGAL::Coercion_traits<typename CGAL::Polynomial_traits_d<Polynomial_2>::Innermost_coefficient_type,Bound>::Type> > {
|
typename CGAL::Coercion_traits<typename CGAL::Polynomial_traits_d<Polynomial_2>::Innermost_coefficient_type,Bound>::Type> > {
|
||||||
|
|
||||||
|
|
@ -58,7 +58,7 @@ public:
|
||||||
typedef std::pair< Coercion_type, Coercion_type > result_type;
|
typedef std::pair< Coercion_type, Coercion_type > result_type;
|
||||||
|
|
||||||
result_type operator()(const Polynomial_2& p,
|
result_type operator()(const Polynomial_2& p,
|
||||||
const CGAL::cpp11::array< Bound, 4 >& b) const {
|
const std::array< Bound, 4 >& b) const {
|
||||||
|
|
||||||
typename CT::Cast cast;
|
typename CT::Cast cast;
|
||||||
|
|
||||||
|
|
@ -87,7 +87,7 @@ public:
|
||||||
Coefficient_const_iterator_range range =
|
Coefficient_const_iterator_range range =
|
||||||
typename PT_2::Construct_coefficient_const_iterator_range()(p);
|
typename PT_2::Construct_coefficient_const_iterator_range()(p);
|
||||||
|
|
||||||
Coefficient_const_iterator it = CGAL::cpp11::prev(range.second);
|
Coefficient_const_iterator it = std::prev(range.second);
|
||||||
|
|
||||||
Interval_result_type initial_pair = interval_evaluate_1(*it,x_pair);
|
Interval_result_type initial_pair = interval_evaluate_1(*it,x_pair);
|
||||||
Coercion_interval res(initial_pair.first,initial_pair.second);
|
Coercion_interval res(initial_pair.first,initial_pair.second);
|
||||||
|
|
|
||||||
|
|
@ -252,9 +252,11 @@ public:
|
||||||
/*!\brief
|
/*!\brief
|
||||||
* copy constructor
|
* copy constructor
|
||||||
*/
|
*/
|
||||||
|
#ifdef DOXYGEN_RUNNING
|
||||||
Status_line_CA_1(const Self& p) :
|
Status_line_CA_1(const Self& p) :
|
||||||
Base(static_cast<const Base&>(p)) {
|
Base(static_cast<const Base&>(p)) {
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*!\brief
|
/*!\brief
|
||||||
* constructs a status line over the \c i-th interval with x-coordinate
|
* constructs a status line over the \c i-th interval with x-coordinate
|
||||||
|
|
|
||||||
|
|
@ -174,9 +174,11 @@ public:
|
||||||
/*!\brief
|
/*!\brief
|
||||||
* copy constructor
|
* copy constructor
|
||||||
*/
|
*/
|
||||||
|
#ifdef DOXYGEN_RUNNING
|
||||||
Status_line_CPA_1(const Self& p) :
|
Status_line_CPA_1(const Self& p) :
|
||||||
Base(static_cast<const Base&>(p)) {
|
Base(static_cast<const Base&>(p)) {
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*!\brief
|
/*!\brief
|
||||||
* constructs undefined status line
|
* constructs undefined status line
|
||||||
|
|
|
||||||
|
|
@ -219,9 +219,11 @@ public:
|
||||||
/*!\brief
|
/*!\brief
|
||||||
* copy constructor
|
* copy constructor
|
||||||
*/
|
*/
|
||||||
|
#ifdef DOXYGEN_RUNNING
|
||||||
Xy_coordinate_2(const Self& p) :
|
Xy_coordinate_2(const Self& p) :
|
||||||
Base(static_cast<const Base&>(p)) {
|
Base(static_cast<const Base&>(p)) {
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*!\brief
|
/*!\brief
|
||||||
* Point at \c x, on \c curve with \c arcno. Finite points on vertical arcs
|
* Point at \c x, on \c curve with \c arcno. Finite points on vertical arcs
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ void test_algebraic_kernel_2(const AlgebraicKernel_2& ak_2) {
|
||||||
typedef typename AK_2::Coefficient Coefficient;
|
typedef typename AK_2::Coefficient Coefficient;
|
||||||
typedef typename AK_2::Bound Bound;
|
typedef typename AK_2::Bound Bound;
|
||||||
typedef std::pair<Bound,Bound> BInterval;
|
typedef std::pair<Bound,Bound> BInterval;
|
||||||
typedef CGAL::cpp11::array<Bound, 4> BArray;
|
typedef std::array<Bound, 4> BArray;
|
||||||
typedef typename AK_2::Polynomial_1 Polynomial_1;
|
typedef typename AK_2::Polynomial_1 Polynomial_1;
|
||||||
typedef typename AK_2::Polynomial_2 Polynomial_2;
|
typedef typename AK_2::Polynomial_2 Polynomial_2;
|
||||||
typedef typename AK_2::Algebraic_real_1 Algebraic_real_1;
|
typedef typename AK_2::Algebraic_real_1 Algebraic_real_1;
|
||||||
|
|
|
||||||
|
|
@ -216,8 +216,8 @@ namespace CGAL {
|
||||||
const FT cz = (p.a()*p.c())/sqbc;
|
const FT cz = (p.a()*p.c())/sqbc;
|
||||||
|
|
||||||
const Root_of_2 x = make_root_of_2(s.a(),FT(i?-1:1),delta);
|
const Root_of_2 x = make_root_of_2(s.a(),FT(i?-1:1),delta);
|
||||||
const Root_of_2 y = make_root_of_2(s.b(),FT(i?(cy):(-cy)),delta);
|
const Root_of_2 y = make_root_of_2(s.b(),FT(i?(cy):FT(-cy)),delta);
|
||||||
const Root_of_2 z = make_root_of_2(s.c(),FT(i?(cz):(-cz)),delta);
|
const Root_of_2 z = make_root_of_2(s.c(),FT(i?(cz):FT(-cz)),delta);
|
||||||
|
|
||||||
return Root_for_spheres_2_3(x,y,z);
|
return Root_for_spheres_2_3(x,y,z);
|
||||||
}
|
}
|
||||||
|
|
@ -290,14 +290,14 @@ namespace CGAL {
|
||||||
const FT cz = (p.c()*p.b())/sqac;
|
const FT cz = (p.c()*p.b())/sqac;
|
||||||
|
|
||||||
if(!is_positive(cx)) {
|
if(!is_positive(cx)) {
|
||||||
const Root_of_2 x = make_root_of_2(s.a(),FT(i?(cx):(-cx)),delta);
|
const Root_of_2 x = make_root_of_2(s.a(),FT(i?(cx):FT(-cx)),delta);
|
||||||
const Root_of_2 y = make_root_of_2(s.b(),FT(i?-1:1),delta);
|
const Root_of_2 y = make_root_of_2(s.b(),FT(i?-1:1),delta);
|
||||||
const Root_of_2 z = make_root_of_2(s.c(),FT(i?(cz):(-cz)),delta);
|
const Root_of_2 z = make_root_of_2(s.c(),FT(i?(cz):FT(-cz)),delta);
|
||||||
return Root_for_spheres_2_3(x,y,z);
|
return Root_for_spheres_2_3(x,y,z);
|
||||||
} else {
|
} else {
|
||||||
const Root_of_2 x = make_root_of_2(s.a(),FT(i?(-cx):(cx)),delta);
|
const Root_of_2 x = make_root_of_2(s.a(),FT(i?FT(-cx):(cx)),delta);
|
||||||
const Root_of_2 y = make_root_of_2(s.b(),FT(i?1:-1),delta);
|
const Root_of_2 y = make_root_of_2(s.b(),FT(i?1:-1),delta);
|
||||||
const Root_of_2 z = make_root_of_2(s.c(),FT(i?(-cz):(cz)),delta);
|
const Root_of_2 z = make_root_of_2(s.c(),FT(i?FT(-cz):(cz)),delta);
|
||||||
return Root_for_spheres_2_3(x,y,z);
|
return Root_for_spheres_2_3(x,y,z);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -375,25 +375,25 @@ namespace CGAL {
|
||||||
const FT cy = (p.c()*p.b())/sqab;
|
const FT cy = (p.c()*p.b())/sqab;
|
||||||
|
|
||||||
if(is_negative(cx)) {
|
if(is_negative(cx)) {
|
||||||
const Root_of_2 x = make_root_of_2(s.a(),FT(i?(cx):(-cx)),delta);
|
const Root_of_2 x = make_root_of_2(s.a(),FT(i?(cx):FT(-cx)),delta);
|
||||||
const Root_of_2 y = make_root_of_2(s.b(),FT(i?(cy):(-cy)),delta);
|
const Root_of_2 y = make_root_of_2(s.b(),FT(i?(cy):FT(-cy)),delta);
|
||||||
const Root_of_2 z = make_root_of_2(s.c(),FT(i?-1:1),delta);
|
const Root_of_2 z = make_root_of_2(s.c(),FT(i?-1:1),delta);
|
||||||
return Root_for_spheres_2_3(x,y,z);
|
return Root_for_spheres_2_3(x,y,z);
|
||||||
} else if(is_zero(cx)) {
|
} else if(is_zero(cx)) {
|
||||||
if(!is_positive(cy)) {
|
if(!is_positive(cy)) {
|
||||||
const Root_of_2 x = s.a();
|
const Root_of_2 x = s.a();
|
||||||
const Root_of_2 y = make_root_of_2(s.b(),FT(i?(cy):(-cy)),delta);
|
const Root_of_2 y = make_root_of_2(s.b(),FT(i?(cy):FT(-cy)),delta);
|
||||||
const Root_of_2 z = make_root_of_2(s.c(),FT(i?-1:1),delta);
|
const Root_of_2 z = make_root_of_2(s.c(),FT(i?-1:1),delta);
|
||||||
return Root_for_spheres_2_3(x,y,z);
|
return Root_for_spheres_2_3(x,y,z);
|
||||||
} else {
|
} else {
|
||||||
const Root_of_2 x = s.a();
|
const Root_of_2 x = s.a();
|
||||||
const Root_of_2 y = make_root_of_2(s.b(),FT(i?(-cy):(cy)),delta);
|
const Root_of_2 y = make_root_of_2(s.b(),FT(i?FT(-cy):(cy)),delta);
|
||||||
const Root_of_2 z = make_root_of_2(s.c(),FT(i?1:-1),delta);
|
const Root_of_2 z = make_root_of_2(s.c(),FT(i?1:-1),delta);
|
||||||
return Root_for_spheres_2_3(x,y,z);
|
return Root_for_spheres_2_3(x,y,z);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
const Root_of_2 x = make_root_of_2(s.a(),FT(i?(-cx):(cx)),delta);
|
const Root_of_2 x = make_root_of_2(s.a(),FT(i?FT(-cx):(cx)),delta);
|
||||||
const Root_of_2 y = make_root_of_2(s.b(),FT(i?(-cy):(cy)),delta);
|
const Root_of_2 y = make_root_of_2(s.b(),FT(i?FT(-cy):(cy)),delta);
|
||||||
const Root_of_2 z = make_root_of_2(s.c(),FT(i?1:-1),delta);
|
const Root_of_2 z = make_root_of_2(s.c(),FT(i?1:-1),delta);
|
||||||
return Root_for_spheres_2_3(x,y,z);
|
return Root_for_spheres_2_3(x,y,z);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -68,12 +68,12 @@ finite number of different \f$ \alpha\f$-shapes and corresponding
|
||||||
|
|
||||||
\cgalClassifedRefPages
|
\cgalClassifedRefPages
|
||||||
|
|
||||||
## Concepts ##
|
\cgalCRPSection{Concepts}
|
||||||
- `AlphaShapeTraits_2`
|
- `AlphaShapeTraits_2`
|
||||||
- `AlphaShapeFace_2`
|
- `AlphaShapeFace_2`
|
||||||
- `AlphaShapeVertex_2`
|
- `AlphaShapeVertex_2`
|
||||||
|
|
||||||
## Classes ##
|
\cgalCRPSection{Classes}
|
||||||
- `CGAL::Alpha_shape_2<Dt>`
|
- `CGAL::Alpha_shape_2<Dt>`
|
||||||
- `CGAL::Weighted_alpha_shape_euclidean_traits_2<K>`
|
- `CGAL::Weighted_alpha_shape_euclidean_traits_2<K>`
|
||||||
- `CGAL::Alpha_shape_vertex_base_2<AlphaShapeTraits_2>`
|
- `CGAL::Alpha_shape_vertex_base_2<AlphaShapeTraits_2>`
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
#include <CGAL/Simple_cartesian.h>
|
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
||||||
#include <CGAL/Filtered_kernel.h>
|
|
||||||
#include <CGAL/Cartesian_converter.h>
|
#include <CGAL/Cartesian_converter.h>
|
||||||
|
|
||||||
#include <CGAL/Delaunay_triangulation_2.h>
|
#include <CGAL/Delaunay_triangulation_2.h>
|
||||||
|
|
@ -16,9 +15,8 @@
|
||||||
|
|
||||||
typedef double coord_type;
|
typedef double coord_type;
|
||||||
|
|
||||||
typedef CGAL::Simple_cartesian<coord_type> SC;
|
typedef CGAL::Exact_predicates_inexact_constructions_kernel Epic;
|
||||||
typedef CGAL::Filtered_kernel<SC> FK;
|
typedef CGAL::Projection_traits_xy_3<Epic> K;
|
||||||
typedef CGAL::Projection_traits_xy_3<FK> K;
|
|
||||||
|
|
||||||
typedef K::Point_2 Point;
|
typedef K::Point_2 Point;
|
||||||
typedef K::Segment_2 Segment;
|
typedef K::Segment_2 Segment;
|
||||||
|
|
@ -34,10 +32,10 @@ typedef K::Segment_2 Segment;
|
||||||
namespace CGAL {
|
namespace CGAL {
|
||||||
|
|
||||||
template < class K2, class C >
|
template < class K2, class C >
|
||||||
class Cartesian_converter<FK, K2, C>
|
class Cartesian_converter<Epic, K2, C>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef CGAL::Projection_traits_xy_3<FK> Source_kernel;
|
typedef CGAL::Projection_traits_xy_3<Epic> Source_kernel;
|
||||||
typedef K2 Target_kernel;
|
typedef K2 Target_kernel;
|
||||||
typedef C Number_type_converter;
|
typedef C Number_type_converter;
|
||||||
|
|
||||||
|
|
@ -109,7 +107,7 @@ bool file_input(OutputIterator out)
|
||||||
int n;
|
int n;
|
||||||
is >> n;
|
is >> n;
|
||||||
std::cout << "Reading " << n << " points from file" << std::endl;
|
std::cout << "Reading " << n << " points from file" << std::endl;
|
||||||
CGAL::cpp11::copy_n(std::istream_iterator<Point>(is), n, out);
|
std::copy_n(std::istream_iterator<Point>(is), n, out);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ bool file_input(OutputIterator out)
|
||||||
int n;
|
int n;
|
||||||
is >> n;
|
is >> n;
|
||||||
std::cout << "Reading " << n << " points from file" << std::endl;
|
std::cout << "Reading " << n << " points from file" << std::endl;
|
||||||
CGAL::cpp11::copy_n(std::istream_iterator<Point>(is), n, out);
|
std::copy_n(std::istream_iterator<Point>(is), n, out);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ bool file_input(OutputIterator out)
|
||||||
int n;
|
int n;
|
||||||
is >> n;
|
is >> n;
|
||||||
std::cout << "Reading " << n << " points from file" << std::endl;
|
std::cout << "Reading " << n << " points from file" << std::endl;
|
||||||
CGAL::cpp11::copy_n(std::istream_iterator<Point>(is), n, out);
|
std::copy_n(std::istream_iterator<Point>(is), n, out);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
#include <CGAL/Simple_cartesian.h>
|
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
||||||
#include <CGAL/Filtered_kernel.h>
|
|
||||||
#include <CGAL/algorithm.h>
|
#include <CGAL/algorithm.h>
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
|
@ -15,8 +14,7 @@
|
||||||
|
|
||||||
typedef double coord_type;
|
typedef double coord_type;
|
||||||
|
|
||||||
typedef CGAL::Simple_cartesian<coord_type> SC;
|
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
||||||
typedef CGAL::Filtered_kernel<SC> K;
|
|
||||||
|
|
||||||
typedef K::Point_2 Point;
|
typedef K::Point_2 Point;
|
||||||
typedef K::Segment_2 Segment;
|
typedef K::Segment_2 Segment;
|
||||||
|
|
@ -99,7 +97,7 @@ file_input(OutputIterator out)
|
||||||
int n;
|
int n;
|
||||||
is >> n;
|
is >> n;
|
||||||
std::cout << "Reading " << n << " points from file" << std::endl;
|
std::cout << "Reading " << n << " points from file" << std::endl;
|
||||||
CGAL::cpp11::copy_n(std::istream_iterator<Point>(is), n, out);
|
std::copy_n(std::istream_iterator<Point>(is), n, out);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,7 @@ corresponding to the weighted Alpha Shape.
|
||||||
|
|
||||||
************************************************************************/
|
************************************************************************/
|
||||||
|
|
||||||
#include <CGAL/Simple_cartesian.h>
|
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
||||||
#include <CGAL/Filtered_kernel.h>
|
|
||||||
|
|
||||||
#include <CGAL/Alpha_shape_2.h>
|
#include <CGAL/Alpha_shape_2.h>
|
||||||
#include <CGAL/Alpha_shape_face_base_2.h>
|
#include <CGAL/Alpha_shape_face_base_2.h>
|
||||||
|
|
@ -22,8 +21,7 @@ corresponding to the weighted Alpha Shape.
|
||||||
|
|
||||||
typedef double coord_type;
|
typedef double coord_type;
|
||||||
|
|
||||||
typedef CGAL::Simple_cartesian<coord_type> SC;
|
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
||||||
typedef CGAL::Filtered_kernel<SC> K;
|
|
||||||
typedef K::Point_2 Point;
|
typedef K::Point_2 Point;
|
||||||
typedef K::Weighted_point_2 Weighted_point;
|
typedef K::Weighted_point_2 Weighted_point;
|
||||||
typedef K::Segment_2 Segment;
|
typedef K::Segment_2 Segment;
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,7 @@ of the alpha complex where singular faces are removed.
|
||||||
|
|
||||||
\cgalClassifedRefPages
|
\cgalClassifedRefPages
|
||||||
|
|
||||||
## Concepts ##
|
\cgalCRPSection{Concepts}
|
||||||
- `AlphaShapeTraits_3`
|
- `AlphaShapeTraits_3`
|
||||||
- `WeightedAlphaShapeTraits_3`
|
- `WeightedAlphaShapeTraits_3`
|
||||||
- `AlphaShapeCell_3`
|
- `AlphaShapeCell_3`
|
||||||
|
|
@ -93,7 +93,7 @@ of the alpha complex where singular faces are removed.
|
||||||
- `FixedAlphaShapeCell_3`
|
- `FixedAlphaShapeCell_3`
|
||||||
- `FixedAlphaShapeVertex_3`
|
- `FixedAlphaShapeVertex_3`
|
||||||
|
|
||||||
## Classes ##
|
\cgalCRPSection{Classes}
|
||||||
- `CGAL::Alpha_status<NT>`
|
- `CGAL::Alpha_status<NT>`
|
||||||
- `CGAL::Alpha_shape_3<Dt,ExactAlphaComparisonTag>`
|
- `CGAL::Alpha_shape_3<Dt,ExactAlphaComparisonTag>`
|
||||||
- `CGAL::Alpha_shape_vertex_base_3<Traits,Vb>`
|
- `CGAL::Alpha_shape_vertex_base_3<Traits,Vb>`
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,6 @@
|
||||||
|
|
||||||
#include <boost/unordered_set.hpp>
|
#include <boost/unordered_set.hpp>
|
||||||
#include <boost/unordered_map.hpp>
|
#include <boost/unordered_map.hpp>
|
||||||
#include <boost/foreach.hpp>
|
|
||||||
|
|
||||||
typedef CGAL::Exact_predicates_inexact_constructions_kernel Gt;
|
typedef CGAL::Exact_predicates_inexact_constructions_kernel Gt;
|
||||||
|
|
||||||
|
|
@ -73,7 +72,7 @@ int main()
|
||||||
as.get_alpha_shape_facets(std::back_inserter( regular_facets ), Alpha_shape_3::REGULAR );
|
as.get_alpha_shape_facets(std::back_inserter( regular_facets ), Alpha_shape_3::REGULAR );
|
||||||
|
|
||||||
std::vector<Alpha_shape_3::Facet> filtered_regular_facets;
|
std::vector<Alpha_shape_3::Facet> filtered_regular_facets;
|
||||||
BOOST_FOREACH(Alpha_shape_3::Facet f, regular_facets)
|
for(Alpha_shape_3::Facet f : regular_facets)
|
||||||
{
|
{
|
||||||
if ( marked_cells.count(f.first)==1 )
|
if ( marked_cells.count(f.first)==1 )
|
||||||
filtered_regular_facets.push_back(f);
|
filtered_regular_facets.push_back(f);
|
||||||
|
|
@ -90,7 +89,7 @@ int main()
|
||||||
boost::unordered_map< Alpha_shape_3::Vertex_handle, std::size_t> vids;
|
boost::unordered_map< Alpha_shape_3::Vertex_handle, std::size_t> vids;
|
||||||
points.clear();
|
points.clear();
|
||||||
|
|
||||||
BOOST_FOREACH(Alpha_shape_3::Facet f, filtered_regular_facets)
|
for(Alpha_shape_3::Facet f : filtered_regular_facets)
|
||||||
{
|
{
|
||||||
for (int i=1;i<4; ++i)
|
for (int i=1;i<4; ++i)
|
||||||
{
|
{
|
||||||
|
|
@ -104,7 +103,7 @@ int main()
|
||||||
std::ofstream output("out.off");
|
std::ofstream output("out.off");
|
||||||
output << "OFF\n " << points.size() << " " << filtered_regular_facets.size() << " 0\n";
|
output << "OFF\n " << points.size() << " " << filtered_regular_facets.size() << " 0\n";
|
||||||
std::copy(points.begin(), points.end(), std::ostream_iterator<Point>(output, "\n"));
|
std::copy(points.begin(), points.end(), std::ostream_iterator<Point>(output, "\n"));
|
||||||
BOOST_FOREACH(const Alpha_shape_3::Facet& f, filtered_regular_facets)
|
for(const Alpha_shape_3::Facet& f : filtered_regular_facets)
|
||||||
{
|
{
|
||||||
output << 3;
|
output << 3;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -979,8 +979,8 @@ public:
|
||||||
template<class OutputIterator>
|
template<class OutputIterator>
|
||||||
OutputIterator filtration(OutputIterator it) const
|
OutputIterator filtration(OutputIterator it) const
|
||||||
{
|
{
|
||||||
Dispatch_or_drop_output_iterator<cpp11::tuple<CGAL::Object>, cpp11::tuple<OutputIterator> > out(it);
|
Dispatch_or_drop_output_iterator<std::tuple<CGAL::Object>, std::tuple<OutputIterator> > out(it);
|
||||||
return cpp11::template get<0>( filtration_with_alpha_values(out) );
|
return std::template get<0>( filtration_with_alpha_values(out) );
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ aforementioned concepts.
|
||||||
|
|
||||||
\cgalClassifedRefPages
|
\cgalClassifedRefPages
|
||||||
|
|
||||||
## Concepts ##
|
\cgalCRPSection{Concepts}
|
||||||
|
|
||||||
- `ApolloniusSite_2`
|
- `ApolloniusSite_2`
|
||||||
- `ApolloniusGraphDataStructure_2`
|
- `ApolloniusGraphDataStructure_2`
|
||||||
|
|
@ -48,7 +48,7 @@ aforementioned concepts.
|
||||||
- `ApolloniusGraphTraits_2`
|
- `ApolloniusGraphTraits_2`
|
||||||
- `ApolloniusGraphHierarchyVertexBase_2`
|
- `ApolloniusGraphHierarchyVertexBase_2`
|
||||||
|
|
||||||
## Classes ##
|
\cgalCRPSection{Classes}
|
||||||
|
|
||||||
- `CGAL::Apollonius_graph_2<Gt,Agds>`
|
- `CGAL::Apollonius_graph_2<Gt,Agds>`
|
||||||
- `CGAL::Apollonius_site_2<K>`
|
- `CGAL::Apollonius_site_2<K>`
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#include <CGAL/basic.h>
|
#include <CGAL/config.h>
|
||||||
|
|
||||||
// standard includes
|
// standard includes
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
|
||||||
|
|
@ -48,10 +48,6 @@ public:
|
||||||
const Weight& w = Weight(0))
|
const Weight& w = Weight(0))
|
||||||
: _p(p), _w(w) {}
|
: _p(p), _w(w) {}
|
||||||
|
|
||||||
Apollonius_site_2(const Apollonius_site_2& other)
|
|
||||||
: _p(other._p), _w(other._w) {}
|
|
||||||
|
|
||||||
|
|
||||||
const Point_2& point() const { return _p; }
|
const Point_2& point() const { return _p; }
|
||||||
const Weight& weight() const { return _w; }
|
const Weight& weight() const { return _w; }
|
||||||
RT x() const { return _p.x(); }
|
RT x() const { return _p.x(); }
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ typedef CGAL::Filtered_exact<inexact_type,exact_type> number_t;
|
||||||
#include <CGAL/Simple_cartesian.h>
|
#include <CGAL/Simple_cartesian.h>
|
||||||
|
|
||||||
#ifndef DONT_USE_FILTERED_EXACT
|
#ifndef DONT_USE_FILTERED_EXACT
|
||||||
struct Kernel : public CGAL::Simple_cartesian<number_t> {};
|
typedef CGAL::Simple_cartesian<number_t> Kernel;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef CGAL::Integral_domain_without_division_tag Method_tag;
|
typedef CGAL::Integral_domain_without_division_tag Method_tag;
|
||||||
|
|
@ -30,8 +30,8 @@ typedef CGAL::Integral_domain_without_division_tag Method_tag;
|
||||||
#include "./include/test.h"
|
#include "./include/test.h"
|
||||||
|
|
||||||
|
|
||||||
struct CK : public CGAL::Simple_cartesian<inexact_type> {};
|
typedef CGAL::Simple_cartesian<inexact_type> CK;
|
||||||
struct EK : public CGAL::Simple_cartesian<exact_type> {};
|
typedef CGAL::Simple_cartesian<exact_type> EK;
|
||||||
|
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ typedef CGAL::Filtered_exact<inexact_type,exact_type> number_t;
|
||||||
#include <CGAL/Simple_cartesian.h>
|
#include <CGAL/Simple_cartesian.h>
|
||||||
|
|
||||||
#ifndef DNOT_USE_FILTERED_EXACT
|
#ifndef DNOT_USE_FILTERED_EXACT
|
||||||
struct Kernel : public CGAL::Simple_cartesian<number_t> {};
|
typedef CGAL::Simple_cartesian<number_t> K;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef CGAL::Integral_domain_without_division_tag Method_tag;
|
typedef CGAL::Integral_domain_without_division_tag Method_tag;
|
||||||
|
|
@ -31,8 +31,8 @@ typedef CGAL::Integral_domain_without_division_tag Method_tag;
|
||||||
#include "./include/test.h"
|
#include "./include/test.h"
|
||||||
|
|
||||||
|
|
||||||
struct CK : public CGAL::Simple_cartesian<inexact_type> {};
|
typedef CGAL::Simple_cartesian<inexact_type> CK;
|
||||||
struct EK : public CGAL::Simple_cartesian<exact_type> {};
|
typedef CGAL::Simple_cartesian<exact_type> EK;
|
||||||
|
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
|
|
|
||||||
|
|
@ -10,11 +10,11 @@
|
||||||
|
|
||||||
typedef CGAL::Exact_rational exact_nt;
|
typedef CGAL::Exact_rational exact_nt;
|
||||||
|
|
||||||
struct Rep : public CGAL::Simple_cartesian<exact_nt> {};
|
typedef CGAL::Simple_cartesian<exact_nt> Rep;
|
||||||
|
|
||||||
typedef CGAL::Integral_domain_without_division_tag Method_tag;
|
typedef CGAL::Integral_domain_without_division_tag Method_tag;
|
||||||
|
|
||||||
struct Gt : public CGAL::Apollonius_graph_traits_2<Rep,Method_tag> {};
|
typedef CGAL::Apollonius_graph_traits_2<Rep,Method_tag> Gt;
|
||||||
|
|
||||||
typedef CGAL::Apollonius_graph_2<Gt> AG2;
|
typedef CGAL::Apollonius_graph_2<Gt> AG2;
|
||||||
typedef AG2::Point_2 Point_2;
|
typedef AG2::Point_2 Point_2;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,3 @@
|
||||||
#include <CGAL/basic.h>
|
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
|
@ -22,7 +20,7 @@ typedef CGAL::Filtered_exact<inexact_type,exact_type> number_t;
|
||||||
#include <CGAL/Simple_cartesian.h>
|
#include <CGAL/Simple_cartesian.h>
|
||||||
|
|
||||||
#ifndef DONT_USE_FILTERED_EXACT
|
#ifndef DONT_USE_FILTERED_EXACT
|
||||||
struct Kernel : public CGAL::Simple_cartesian<number_t> {};
|
typedef CGAL::Simple_cartesian<number_t> Kernel;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef CGAL::Integral_domain_without_division_tag Method_tag;
|
typedef CGAL::Integral_domain_without_division_tag Method_tag;
|
||||||
|
|
@ -30,8 +28,8 @@ typedef CGAL::Integral_domain_without_division_tag Method_tag;
|
||||||
#include "./include/test.h"
|
#include "./include/test.h"
|
||||||
|
|
||||||
|
|
||||||
struct CK : public CGAL::Simple_cartesian<double> {};
|
typedef CGAL::Simple_cartesian<double> CK;
|
||||||
struct EK : public CGAL::Simple_cartesian<CGAL::MP_Float> {};
|
typedef CGAL::Simple_cartesian<CGAL::MP_Float> EK;
|
||||||
|
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ of both types
|
||||||
`CGAL::Line_arc_2<CircularKernel>` or
|
`CGAL::Line_arc_2<CircularKernel>` or
|
||||||
`CGAL::Circular_arc_2<CircularKernel>`.
|
`CGAL::Circular_arc_2<CircularKernel>`.
|
||||||
|
|
||||||
It uses the <A HREF="http://www.boost.org/doc/html/variant.html">boost::variant</A>.
|
It uses the <A HREF="https://www.boost.org/doc/html/variant.html">boost::variant</A>.
|
||||||
|
|
||||||
\cgalModels `ArrangementTraits_2`
|
\cgalModels `ArrangementTraits_2`
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,3 @@
|
||||||
/// \ingroup PkgArrangementOnSurface2Macros
|
|
||||||
/// @{
|
|
||||||
/*!
|
|
||||||
* If the macro is set to one, then \f$x\f$-monotone curves are always
|
|
||||||
* directed from left-to-right.
|
|
||||||
*/
|
|
||||||
#define CGAL_ALWAYS_LEFT_TO_RIGHT
|
|
||||||
/// @}
|
|
||||||
|
|
||||||
namespace CGAL {
|
namespace CGAL {
|
||||||
/*! \ingroup PkgArrangementOnSurface2TraitsClasses
|
/*! \ingroup PkgArrangementOnSurface2TraitsClasses
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
/*
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
class ArrTrimTraits_2 {
|
|
||||||
public:
|
|
||||||
|
|
||||||
typedef ArrTraits::X_monotone_curve_2 X_monotone_curve_2;
|
|
||||||
typedef ArrTraits::Point_2 Point_2;
|
|
||||||
|
|
||||||
/*!
|
|
||||||
returns an \f$ x\f$-monotone trimmed version \f$ x\f$-monotone
|
|
||||||
connecting `p1` and `p2` (i.e., the
|
|
||||||
two input points are its endpoints).
|
|
||||||
*/
|
|
||||||
X_monotone_curve_2 operator() ( X_monotone_curve_2 xcv,
|
|
||||||
Point_2 p1, Point_2 p2);
|
|
||||||
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -87,18 +87,18 @@ implemented as peripheral classes or as free (global) functions.
|
||||||
|
|
||||||
\cgalClassifedRefPages
|
\cgalClassifedRefPages
|
||||||
|
|
||||||
## Enumerations ##
|
\cgalCRPSection{Enumerations}
|
||||||
|
|
||||||
- `CGAL::Arr_parameter_space`
|
- `CGAL::Arr_parameter_space`
|
||||||
- `CGAL::Arr_curve_end`
|
- `CGAL::Arr_curve_end`
|
||||||
- `CGAL::Arr_halfedge_direction`
|
- `CGAL::Arr_halfedge_direction`
|
||||||
|
|
||||||
## Tags ##
|
\cgalCRPSection{Tags}
|
||||||
|
|
||||||
- `CGAL::Arr_oblivious_side_tag`
|
- `CGAL::Arr_oblivious_side_tag`
|
||||||
- `CGAL::Arr_open_side_tag`
|
- `CGAL::Arr_open_side_tag`
|
||||||
|
|
||||||
## Concepts ##
|
\cgalCRPSection{Concepts}
|
||||||
|
|
||||||
- `ArrangementDcel`
|
- `ArrangementDcel`
|
||||||
- `ArrangementDcelWithRebind`
|
- `ArrangementDcelWithRebind`
|
||||||
|
|
@ -119,13 +119,13 @@ implemented as peripheral classes or as free (global) functions.
|
||||||
- `ArrangementPointLocation_2`
|
- `ArrangementPointLocation_2`
|
||||||
- `ArrangementVerticalRayShoot_2`
|
- `ArrangementVerticalRayShoot_2`
|
||||||
|
|
||||||
## Geometric Object Concepts ##
|
\cgalCRPSection{Geometric Object Concepts}
|
||||||
|
|
||||||
- `ArrTraits::Point_2`
|
- `ArrTraits::Point_2`
|
||||||
- `ArrTraits::XMonotoneCurve_2`
|
- `ArrTraits::XMonotoneCurve_2`
|
||||||
- `ArrTraits::Curve_2`
|
- `ArrTraits::Curve_2`
|
||||||
|
|
||||||
## Function Object Concepts ##
|
\cgalCRPSection{Function Object Concepts}
|
||||||
|
|
||||||
- `ArrTraits::CompareX_2`
|
- `ArrTraits::CompareX_2`
|
||||||
- `ArrTraits::CompareXy_2`
|
- `ArrTraits::CompareXy_2`
|
||||||
|
|
@ -149,7 +149,7 @@ implemented as peripheral classes or as free (global) functions.
|
||||||
- `ArrTraits::Approximate_2`
|
- `ArrTraits::Approximate_2`
|
||||||
- `ArrTraits::ConstructXMonotoneCurve_2`
|
- `ArrTraits::ConstructXMonotoneCurve_2`
|
||||||
|
|
||||||
## Classes ##
|
\cgalCRPSection{Classes}
|
||||||
|
|
||||||
- `CGAL::Arrangement_2<Traits,Dcel>`
|
- `CGAL::Arrangement_2<Traits,Dcel>`
|
||||||
- `CGAL::Arr_accessor<Arrangement>`
|
- `CGAL::Arr_accessor<Arrangement>`
|
||||||
|
|
@ -188,10 +188,10 @@ implemented as peripheral classes or as free (global) functions.
|
||||||
- `CGAL::Arr_face_index_map<Arrangement>`
|
- `CGAL::Arr_face_index_map<Arrangement>`
|
||||||
- `CGAL::Arr_point_location_result<Arrangement>`
|
- `CGAL::Arr_point_location_result<Arrangement>`
|
||||||
|
|
||||||
## Macros ##
|
\cgalCRPSection{Macros}
|
||||||
- \link CGAL_ARR_POINT_LOCATION_VERSION `CGAL_ARR_POINT_LOCATION_VERSION` \endlink
|
- \link CGAL_ARR_POINT_LOCATION_VERSION `CGAL_ARR_POINT_LOCATION_VERSION` \endlink
|
||||||
|
|
||||||
## Functions ##
|
\cgalCRPSection{Functions}
|
||||||
|
|
||||||
- `CGAL::is_valid()`
|
- `CGAL::is_valid()`
|
||||||
- `CGAL::insert()`
|
- `CGAL::insert()`
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
//! \file examples/Arrangement_on_surface_2/Bezier_curves.cpp
|
//! \file examples/Arrangement_on_surface_2/Bezier_curves.cpp
|
||||||
// Constructing an arrangement of Bezier curves.
|
// Constructing an arrangement of Bezier curves.
|
||||||
|
|
||||||
#include <CGAL/basic.h>
|
#include <CGAL/config.h>
|
||||||
|
|
||||||
#ifndef CGAL_USE_CORE
|
#ifndef CGAL_USE_CORE
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#include <CGAL/basic.h>
|
#include <CGAL/config.h>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
#if (!CGAL_USE_CORE) && (!CGAL_USE_LEDA) && (!(CGAL_USE_GMP && CGAL_USE_MPFI))
|
#if (!CGAL_USE_CORE) && (!CGAL_USE_LEDA) && (!(CGAL_USE_GMP && CGAL_USE_MPFI))
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
//! \file examples/Arrangement_on_surface_2/conic_multiplicities.cpp
|
//! \file examples/Arrangement_on_surface_2/conic_multiplicities.cpp
|
||||||
// Handling intersection points with multiplicity between conic arcs.
|
// Handling intersection points with multiplicity between conic arcs.
|
||||||
|
|
||||||
#include <CGAL/basic.h>
|
#include <CGAL/config.h>
|
||||||
|
|
||||||
#ifndef CGAL_USE_CORE
|
#ifndef CGAL_USE_CORE
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
//! \file examples/Arrangement_on_surface_2/conics.cpp
|
//! \file examples/Arrangement_on_surface_2/conics.cpp
|
||||||
// Constructing an arrangement of various conic arcs.
|
// Constructing an arrangement of various conic arcs.
|
||||||
#include <CGAL/basic.h>
|
#include <CGAL/config.h>
|
||||||
|
|
||||||
#ifndef CGAL_USE_CORE
|
#ifndef CGAL_USE_CORE
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,6 @@
|
||||||
//! \file examples/Arrangement_on_surface_2/edge_manipulation.cpp
|
//! \file examples/Arrangement_on_surface_2/edge_manipulation.cpp
|
||||||
// Using the edge-manipulation functions.
|
// Using the edge-manipulation functions.
|
||||||
|
|
||||||
#include <CGAL/basic.h>
|
|
||||||
|
|
||||||
#include <CGAL/Exact_predicates_exact_constructions_kernel.h>
|
#include <CGAL/Exact_predicates_exact_constructions_kernel.h>
|
||||||
#include <CGAL/Arr_segment_traits_2.h>
|
#include <CGAL/Arr_segment_traits_2.h>
|
||||||
#include <CGAL/Arrangement_2.h>
|
#include <CGAL/Arrangement_2.h>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
// Constructing a arrangement of Bezier polycurves.
|
// Constructing a arrangement of Bezier polycurves.
|
||||||
|
|
||||||
#include <CGAL/basic.h>
|
#include <CGAL/config.h>
|
||||||
|
|
||||||
#ifndef CGAL_USE_CORE
|
#ifndef CGAL_USE_CORE
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
// Constructing an arrangement of polycurves.
|
// Constructing an arrangement of polycurves.
|
||||||
|
|
||||||
#include <CGAL/basic.h>
|
#include <CGAL/config.h>
|
||||||
|
|
||||||
#ifndef CGAL_USE_CORE
|
#ifndef CGAL_USE_CORE
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
// Testing the do_equal function
|
// Testing the do_equal function
|
||||||
|
|
||||||
#include <CGAL/basic.h>
|
#include <CGAL/config.h>
|
||||||
|
|
||||||
#ifndef CGAL_USE_CORE
|
#ifndef CGAL_USE_CORE
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
//! \file examples/Arrangement_2/ex_rational_functions.cpp
|
//! \file examples/Arrangement_2/rational_functions.cpp
|
||||||
// Constructing an arrangement of arcs of rational functions.
|
// Constructing an arrangement of arcs of rational functions.
|
||||||
|
|
||||||
#include <CGAL/basic.h>
|
#include <CGAL/config.h>
|
||||||
|
|
||||||
#ifndef CGAL_USE_CORE
|
#ifndef CGAL_USE_CORE
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
//! \file examples/Arrangement_2/ex_rational_functions.cpp
|
//! \file examples/Arrangement_2/rational_functions_rational_coefficients.cpp
|
||||||
// Constructing an arrangement of arcs of rational functions.
|
// Constructing an arrangement of arcs of rational functions.
|
||||||
|
|
||||||
#include <CGAL/basic.h>
|
#include <CGAL/config.h>
|
||||||
|
|
||||||
#ifndef CGAL_USE_CORE
|
#ifndef CGAL_USE_CORE
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
//! \file examples/Arrangement_2/unbounded_rational_functions.cpp
|
//! \file examples/Arrangement_2/unbounded_rational_functions.cpp
|
||||||
// Constructing an arrangement of unbounded portions of rational functions.
|
// Constructing an arrangement of unbounded portions of rational functions.
|
||||||
|
|
||||||
#include <CGAL/basic.h>
|
#include <CGAL/config.h>
|
||||||
|
|
||||||
#ifndef CGAL_USE_CORE
|
#ifndef CGAL_USE_CORE
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
|
||||||
|
|
@ -208,82 +208,6 @@ public:
|
||||||
// defining a type that inherits from the template we need to alias. However,
|
// defining a type that inherits from the template we need to alias. However,
|
||||||
// the non-C++11 code requires the (re)definition of all constructors of the
|
// the non-C++11 code requires the (re)definition of all constructors of the
|
||||||
// derived class.
|
// derived class.
|
||||||
#if defined(CGAL_CFG_NO_CPP0X_TEMPLATE_ALIASES)
|
|
||||||
// Type definition for the construction surface-sweep visitor.
|
|
||||||
template <typename Evt, typename Crv>
|
|
||||||
struct Construction_helper :
|
|
||||||
public Arr_bounded_planar_construction_helper<Gt2, Arr, Evt, Crv>
|
|
||||||
{
|
|
||||||
typedef Arr_bounded_planar_construction_helper<Gt2, Arr, Evt, Crv>
|
|
||||||
Base;
|
|
||||||
Construction_helper(Arr* arr) : Base(arr) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Type definition for the no-intersection construction surface-sweep visitor.
|
|
||||||
template <typename Evt, typename Crv>
|
|
||||||
struct No_intersection_construction_helper :
|
|
||||||
public Arr_bounded_planar_construction_helper<Gt2, Arr, Evt, Crv>
|
|
||||||
{
|
|
||||||
typedef Arr_bounded_planar_construction_helper<Gt2, Arr, Evt, Crv>
|
|
||||||
Base;
|
|
||||||
No_intersection_construction_helper(Arr* arr) : Base(arr) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Type definition for the insertion surface-sweep visitor.
|
|
||||||
typedef Arr_insertion_traits_2<Gt2, Arr> I_traits;
|
|
||||||
template <typename Evt, typename Crv>
|
|
||||||
struct Insertion_helper :
|
|
||||||
public Arr_bounded_planar_insertion_helper<I_traits, Arr, Evt, Crv>
|
|
||||||
{
|
|
||||||
typedef Arr_bounded_planar_insertion_helper<I_traits, Arr, Evt, Crv>
|
|
||||||
Base;
|
|
||||||
Insertion_helper(Arr* arr) : Base(arr) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Type definition for the no-intersection insertion surface-sweep visitor.
|
|
||||||
typedef Arr_basic_insertion_traits_2<Gt2, Arr> Nxi_traits;
|
|
||||||
template <typename Evt, typename Crv>
|
|
||||||
struct No_intersection_insertion_helper :
|
|
||||||
public Arr_bounded_planar_insertion_helper<Nxi_traits, Arr, Evt, Crv>
|
|
||||||
{
|
|
||||||
typedef Arr_bounded_planar_insertion_helper<Nxi_traits, Arr, Evt, Crv>
|
|
||||||
Base;
|
|
||||||
No_intersection_insertion_helper(Arr* arr) : Base(arr) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Type definition for the batched point-location surface-sweep visitor.
|
|
||||||
typedef Arr_batched_point_location_traits_2<Arr> Bpl_traits;
|
|
||||||
template <typename Evt, typename Crv>
|
|
||||||
struct Batched_point_location_helper :
|
|
||||||
public Arr_bounded_planar_batched_pl_helper<Bpl_traits, Arr, Evt, Crv>
|
|
||||||
{
|
|
||||||
typedef Arr_bounded_planar_batched_pl_helper<Bpl_traits, Arr, Evt, Crv>
|
|
||||||
Base;
|
|
||||||
Batched_point_location_helper(const Arr* arr) : Base(arr) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Type definition for the vertical decomposition sweep-line visitor.
|
|
||||||
typedef Arr_batched_point_location_traits_2<Arr> Vd_traits;
|
|
||||||
template <typename Evt, typename Crv>
|
|
||||||
struct Vertical_decomposition_helper :
|
|
||||||
public Arr_bounded_planar_vert_decomp_helper<Vd_traits, Arr, Evt, Crv>
|
|
||||||
{
|
|
||||||
typedef Arr_bounded_planar_vert_decomp_helper<Vd_traits, Arr, Evt, Crv>
|
|
||||||
Base;
|
|
||||||
Vertical_decomposition_helper(const Arr* arr) : Base(arr) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Type definition for the overlay surface-sweep visitor.
|
|
||||||
template <typename Gt, typename Evt, typename Crv,
|
|
||||||
typename ArrA, typename ArrB>
|
|
||||||
struct Overlay_helper :
|
|
||||||
public Arr_bounded_planar_overlay_helper<Gt, ArrA, ArrB, Arr, Evt, Crv>
|
|
||||||
{
|
|
||||||
typedef Arr_bounded_planar_overlay_helper<Gt, ArrA, ArrB, Arr, Evt, Crv>
|
|
||||||
Base;
|
|
||||||
Overlay_helper(const ArrA* arr_a, const ArrB* arr_b) : Base(arr_a, arr_b) {}
|
|
||||||
};
|
|
||||||
#else
|
|
||||||
// Type definition for the construction surface-sweep visitor.
|
// Type definition for the construction surface-sweep visitor.
|
||||||
template <typename Evt, typename Crv>
|
template <typename Evt, typename Crv>
|
||||||
using Construction_helper =
|
using Construction_helper =
|
||||||
|
|
@ -323,7 +247,6 @@ public:
|
||||||
typename ArrA, typename ArrB>
|
typename ArrA, typename ArrB>
|
||||||
using Overlay_helper =
|
using Overlay_helper =
|
||||||
Arr_bounded_planar_overlay_helper<Gt, ArrA, ArrB, Arr, Evt, Crv>;
|
Arr_bounded_planar_overlay_helper<Gt, ArrA, ArrB, Arr, Evt, Crv>;
|
||||||
#endif
|
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
|
||||||
|
|
@ -2881,11 +2881,13 @@ public:
|
||||||
/*! Copy constructor
|
/*! Copy constructor
|
||||||
* \param other the other arc
|
* \param other the other arc
|
||||||
*/
|
*/
|
||||||
|
#ifdef DOXYGEN_RUNNING
|
||||||
Arr_geodesic_arc_on_sphere_3
|
Arr_geodesic_arc_on_sphere_3
|
||||||
(const Arr_geodesic_arc_on_sphere_3& other) : Base(other)
|
(const Arr_geodesic_arc_on_sphere_3& other) : Base(other)
|
||||||
{
|
{
|
||||||
m_is_x_monotone = other.m_is_x_monotone;
|
m_is_x_monotone = other.m_is_x_monotone;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*! Constructor
|
/*! Constructor
|
||||||
* \param src the source point of the arc
|
* \param src the source point of the arc
|
||||||
|
|
|
||||||
|
|
@ -109,6 +109,8 @@ public:
|
||||||
Point_handle (p)
|
Point_handle (p)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
_One_root_point_2& operator=(const _One_root_point_2&)=default;
|
||||||
|
|
||||||
/*! Constructor of a point with one-root coefficients.
|
/*! Constructor of a point with one-root coefficients.
|
||||||
This constructor of a point can also be used with rational coefficients
|
This constructor of a point can also be used with rational coefficients
|
||||||
thanks to convertor of CoordNT. */
|
thanks to convertor of CoordNT. */
|
||||||
|
|
|
||||||
|
|
@ -89,6 +89,15 @@ public:
|
||||||
_rational_function(rational_function),
|
_rational_function(rational_function),
|
||||||
_x_coordinate(x_coordinate) {}
|
_x_coordinate(x_coordinate) {}
|
||||||
|
|
||||||
|
Algebraic_point_2_rep(const Algebraic_point_2_rep& other)
|
||||||
|
{
|
||||||
|
if (this != &other) // protect against invalid self-assignment
|
||||||
|
{
|
||||||
|
_rational_function = other._rational_function;
|
||||||
|
_x_coordinate = other._x_coordinate;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//assignment oparator
|
//assignment oparator
|
||||||
Algebraic_point_2_rep& operator=(const Algebraic_point_2_rep& other)
|
Algebraic_point_2_rep& operator=(const Algebraic_point_2_rep& other)
|
||||||
{
|
{
|
||||||
|
|
@ -374,10 +383,6 @@ public:
|
||||||
Algebraic_point_2() :
|
Algebraic_point_2() :
|
||||||
Base(static_cast<const Base &> (get_default_instance())) {}
|
Base(static_cast<const Base &> (get_default_instance())) {}
|
||||||
|
|
||||||
// explicit copy-constructor, required by VC9
|
|
||||||
Algebraic_point_2 (const Self & p)
|
|
||||||
: Base(static_cast<const Base &> (p)) {}
|
|
||||||
|
|
||||||
Comparison_result compare_xy_2(const Algebraic_point_2& other,
|
Comparison_result compare_xy_2(const Algebraic_point_2& other,
|
||||||
const Cache& cache) const
|
const Cache& cache) const
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -232,6 +232,8 @@ public:
|
||||||
Rational_function (const Self & r)
|
Rational_function (const Self & r)
|
||||||
: Base(static_cast<const Base &> (r)) {}
|
: Base(static_cast<const Base &> (r)) {}
|
||||||
|
|
||||||
|
Self& operator=(const Self&)=default;
|
||||||
|
|
||||||
CGAL::Sign sign_at(const Algebraic_real_1& x,
|
CGAL::Sign sign_at(const Algebraic_real_1& x,
|
||||||
CGAL::Sign epsilon = CGAL::ZERO) const
|
CGAL::Sign epsilon = CGAL::ZERO) const
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -321,7 +321,6 @@ public:
|
||||||
// the non-C++11 code requires the (re)definition of all constructors of the
|
// the non-C++11 code requires the (re)definition of all constructors of the
|
||||||
// derived class. The non-C++11 code follows the commented out C++11 code.
|
// derived class. The non-C++11 code follows the commented out C++11 code.
|
||||||
// When we move to C++11 we can use the more elgant code.
|
// When we move to C++11 we can use the more elgant code.
|
||||||
#if defined(CGAL_CFG_NO_CPP0X_TEMPLATE_ALIASES)
|
|
||||||
// Type definition for the construction surface-sweep visitor.
|
// Type definition for the construction surface-sweep visitor.
|
||||||
template <typename Evt, typename Crv>
|
template <typename Evt, typename Crv>
|
||||||
struct Construction_helper :
|
struct Construction_helper :
|
||||||
|
|
@ -396,47 +395,6 @@ public:
|
||||||
Base;
|
Base;
|
||||||
Overlay_helper(const ArrA* arr_a, const ArrB* arr_b) : Base(arr_a, arr_b) {}
|
Overlay_helper(const ArrA* arr_a, const ArrB* arr_b) : Base(arr_a, arr_b) {}
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
// Type definition for the construction surface-sweep visitor.
|
|
||||||
template <typename Evt, typename Crv>
|
|
||||||
using Construction_helper =
|
|
||||||
Arr_spherical_construction_helper<Gt2, Arr, Evt, Crv>;
|
|
||||||
|
|
||||||
// Type definition for the no-intersection construction surface-sweep visitor.
|
|
||||||
template <typename Evt, typename Crv>
|
|
||||||
using No_intersection_construction_helper =
|
|
||||||
Arr_spherical_construction_helper<Gt2, Arr, Evt, Crv>;
|
|
||||||
|
|
||||||
// Type definition for the insertion surface-sweep visitor.
|
|
||||||
typedef Arr_insertion_traits_2<Gt2, Arr> I_traits;
|
|
||||||
template <typename Evt, typename Crv>
|
|
||||||
using Insertion_helper =
|
|
||||||
Arr_spherical_insertion_helper<I_traits, Arr, Evt, Crv>;
|
|
||||||
|
|
||||||
// Type definition for the no-intersection insertion surface-sweep visitor.
|
|
||||||
typedef Arr_basic_insertion_traits_2<Gt2, Arr> Nxi_traits;
|
|
||||||
template <typename Evt, typename Crv>
|
|
||||||
using No_intersection_insertion_helper =
|
|
||||||
Arr_spherical_insertion_helper<Nxi_traits, Arr, Evt, Crv>;
|
|
||||||
|
|
||||||
// Type definition for the batched point-location surface-sweep visitor.
|
|
||||||
typedef Arr_batched_point_location_traits_2<Arr> Bpl_traits;
|
|
||||||
template <typename Evt, typename Crv>
|
|
||||||
using Batched_point_location_helper =
|
|
||||||
Arr_spherical_batched_pl_helper<Bpl_traits, Arr, Evt, Crv>;
|
|
||||||
|
|
||||||
// Type definition for the vertical decomposition surface-sweep visitor.
|
|
||||||
typedef Arr_batched_point_location_traits_2<Arr> Vd_traits;
|
|
||||||
template <typename Evt, typename Crv>
|
|
||||||
using Vertical_decomposition_helper =
|
|
||||||
Arr_spherical_vert_decomp_helper<Vd_traits, Arr, Evt, Crv>;
|
|
||||||
|
|
||||||
// Type definition for the overlay surface-sweep visitor.
|
|
||||||
template <typename Gt, typename Evt, typename Crv,
|
|
||||||
typename ArrA, typename ArrB>
|
|
||||||
using Overlay_helper =
|
|
||||||
Arr_spherical_overlay_helper<Gt, ArrA, ArrB, Arr, Evt, Crv>;
|
|
||||||
#endif
|
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
|
||||||
|
|
@ -226,82 +226,6 @@ public:
|
||||||
// defining a type that inherits from the template we need to alias. However,
|
// defining a type that inherits from the template we need to alias. However,
|
||||||
// the non-C++11 code requires the (re)definition of all constructors of the
|
// the non-C++11 code requires the (re)definition of all constructors of the
|
||||||
// derived class.
|
// derived class.
|
||||||
#if defined(CGAL_CFG_NO_CPP0X_TEMPLATE_ALIASES)
|
|
||||||
// Type definition for the construction surface-sweep visitor.
|
|
||||||
template <typename Evt, typename Crv>
|
|
||||||
struct Construction_helper :
|
|
||||||
public Arr_unb_planar_construction_helper<Gt2, Arr, Evt, Crv>
|
|
||||||
{
|
|
||||||
typedef Arr_unb_planar_construction_helper<Gt2, Arr, Evt, Crv>
|
|
||||||
Base;
|
|
||||||
Construction_helper(Arr* arr) : Base(arr) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Type definition for the no-intersection construction surface-sweep visitor.
|
|
||||||
template <typename Evt, typename Crv>
|
|
||||||
struct No_intersection_construction_helper :
|
|
||||||
public Arr_unb_planar_construction_helper<Gt2, Arr, Evt, Crv>
|
|
||||||
{
|
|
||||||
typedef Arr_unb_planar_construction_helper<Gt2, Arr, Evt, Crv>
|
|
||||||
Base;
|
|
||||||
No_intersection_construction_helper(Arr* arr) : Base(arr) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Type definition for the insertion surface-sweep visitor.
|
|
||||||
typedef Arr_insertion_traits_2<Gt2, Arr> I_traits;
|
|
||||||
template <typename Evt, typename Crv>
|
|
||||||
struct Insertion_helper :
|
|
||||||
public Arr_unb_planar_insertion_helper<I_traits, Arr, Evt, Crv>
|
|
||||||
{
|
|
||||||
typedef Arr_unb_planar_insertion_helper<I_traits, Arr, Evt, Crv>
|
|
||||||
Base;
|
|
||||||
Insertion_helper(Arr* arr) : Base(arr) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Type definition for the no-intersection insertion surface-sweep visitor.
|
|
||||||
typedef Arr_basic_insertion_traits_2<Gt2, Arr> Nxi_traits;
|
|
||||||
template <typename Evt, typename Crv>
|
|
||||||
struct No_intersection_insertion_helper :
|
|
||||||
public Arr_unb_planar_insertion_helper<Nxi_traits, Arr, Evt, Crv>
|
|
||||||
{
|
|
||||||
typedef Arr_unb_planar_insertion_helper<Nxi_traits, Arr, Evt, Crv>
|
|
||||||
Base;
|
|
||||||
No_intersection_insertion_helper(Arr* arr) : Base(arr) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Type definition for the batched point-location surface-sweep visitor.
|
|
||||||
typedef Arr_batched_point_location_traits_2<Arr> Bpl_traits;
|
|
||||||
template <typename Evt, typename Crv>
|
|
||||||
struct Batched_point_location_helper :
|
|
||||||
public Arr_unb_planar_batched_pl_helper<Bpl_traits, Arr, Evt, Crv>
|
|
||||||
{
|
|
||||||
typedef Arr_unb_planar_batched_pl_helper<Bpl_traits, Arr, Evt, Crv>
|
|
||||||
Base;
|
|
||||||
Batched_point_location_helper(const Arr* arr) : Base(arr) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Type definition for the vertical decomposition surface-sweep visitor.
|
|
||||||
typedef Arr_batched_point_location_traits_2<Arr> Vd_traits;
|
|
||||||
template <typename Evt, typename Crv>
|
|
||||||
struct Vertical_decomposition_helper :
|
|
||||||
public Arr_unb_planar_vert_decomp_helper<Vd_traits, Arr, Evt, Crv>
|
|
||||||
{
|
|
||||||
typedef Arr_unb_planar_vert_decomp_helper<Vd_traits, Arr, Evt, Crv>
|
|
||||||
Base;
|
|
||||||
Vertical_decomposition_helper(const Arr* arr) : Base(arr) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Type definition for the overlay surface-sweep visitor.
|
|
||||||
template <typename Gt, typename Evt, typename Crv,
|
|
||||||
typename ArrA, typename ArrB>
|
|
||||||
struct Overlay_helper :
|
|
||||||
public Arr_unb_planar_overlay_helper<Gt, ArrA, ArrB, Arr, Evt, Crv>
|
|
||||||
{
|
|
||||||
typedef Arr_unb_planar_overlay_helper<Gt, ArrA, ArrB, Arr, Evt, Crv>
|
|
||||||
Base;
|
|
||||||
Overlay_helper(const ArrA* arr_a, const ArrB* arr_b) : Base(arr_a, arr_b) {}
|
|
||||||
};
|
|
||||||
#else
|
|
||||||
// Type definition for the construction surface-sweep visitor.
|
// Type definition for the construction surface-sweep visitor.
|
||||||
template <typename Evt, typename Crv>
|
template <typename Evt, typename Crv>
|
||||||
using Construction_helper =
|
using Construction_helper =
|
||||||
|
|
@ -341,7 +265,6 @@ public:
|
||||||
typename ArrA, typename ArrB>
|
typename ArrA, typename ArrB>
|
||||||
using Overlay_helper =
|
using Overlay_helper =
|
||||||
Arr_unb_planar_overlay_helper<Gt, ArrA, ArrB, Arr, Evt, Crv>;
|
Arr_unb_planar_overlay_helper<Gt, ArrA, ArrB, Arr, Evt, Crv>;
|
||||||
#endif
|
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue