Merge remote-tracking branch 'cgal/master' into Graphics_view-Fix_demo_IO-GF

This commit is contained in:
Maxime Gimeno 2019-03-07 14:01:02 +01:00
commit 0b31e6e5d8
1365 changed files with 112201 additions and 6068 deletions

View File

@ -1,5 +1,5 @@
language: cpp
dist: trusty
dist: xenial
sudo: required
git:
depth: 3
@ -19,19 +19,20 @@ env:
- PACKAGE='Distance_2 Distance_3 Envelope_2 '
- PACKAGE='Envelope_3 Filtered_kernel Generalized_map '
- PACKAGE='Generator Geomview GraphicsView '
- PACKAGE='HalfedgeDS Hash_map Homogeneous_kernel '
- PACKAGE='Inscribed_areas Installation Interpolation '
- PACKAGE='Intersections_2 Intersections_3 Interval_skip_list '
- PACKAGE='Interval_support Inventor Jet_fitting_3 '
- PACKAGE='Kernel_23 Kernel_d LEDA '
- PACKAGE='Linear_cell_complex MacOSX Maintenance '
- PACKAGE='Matrix_search Mesh_2 Mesh_3 '
- PACKAGE='Mesher_level Minkowski_sum_2 Minkowski_sum_3 '
- PACKAGE='Modifier Modular_arithmetic Nef_2 '
- PACKAGE='Nef_3 Nef_S2 NewKernel_d '
- PACKAGE='Number_types OpenNL Optimal_transportation_reconstruction_2 '
- PACKAGE='Optimisation_basic Partition_2 Periodic_2_triangulation_2 '
- PACKAGE='Periodic_3_mesh_3 Periodic_3_triangulation_3 Point_set_2 '
- PACKAGE='HalfedgeDS Hash_map Heat_method_3 '
- PACKAGE='Homogeneous_kernel Hyperbolic_triangulation_2 Inscribed_areas '
- PACKAGE='Installation Interpolation Intersections_2 '
- PACKAGE='Intersections_3 Interval_skip_list Interval_support '
- PACKAGE='Inventor Jet_fitting_3 Kernel_23 '
- PACKAGE='Kernel_d LEDA Linear_cell_complex '
- PACKAGE='MacOSX Maintenance Matrix_search '
- PACKAGE='Mesh_2 Mesh_3 Mesher_level '
- PACKAGE='Minkowski_sum_2 Minkowski_sum_3 Modifier '
- PACKAGE='Modular_arithmetic Nef_2 Nef_3 '
- PACKAGE='Nef_S2 NewKernel_d Number_types '
- PACKAGE='OpenNL Optimal_transportation_reconstruction_2 Optimisation_basic '
- PACKAGE='Partition_2 Periodic_2_triangulation_2 Periodic_3_mesh_3 '
- PACKAGE='Periodic_3_triangulation_3 Periodic_4_hyperbolic_triangulation_2 Point_set_2 '
- PACKAGE='Point_set_3 Point_set_processing_3 Point_set_shape_detection_3 '
- PACKAGE='Poisson_surface_reconstruction_3 Polygon Polygon_mesh_processing '
- PACKAGE='Polyhedron Polyhedron_IO Polyline_simplification_2 '
@ -43,26 +44,27 @@ env:
- PACKAGE='Skin_surface_3 Snap_rounding_2 Solver_interface '
- PACKAGE='Spatial_searching Spatial_sorting STL_Extension '
- PACKAGE='Straight_skeleton_2 Stream_lines_2 Stream_support '
- PACKAGE='Subdivision_method_3 Surface_mesh Surface_mesh_deformation '
- PACKAGE='Surface_mesher Surface_mesh_parameterization Surface_mesh_segmentation '
- PACKAGE='Surface_mesh_shortest_path Surface_mesh_simplification Surface_mesh_skeletonization '
- PACKAGE='Surface_sweep_2 TDS_2 TDS_3 '
- PACKAGE='Testsuite Three Triangulation '
- PACKAGE='Triangulation_2 Triangulation_3 Union_find '
- PACKAGE='Visibility_2 Voronoi_diagram_2 wininst '
compiler: clang-3.6
- PACKAGE='Subdivision_method_3 Surface_mesh Surface_mesh_approximation '
- PACKAGE='Surface_mesh_deformation Surface_mesher Surface_mesh_parameterization '
- PACKAGE='Surface_mesh_segmentation Surface_mesh_shortest_path Surface_mesh_simplification '
- PACKAGE='Surface_mesh_skeletonization Surface_sweep_2 TDS_2 '
- PACKAGE='TDS_3 Testsuite Three '
- PACKAGE='Triangulation Triangulation_2 Triangulation_3 '
- PACKAGE='Union_find Visibility_2 Voronoi_diagram_2 '
- PACKAGE='wininst '
compiler: clang
install:
- 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
- bash .travis/install.sh
- export CXX=clang++-3.6 CC=clang-3.6;
- export CXX=clang++ CC=clang;
before_script:
- wget -O doxygen_exe https://cgal.geometryfactory.com/~mgimeno/doxygen_exe
- sudo mv doxygen_exe /usr/bin/doxygen
- sudo chmod +x /usr/bin/doxygen
- mkdir -p build
- cd build
- cmake -DCMAKE_CXX_FLAGS="-std=c++11" -DCGAL_HEADER_ONLY=ON -DQt5_DIR="/opt/qt55/lib/cmake/Qt5" -DQt5Svg_DIR="/opt/qt55/lib/cmake/Qt5Svg" -DQt5OpenGL_DIR="/opt/qt55/lib/cmake/Qt5OpenGL" -DCMAKE_CXX_FLAGS_RELEASE=-DCGAL_NDEBUG -DWITH_examples=ON -DWITH_demos=ON -DWITH_tests=ON ..
- cmake -DCMAKE_CXX_FLAGS="-std=c++11" -DCGAL_HEADER_ONLY=ON -DCMAKE_CXX_FLAGS_RELEASE=-DCGAL_NDEBUG -DWITH_examples=ON -DWITH_demos=ON -DWITH_tests=ON ..
- make
- sudo make install &>/dev/null
- cd ..

View File

@ -18,40 +18,18 @@ function build_tests {
function build_demo {
mkdir -p build-travis
cd build-travis
if [ $NEED_3D = 1 ]; then
#install libqglviewer
git clone --depth=4 -b v2.6.3 --single-branch https://github.com/GillesDebunne/libQGLViewer.git ./qglviewer
pushd ./qglviewer/QGLViewer
#use qt5 instead of qt4
# export QT_SELECT=5
qmake NO_QT_VERSION_SUFFIX=yes
make -j2
if [ ! -f libQGLViewer.so ]; then
echo "libQGLViewer.so not made"
exit 1
else
echo "QGLViewer built successfully"
fi
#end install qglviewer
popd
fi
EXTRA_CXX_FLAGS=
case "$CC" in
clang*)
EXTRA_CXX_FLAGS="-Werror=inconsistent-missing-override"
;;
esac
if [ $NEED_3D = 1 ]; then
QGLVIEWERROOT=$PWD/qglviewer
export QGLVIEWERROOT
fi
cmake -DCGAL_DIR="/usr/local/lib/cmake/CGAL" -DQt5_DIR="/opt/qt55/lib/cmake/Qt5" -DQt5Svg_DIR="/opt/qt55/lib/cmake/Qt5Svg" -DQt5OpenGL_DIR="/opt/qt55/lib/cmake/Qt5OpenGL" -DCGAL_DONT_OVERRIDE_CMAKE_FLAGS:BOOL=ON -DCMAKE_CXX_FLAGS="${CXX_FLAGS} ${EXTRA_CXX_FLAGS}" ..
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
}
old_IFS=$IFS
IFS=$' '
ROOT="$PWD/.."
NEED_3D=0
for ARG in $(echo "$@")
do
#skip package maintenance
@ -146,12 +124,6 @@ cd $ROOT
EXAMPLES="$ARG/examples/$ARG"
TEST="$ARG/test/$ARG"
DEMOS=$ROOT/$ARG/demo/*
if [ "$ARG" = AABB_tree ] || [ "$ARG" = Alpha_shapes_3 ] ||\
[ "$ARG" = Circular_kernel_3 ] || [ "$ARG" = Linear_cell_complex ] ||\
[ "$ARG" = Periodic_3_triangulation_3 ] || [ "$ARG" = Principal_component_analysis ] ||\
[ "$ARG" = Surface_mesher ] || [ "$ARG" = Triangulation_3 ]; then
NEED_3D=1
fi
if [ -d "$ROOT/$EXAMPLES" ]
then
@ -206,10 +178,9 @@ cd $ROOT
done
if [ "$ARG" = Polyhedron_demo ]; then
DEMO=Polyhedron/demo/Polyhedron
NEED_3D=1
cd "$ROOT/$DEMO"
build_demo
fi
fi
done
IFS=$old_IFS
# Local Variables:

View File

@ -60,7 +60,7 @@ done
COPY=0
for LINE in $(cat "$PWD/.travis/template.txt")
do
if [ "$LINE" = "compiler: clang-3.6" ]
if [ "$LINE" = "compiler: clang" ]
then
COPY=1
fi

View File

@ -2,23 +2,13 @@
[ -n "$CGAL_DEBUG_TRAVIS" ] && set -x
DONE=0
sudo apt-get update
while [ $DONE = 0 ]
do
DONE=1 && sudo -E apt-add-repository -y "ppa:ppsspp/cmake" || DONE=0 && sleep 5
done
DONE=0
while [ $DONE = 0 ]
do
DONE=1 && sudo -E apt-add-repository -y "ppa:hedges/qt5.5" || DONE=0 && sleep 5
done
DONE=0
while [ $DONE = 0 ]
do
DONE=1 && sudo -E apt-get -yq --no-install-suggests --no-install-recommends --force-yes install clang-3.6 zsh \
flex bison cmake graphviz libgmp-dev libmpfr-dev libmpfi-dev zlib1g-dev libeigen3-dev libboost1.55-dev \
libboost-system1.55-dev libboost-program-options1.55-dev libboost-thread1.55-dev libboost-iostreams1.55-dev \
qt55base qt55script qt55svg qt55tools qt55graphicaleffects libopencv-dev mesa-common-dev libmetis-dev libglu1-mesa-dev \
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 \
libboost-system-dev libboost-program-options-dev libboost-thread-dev libboost-iostreams-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
exit 0

View File

@ -39,7 +39,9 @@ Geomview
GraphicsView
HalfedgeDS
Hash_map
Heat_method_3
Homogeneous_kernel
Hyperbolic_triangulation_2
Inscribed_areas
Installation
Interpolation
@ -75,6 +77,7 @@ Partition_2
Periodic_2_triangulation_2
Periodic_3_mesh_3
Periodic_3_triangulation_3
Periodic_4_hyperbolic_triangulation_2
Point_set_2
Point_set_3
Point_set_processing_3
@ -111,6 +114,7 @@ Stream_lines_2
Stream_support
Subdivision_method_3
Surface_mesh
Surface_mesh_approximation
Surface_mesh_deformation
Surface_mesher
Surface_mesh_parameterization

View File

@ -1,5 +1,5 @@
language: cpp
dist: trusty
dist: xenial
sudo: required
git:
depth: 3
@ -7,19 +7,19 @@ env:
matrix:
PACKAGES_MATRIX
compiler: clang-3.6
compiler: clang
install:
- 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
- bash .travis/install.sh
- export CXX=clang++-3.6 CC=clang-3.6;
- export CXX=clang++ CC=clang;
before_script:
- wget -O doxygen_exe https://cgal.geometryfactory.com/~mgimeno/doxygen_exe
- sudo mv doxygen_exe /usr/bin/doxygen
- sudo chmod +x /usr/bin/doxygen
- mkdir -p build
- cd build
- cmake -DCMAKE_CXX_FLAGS="-std=c++11" -DCGAL_HEADER_ONLY=ON -DQt5_DIR="/opt/qt55/lib/cmake/Qt5" -DQt5Svg_DIR="/opt/qt55/lib/cmake/Qt5Svg" -DQt5OpenGL_DIR="/opt/qt55/lib/cmake/Qt5OpenGL" -DCMAKE_CXX_FLAGS_RELEASE=-DCGAL_NDEBUG -DWITH_examples=ON -DWITH_demos=ON -DWITH_tests=ON ..
- cmake -DCMAKE_CXX_FLAGS="-std=c++11" -DCGAL_HEADER_ONLY=ON -DCMAKE_CXX_FLAGS_RELEASE=-DCGAL_NDEBUG -DWITH_examples=ON -DWITH_demos=ON -DWITH_tests=ON ..
- make
- sudo make install &>/dev/null
- cd ..

View File

@ -22,17 +22,17 @@
\cgalClassifedRefPages
## Concepts ##
\cgalCRPSection{Concepts}
- `AABBPrimitive`
- `AABBPrimitiveWithSharedData`
- `AABBTraits`
- `AABBGeomTraits`
## Classes ##
\cgalCRPSection{Classes}
- `CGAL::AABB_traits<GeomTraits,Primitive>`
- `CGAL::AABB_tree<AT>`
## Primitives ##
\cgalCRPSection{Primitives}
- `CGAL::AABB_triangle_primitive<GeomTraits, Iterator, CacheDatum>`
- `CGAL::AABB_segment_primitive<GeomTraits, Iterator, CacheDatum>`
- `CGAL::AABB_primitive<Id,ObjectPropertyMap,PointPropertyMapPolyhedron,ExternalPropertyMaps,CacheDatum>`

View File

@ -3,7 +3,7 @@
#include <iostream>
#include <list>
#include <boost/iterator.hpp>
#include <boost/iterator/iterator_adaptor.hpp>
#include <CGAL/Simple_cartesian.h>
#include <CGAL/AABB_tree.h>

View File

@ -1,10 +1,11 @@
// Author(s) : Camille Wormser, Pierre Alliez
// Example of an AABB tree used with a simple list of
// triangles (a triangle soup) stored into an array of points.
#include <iostream>
#include <vector>
#include <boost/iterator.hpp>
#include <boost/iterator/iterator_adaptor.hpp>
#include <CGAL/Simple_cartesian.h>
#include <CGAL/AABB_tree.h>

View File

@ -429,6 +429,12 @@ public:
/// that returns `true` in order to skip the primitive.
/// 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
/// call this member function.
template<typename Ray, typename SkipFunctor>

View File

@ -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_

View File

@ -65,6 +65,9 @@ namespace CGAL
m_id = rhs.m_id;
}
#ifndef CGAL_CFG_NO_CPP0X_DELETED_AND_DEFAULT_FUNCTIONS
Decorated_point& operator=(const Decorated_point&)=default;
#endif
private:
Id m_id;

View File

@ -16,3 +16,4 @@ Property_map
STL_Extension
Spatial_searching
Stream_support
Distance_3

View File

@ -30,6 +30,7 @@
#include <CGAL/AABB_face_graph_triangle_primitive.h>
#include <CGAL/AABB_halfedge_graph_segment_primitive.h>
#include <CGAL/Polyhedron_3.h>
#include <CGAL/Timer.h>
#include <CGAL/disable_warnings.h>

View File

@ -26,9 +26,6 @@
#include <fstream>
#include <iostream>
#include <CGAL/Timer.h>
#include <CGAL/Cartesian.h>
#include <CGAL/Simple_cartesian.h>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>

View File

@ -25,10 +25,8 @@
#include <iostream>
#include <fstream>
#include <CGAL/Timer.h>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Cartesian.h>
#include <CGAL/Simple_cartesian.h>
#include <CGAL/AABB_tree.h>

View File

@ -28,14 +28,12 @@
#include <CGAL/Timer.h>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Cartesian.h>
#include <CGAL/Simple_cartesian.h>
#include <CGAL/AABB_tree.h>
#include <CGAL/AABB_traits.h>
#include <CGAL/Polyhedron_3.h>
#include <CGAL/spatial_sort.h>
#include "AABB_test_util.h"

View File

@ -25,13 +25,13 @@ of topological singularities. }
\cgalClassifedRefPages
## Classes ##
\cgalCRPSection{Classes}
- `CGAL::Advancing_front_surface_reconstruction`
- `CGAL::Advancing_front_surface_reconstruction_vertex_base_3`
- `CGAL::Advancing_front_surface_reconstruction_cell_base_3`
## Functions ##
\cgalCRPSection{Functions}
- `CGAL::advancing_front_surface_reconstruction()`

View File

@ -10,10 +10,6 @@ find_package(CGAL QUIET)
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
file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
foreach(cppfile ${cppfiles})

View File

@ -23,9 +23,9 @@
\cgalClassifedRefPages
## Algebraic Structures ##
\cgalCRPSection{Algebraic Structures}
### Concepts ###
\cgalCRPSubsection{Concepts}
- `IntegralDomainWithoutDivision`
- `IntegralDomain`
@ -54,7 +54,7 @@
- `AlgebraicStructureTraits_::KthRoot`
- `AlgebraicStructureTraits_::RootOf`
### Classes ###
\cgalCRPSubsection{Classes}
- `CGAL::Algebraic_structure_traits<T>`
- `CGAL::Integral_domain_without_division_tag`
@ -64,7 +64,7 @@
- `CGAL::Unique_factorization_domain_tag`
- `CGAL::Euclidean_ring_tag`
### Global Functions ###
\cgalCRPSubsection{Global Functions}
- `CGAL::is_zero()`
- `CGAL::is_one()`
@ -82,9 +82,9 @@
- `CGAL::kth_root()`
- `CGAL::root_of()`
## Real Embeddable ##
\cgalCRPSection{Real Embeddable}
### Concepts ###
\cgalCRPSubsection{Concepts}
- `RealEmbeddable`
@ -98,11 +98,11 @@
- `RealEmbeddableTraits_::ToDouble`
- `RealEmbeddableTraits_::ToInterval`
### Classes ###
\cgalCRPSubsection{Classes}
- `CGAL::Real_embeddable_traits<T>`
### Global Functions ###
\cgalCRPSubsection{Global Functions}
- `CGAL::is_zero()`
- `CGAL::abs()`
@ -113,27 +113,27 @@
- `CGAL::to_double()`
- `CGAL::to_interval()`
## Real Number Types ##
\cgalCRPSection{Real Number Types}
### Concepts ###
\cgalCRPSubsection{Concepts}
- `RingNumberType`
- `FieldNumberType`
## Interoperability ##
\cgalCRPSection{Interoperability}
### Concepts ###
\cgalCRPSubsection{Concepts}
- `ExplicitInteroperable`
- `ImplicitInteroperable`
### Classes ###
\cgalCRPSubsection{Classes}
- `CGAL::Coercion_traits<A,B>`
## Fractions ##
\cgalCRPSection{Fractions}
### Concepts ###
\cgalCRPSubsection{Concepts}
- `Fraction`
- `FractionTraits`
@ -141,13 +141,13 @@
- `FractionTraits_::Compose`
- `FractionTraits_::CommonFactor`
### Classes ###
\cgalCRPSubsection{Classes}
- `CGAL::Fraction_traits<T>`
## Miscellaneous ##
\cgalCRPSection{Miscellaneous}
### Concepts ###
\cgalCRPSubsection{Concepts}
- `FromIntConstructible`
- `FromDoubleConstructible`

View File

@ -1,6 +1,7 @@
#include <CGAL/basic.h>
#include <CGAL/IO/io.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 >

View File

@ -1,4 +1,3 @@
#include <CGAL/basic.h>
#include <CGAL/Fraction_traits.h>
#include <CGAL/IO/io.h>

View File

@ -1,4 +1,3 @@
#include <CGAL/basic.h>
#include <CGAL/Coercion_traits.h>
#include <CGAL/Quotient.h>
#include <CGAL/Sqrt_extension.h>

View File

@ -1,7 +1,7 @@
#include <CGAL/basic.h>
#include <CGAL/Fraction_traits.h>
#include <CGAL/IO/io.h>
#include <vector>
#include <CGAL/number_utils.h>
template <class Fraction>
std::vector<typename CGAL::Fraction_traits<Fraction>::Numerator_type >

View File

@ -1,4 +1,3 @@
#include <CGAL/basic.h>
#include <CGAL/Coercion_traits.h>
#include <CGAL/IO/io.h>

View File

@ -34,9 +34,9 @@
\cgalClassifedRefPages
## Concepts ##
\cgalCRPSection{Concepts}
### Univariate Algebraic %Kernel ###
\cgalCRPSubsection{Univariate Algebraic %Kernel}
- `AlgebraicKernel_d_1`
@ -58,7 +58,7 @@
- `AlgebraicKernel_d_1::ApproximateAbsolute_1`
- `AlgebraicKernel_d_1::ApproximateRelative_1`
### Bivariate Algebraic %Kernel ###
\cgalCRPSubsection{Bivariate Algebraic %Kernel}
- `AlgebraicKernel_d_2`
@ -95,7 +95,7 @@
- `AlgebraicKernel_d_2::BoundBetweenX_2`
- `AlgebraicKernel_d_2::BoundBetweenY_2`
## Models ##
\cgalCRPSection{Models}
- `CGAL::Algebraic_kernel_d_1<Coeff>`
- `CGAL::Algebraic_kernel_d_2<Coeff>`

View File

@ -1,7 +1,7 @@
// $URL$
// $Id$
#include <CGAL/basic.h>
#include <CGAL/config.h>
#ifdef CGAL_USE_MPFI
#include <CGAL/Algebraic_kernel_d_1.h>
#include <CGAL/Gmpz.h>

View File

@ -1,7 +1,7 @@
// $URL$
// $Id$
#include <CGAL/basic.h>
#include <CGAL/config.h>
#ifdef CGAL_USE_MPFI
#include <CGAL/Algebraic_kernel_d_1.h>
#include <CGAL/Gmpz.h>

View File

@ -1,7 +1,7 @@
// $URL$
// $Id$
#include <CGAL/basic.h>
#include <CGAL/config.h>
#ifdef CGAL_USE_MPFI
#include <CGAL/Algebraic_kernel_d_1.h>
#include <CGAL/Gmpz.h>

View File

@ -1,7 +1,7 @@
// $URL$
// $Id$
#include <CGAL/basic.h>
#include <CGAL/config.h>
#ifdef CGAL_USE_MPFI
#include <CGAL/Algebraic_kernel_d_1.h>
#include <CGAL/Gmpz.h>

View File

@ -1,7 +1,7 @@
// $URL$
// $Id$
#include <CGAL/basic.h>
#include <CGAL/config.h>
#ifdef CGAL_USE_MPFI
#include <CGAL/Algebraic_kernel_d_1.h>
#include <CGAL/Gmpz.h>

View File

@ -114,9 +114,6 @@ public:
//! Default constructor
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.
Algebraic_real_d_1(int i ) : Base(Algebraic_real_rep_d_1(i)) { }

View File

@ -108,9 +108,11 @@ public:
Bitstream_coefficient_kernel_at_alpha() : Base(Rep()) {}
#ifdef DOXYGEN_RUNNING
Bitstream_coefficient_kernel_at_alpha(const Self& traits)
: Base(static_cast<const Base&>(traits)) {}
#endif
Bitstream_coefficient_kernel_at_alpha(Algebraic_kernel_d_1* kernel,
Algebraic_real_1 alpha)
: Base(kernel,alpha) {}

View File

@ -476,7 +476,9 @@ private:
log_C_eps_ = n.log_C_eps_;
}
// const Self& operator= (const Self&); // assignment is forbidden
#ifndef CGAL_CFG_NO_CPP0X_DELETED_AND_DEFAULT_FUNCTIONS
Self& operator= (const Self&) = delete;
#endif
}; // struct Bitstream_descartes_E08_node
@ -575,9 +577,11 @@ public:
Bitstream_descartes_E08_tree() : Base(Rep()) { }
//! copy constructor
#ifdef DOXYGEN_RUNNING
Bitstream_descartes_E08_tree(const Self& p)
: Base(static_cast<const Base&>(p))
{ }
#endif
/*! \brief construct from initial interval and coefficients
*

View File

@ -566,8 +566,10 @@ private:
log_eps_ = n.log_eps_;
log_C_eps_ = n.log_C_eps_;
}
// const Self& operator= (const Self&); // assignment is forbidden
#ifndef CGAL_CFG_NO_CPP0X_DELETED_AND_DEFAULT_FUNCTIONS
Self& operator= (const Self&)=delete;
#endif
}; // struct Bitstream_descartes_rndl_node
@ -931,9 +933,11 @@ public:
Bitstream_descartes_rndl_tree() : Base(Rep()) { }
//! copy constructor
#ifdef DOXYGEN_RUNNING
Bitstream_descartes_rndl_tree(const Self& p)
: Base(static_cast<const Base&>(p))
{ }
#endif
//! Internal function called by constructor. Avoids code duplication
void init_tree() {

View File

@ -154,9 +154,10 @@ public:
: Base(static_cast<const Base&>(get_default_instance())){}
// explicit copy-constructor, required by VC9
#ifdef DOXYGEN_RUNNING
Bitstream_descartes_rndl_tree_traits(const Self& traits)
: Base(static_cast<const Base&>(traits)){}
#endif
//! @}
class Approximator {

View File

@ -505,11 +505,12 @@ public:
}
//! \brief Copy constructor
#ifdef DOXYGEN_RUNNING
Curve_analysis_2(const Self& alg_curve)
: Base(static_cast<const Base&>(alg_curve))
{
}
#endif
//!@}

View File

@ -446,11 +446,12 @@ public:
};
//! \brief Copy constructor
#ifdef DOXYGEN_RUNNING
Curve_pair_analysis_2(const Self& alg_curve_pair)
: Base(static_cast<const Base&>(alg_curve_pair))
{
}
#endif
// Assignable
/*!
@ -1434,7 +1435,13 @@ compute_event_x_coordinates_with_event_indices() const {
CGAL_ACK_DEBUG_PRINT << " one curve event" << std::endl;
#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());
#endif
switch(*(one_curve_it++)) {
case(CGAL::internal::ROOT_OF_FIRST_SET): {
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;
#endif
*/
this->ptr()->
event_slices.push_back(Lazy_status_line_CPA_1());
#if CGAL_CXX11
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(inter_count,-1,-1));
@ -1476,7 +1486,11 @@ compute_event_x_coordinates_with_event_indices() const {
<< std::endl;
#endif
*/
#if CGAL_CXX11
this->ptr()->event_slices.emplace_back();
#else
this->ptr()->event_slices.push_back(Lazy_status_line_CPA_1());
#endif
switch(*(one_curve_it++)) {

View File

@ -252,9 +252,11 @@ public:
/*!\brief
* copy constructor
*/
#ifdef DOXYGEN_RUNNING
Status_line_CA_1(const Self& p) :
Base(static_cast<const Base&>(p)) {
}
#endif
/*!\brief
* constructs a status line over the \c i-th interval with x-coordinate

View File

@ -174,10 +174,12 @@ public:
/*!\brief
* copy constructor
*/
#ifdef DOXYGEN_RUNNING
Status_line_CPA_1(const Self& p) :
Base(static_cast<const Base&>(p)) {
}
#endif
/*!\brief
* constructs undefined status line
*/

View File

@ -219,9 +219,11 @@ public:
/*!\brief
* copy constructor
*/
#ifdef DOXYGEN_RUNNING
Xy_coordinate_2(const Self& p) :
Base(static_cast<const Base&>(p)) {
}
#endif
/*!\brief
* Point at \c x, on \c curve with \c arcno. Finite points on vertical arcs

View File

@ -26,6 +26,7 @@
#include <CGAL/basic.h>
#include <CGAL/Algebraic_kernel_d/Real_embeddable_extension.h>
#include <CGAL/Get_arithmetic_kernel.h>
#include <CGAL/GMP_arithmetic_kernel.h>
#include <CGAL/LEDA_arithmetic_kernel.h>

View File

@ -216,8 +216,8 @@ namespace CGAL {
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 y = make_root_of_2(s.b(),FT(i?(cy):(-cy)),delta);
const Root_of_2 z = make_root_of_2(s.c(),FT(i?(cz):(-cz)),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):FT(-cz)),delta);
return Root_for_spheres_2_3(x,y,z);
}
@ -290,14 +290,14 @@ namespace CGAL {
const FT cz = (p.c()*p.b())/sqac;
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 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);
} 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 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);
}
}
@ -375,25 +375,25 @@ namespace CGAL {
const FT cy = (p.c()*p.b())/sqab;
if(is_negative(cx)) {
const Root_of_2 x = make_root_of_2(s.a(),FT(i?(cx):(-cx)),delta);
const Root_of_2 y = make_root_of_2(s.b(),FT(i?(cy):(-cy)),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):FT(-cy)),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);
} else if(is_zero(cx)) {
if(!is_positive(cy)) {
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);
return Root_for_spheres_2_3(x,y,z);
} else {
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);
return Root_for_spheres_2_3(x,y,z);
}
} else {
const Root_of_2 x = make_root_of_2(s.a(),FT(i?(-cx):(cx)),delta);
const Root_of_2 y = make_root_of_2(s.b(),FT(i?(-cy):(cy)),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?FT(-cy):(cy)),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);
}

View File

@ -68,12 +68,12 @@ finite number of different \f$ \alpha\f$-shapes and corresponding
\cgalClassifedRefPages
## Concepts ##
\cgalCRPSection{Concepts}
- `AlphaShapeTraits_2`
- `AlphaShapeFace_2`
- `AlphaShapeVertex_2`
## Classes ##
\cgalCRPSection{Classes}
- `CGAL::Alpha_shape_2<Dt>`
- `CGAL::Weighted_alpha_shape_euclidean_traits_2<K>`
- `CGAL::Alpha_shape_vertex_base_2<AlphaShapeTraits_2>`

View File

@ -1,5 +1,4 @@
#include <CGAL/Simple_cartesian.h>
#include <CGAL/Filtered_kernel.h>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Cartesian_converter.h>
#include <CGAL/Delaunay_triangulation_2.h>
@ -16,9 +15,8 @@
typedef double coord_type;
typedef CGAL::Simple_cartesian<coord_type> SC;
typedef CGAL::Filtered_kernel<SC> FK;
typedef CGAL::Projection_traits_xy_3<FK> K;
typedef CGAL::Exact_predicates_inexact_constructions_kernel Epic;
typedef CGAL::Projection_traits_xy_3<Epic> K;
typedef K::Point_2 Point;
typedef K::Segment_2 Segment;
@ -34,10 +32,10 @@ typedef K::Segment_2 Segment;
namespace CGAL {
template < class K2, class C >
class Cartesian_converter<FK, K2, C>
class Cartesian_converter<Epic, K2, C>
{
public:
typedef CGAL::Projection_traits_xy_3<FK> Source_kernel;
typedef CGAL::Projection_traits_xy_3<Epic> Source_kernel;
typedef K2 Target_kernel;
typedef C Number_type_converter;

View File

@ -1,5 +1,4 @@
#include <CGAL/Simple_cartesian.h>
#include <CGAL/Filtered_kernel.h>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/algorithm.h>
#include <cstdio>
#include <cstring>
@ -15,8 +14,7 @@
typedef double coord_type;
typedef CGAL::Simple_cartesian<coord_type> SC;
typedef CGAL::Filtered_kernel<SC> K;
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef K::Point_2 Point;
typedef K::Segment_2 Segment;

View File

@ -5,8 +5,7 @@ corresponding to the weighted Alpha Shape.
************************************************************************/
#include <CGAL/Simple_cartesian.h>
#include <CGAL/Filtered_kernel.h>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Alpha_shape_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 CGAL::Simple_cartesian<coord_type> SC;
typedef CGAL::Filtered_kernel<SC> K;
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef K::Point_2 Point;
typedef K::Weighted_point_2 Weighted_point;
typedef K::Segment_2 Segment;

View File

@ -83,7 +83,7 @@ of the alpha complex where singular faces are removed.
\cgalClassifedRefPages
## Concepts ##
\cgalCRPSection{Concepts}
- `AlphaShapeTraits_3`
- `WeightedAlphaShapeTraits_3`
- `AlphaShapeCell_3`
@ -93,7 +93,7 @@ of the alpha complex where singular faces are removed.
- `FixedAlphaShapeCell_3`
- `FixedAlphaShapeVertex_3`
## Classes ##
\cgalCRPSection{Classes}
- `CGAL::Alpha_status<NT>`
- `CGAL::Alpha_shape_3<Dt,ExactAlphaComparisonTag>`
- `CGAL::Alpha_shape_vertex_base_3<Traits,Vb>`

View File

@ -40,7 +40,7 @@ aforementioned concepts.
\cgalClassifedRefPages
## Concepts ##
\cgalCRPSection{Concepts}
- `ApolloniusSite_2`
- `ApolloniusGraphDataStructure_2`
@ -48,7 +48,7 @@ aforementioned concepts.
- `ApolloniusGraphTraits_2`
- `ApolloniusGraphHierarchyVertexBase_2`
## Classes ##
\cgalCRPSection{Classes}
- `CGAL::Apollonius_graph_2<Gt,Agds>`
- `CGAL::Apollonius_site_2<K>`

View File

@ -1,4 +1,4 @@
#include <CGAL/basic.h>
#include <CGAL/config.h>
// standard includes
#include <iostream>

View File

@ -47,10 +47,6 @@ public:
Apollonius_site_2(const Point_2& p = Point_2(),
const Weight& w = Weight(0))
: _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 Weight& weight() const { return _w; }

View File

@ -22,7 +22,7 @@ typedef CGAL::Filtered_exact<inexact_type,exact_type> number_t;
#include <CGAL/Simple_cartesian.h>
#ifndef DONT_USE_FILTERED_EXACT
struct Kernel : public CGAL::Simple_cartesian<number_t> {};
typedef CGAL::Simple_cartesian<number_t> Kernel;
#endif
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"
struct CK : public CGAL::Simple_cartesian<inexact_type> {};
struct EK : public CGAL::Simple_cartesian<exact_type> {};
typedef CGAL::Simple_cartesian<inexact_type> CK;
typedef CGAL::Simple_cartesian<exact_type> EK;
int main()

View File

@ -23,7 +23,7 @@ typedef CGAL::Filtered_exact<inexact_type,exact_type> number_t;
#include <CGAL/Simple_cartesian.h>
#ifndef DNOT_USE_FILTERED_EXACT
struct Kernel : public CGAL::Simple_cartesian<number_t> {};
typedef CGAL::Simple_cartesian<number_t> K;
#endif
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"
struct CK : public CGAL::Simple_cartesian<inexact_type> {};
struct EK : public CGAL::Simple_cartesian<exact_type> {};
typedef CGAL::Simple_cartesian<inexact_type> CK;
typedef CGAL::Simple_cartesian<exact_type> EK;
int main()

View File

@ -10,11 +10,11 @@
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;
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 AG2::Point_2 Point_2;

View File

@ -1,5 +1,3 @@
#include <CGAL/basic.h>
#include <iostream>
#include <fstream>
#include <cassert>
@ -22,7 +20,7 @@ typedef CGAL::Filtered_exact<inexact_type,exact_type> number_t;
#include <CGAL/Simple_cartesian.h>
#ifndef DONT_USE_FILTERED_EXACT
struct Kernel : public CGAL::Simple_cartesian<number_t> {};
typedef CGAL::Simple_cartesian<number_t> Kernel;
#endif
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"
struct CK : public CGAL::Simple_cartesian<double> {};
struct EK : public CGAL::Simple_cartesian<CGAL::MP_Float> {};
typedef CGAL::Simple_cartesian<double> CK;
typedef CGAL::Simple_cartesian<CGAL::MP_Float> EK;
int main()

View File

@ -0,0 +1,78 @@
// Copyright (c) 2017 Inria.
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org); you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation; either version 3 of the License,
// or (at your option) any later version.
//
// Licensees holding a valid commercial license may use this file in
// accordance with the commercial license agreement provided with the software.
//
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
//
// $URL$
// $Id$
// SPDX-License-Identifier: LGPL-3.0+
//
// Author: Marc Glisse <marc.glisse@inria.fr>
#ifndef CGAL_GMPXX_ARITHMETIC_KERNEL_H
#define CGAL_GMPXX_ARITHMETIC_KERNEL_H
#include <CGAL/Arithmetic_kernel/Arithmetic_kernel_base.h>
#include <CGAL/Get_arithmetic_kernel.h>
#include <CGAL/boost_mp.h>
#ifdef CGAL_USE_BOOST_MP
//Currently already included in boost_mp.h
//#include <boost/multiprecision/cpp_int.hpp>
//#ifdef CGAL_USE_GMP
//#include <boost/multiprecision/gmp.hpp>
//#endif
// FIXME: the could be several kernels based on Boost.Multiprecision.
namespace CGAL {
/** \ingroup CGAL_Arithmetic_kernel
* \brief The Boost.Multiprecision set of exact number types
*/
struct BOOST_cpp_arithmetic_kernel : internal::Arithmetic_kernel_base {
typedef boost::multiprecision::cpp_int Integer;
typedef boost::multiprecision::cpp_rational Rational;
};
#ifdef CGAL_USE_GMP
struct BOOST_gmp_arithmetic_kernel : internal::Arithmetic_kernel_base {
typedef boost::multiprecision::mpz_int Integer;
typedef boost::multiprecision::mpq_rational Rational;
};
#endif
template <class T1, class T2, class T3, class T4, class T5>
struct Get_arithmetic_kernel<boost::multiprecision::detail::expression<T1,T2,T3,T4,T5> >
: Get_arithmetic_kernel<typename boost::multiprecision::detail::expression<T1,T2,T3,T4,T5>::result_type> {};
template <>
struct Get_arithmetic_kernel<boost::multiprecision::cpp_int> {
typedef BOOST_cpp_arithmetic_kernel Arithmetic_kernel;
};
template <>
struct Get_arithmetic_kernel<boost::multiprecision::cpp_rational> {
typedef BOOST_cpp_arithmetic_kernel Arithmetic_kernel;
};
#ifdef CGAL_USE_GMP
template <>
struct Get_arithmetic_kernel<boost::multiprecision::mpz_int> {
typedef BOOST_gmp_arithmetic_kernel Arithmetic_kernel;
};
template <>
struct Get_arithmetic_kernel<boost::multiprecision::mpq_rational> {
typedef BOOST_gmp_arithmetic_kernel Arithmetic_kernel;
};
#endif
} //namespace CGAL
#endif // CGAL_USE_BOOST_MP
#endif

View File

@ -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);
};

View File

@ -87,18 +87,18 @@ implemented as peripheral classes or as free (global) functions.
\cgalClassifedRefPages
## Enumerations ##
\cgalCRPSection{Enumerations}
- `CGAL::Arr_parameter_space`
- `CGAL::Arr_curve_end`
- `CGAL::Arr_halfedge_direction`
## Tags ##
\cgalCRPSection{Tags}
- `CGAL::Arr_oblivious_side_tag`
- `CGAL::Arr_open_side_tag`
## Concepts ##
\cgalCRPSection{Concepts}
- `ArrangementDcel`
- `ArrangementDcelWithRebind`
@ -119,13 +119,13 @@ implemented as peripheral classes or as free (global) functions.
- `ArrangementPointLocation_2`
- `ArrangementVerticalRayShoot_2`
## Geometric Object Concepts ##
\cgalCRPSection{Geometric Object Concepts}
- `ArrTraits::Point_2`
- `ArrTraits::XMonotoneCurve_2`
- `ArrTraits::Curve_2`
## Function Object Concepts ##
\cgalCRPSection{Function Object Concepts}
- `ArrTraits::CompareX_2`
- `ArrTraits::CompareXy_2`
@ -149,7 +149,7 @@ implemented as peripheral classes or as free (global) functions.
- `ArrTraits::Approximate_2`
- `ArrTraits::ConstructXMonotoneCurve_2`
## Classes ##
\cgalCRPSection{Classes}
- `CGAL::Arrangement_2<Traits,Dcel>`
- `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_point_location_result<Arrangement>`
## Macros ##
\cgalCRPSection{Macros}
- \link CGAL_ARR_POINT_LOCATION_VERSION `CGAL_ARR_POINT_LOCATION_VERSION` \endlink
## Functions ##
\cgalCRPSection{Functions}
- `CGAL::is_valid()`
- `CGAL::insert()`

View File

@ -1,7 +1,7 @@
//! \file examples/Arrangement_on_surface_2/Bezier_curves.cpp
// Constructing an arrangement of Bezier curves.
#include <CGAL/basic.h>
#include <CGAL/config.h>
#ifndef CGAL_USE_CORE
#include <iostream>

View File

@ -1,4 +1,4 @@
#include <CGAL/basic.h>
#include <CGAL/config.h>
#include <iostream>
#if (!CGAL_USE_CORE) && (!CGAL_USE_LEDA) && (!(CGAL_USE_GMP && CGAL_USE_MPFI))

View File

@ -1,7 +1,7 @@
//! \file examples/Arrangement_on_surface_2/conic_multiplicities.cpp
// Handling intersection points with multiplicity between conic arcs.
#include <CGAL/basic.h>
#include <CGAL/config.h>
#ifndef CGAL_USE_CORE
#include <iostream>

View File

@ -1,6 +1,6 @@
//! \file examples/Arrangement_on_surface_2/conics.cpp
// Constructing an arrangement of various conic arcs.
#include <CGAL/basic.h>
#include <CGAL/config.h>
#ifndef CGAL_USE_CORE
#include <iostream>

View File

@ -1,8 +1,6 @@
//! \file examples/Arrangement_on_surface_2/edge_manipulation.cpp
// Using the edge-manipulation functions.
#include <CGAL/basic.h>
#include <CGAL/Exact_predicates_exact_constructions_kernel.h>
#include <CGAL/Arr_segment_traits_2.h>
#include <CGAL/Arrangement_2.h>

View File

@ -1,6 +1,6 @@
// Constructing a arrangement of Bezier polycurves.
#include <CGAL/basic.h>
#include <CGAL/config.h>
#ifndef CGAL_USE_CORE

View File

@ -1,6 +1,6 @@
// Constructing an arrangement of polycurves.
#include <CGAL/basic.h>
#include <CGAL/config.h>
#ifndef CGAL_USE_CORE

View File

@ -1,6 +1,6 @@
// Testing the do_equal function
#include <CGAL/basic.h>
#include <CGAL/config.h>
#ifndef CGAL_USE_CORE

View File

@ -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.
#include <CGAL/basic.h>
#include <CGAL/config.h>
#ifndef CGAL_USE_CORE
#include <iostream>

View File

@ -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.
#include <CGAL/basic.h>
#include <CGAL/config.h>
#ifndef CGAL_USE_CORE
#include <iostream>

View File

@ -1,7 +1,7 @@
//! \file examples/Arrangement_2/unbounded_rational_functions.cpp
// Constructing an arrangement of unbounded portions of rational functions.
#include <CGAL/basic.h>
#include <CGAL/config.h>
#ifndef CGAL_USE_CORE
#include <iostream>

View File

@ -2881,12 +2881,14 @@ public:
/*! Copy constructor
* \param other the other arc
*/
#ifdef DOXYGEN_RUNNING
Arr_geodesic_arc_on_sphere_3
(const Arr_geodesic_arc_on_sphere_3& other) : Base(other)
{
m_is_x_monotone = other.m_is_x_monotone;
}
#endif
/*! Constructor
* \param src the source point of the arc
* \param trg the target point of the arc

View File

@ -109,6 +109,10 @@ public:
Point_handle (p)
{}
#ifndef CGAL_CFG_NO_CPP0X_DELETED_AND_DEFAULT_FUNCTIONS
_One_root_point_2& operator=(const _One_root_point_2&)=default;
#endif
/*! Constructor of a point with one-root coefficients.
This constructor of a point can also be used with rational coefficients
thanks to convertor of CoordNT. */

View File

@ -89,6 +89,15 @@ public:
_rational_function(rational_function),
_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
Algebraic_point_2_rep& operator=(const Algebraic_point_2_rep& other)
{
@ -374,10 +383,6 @@ public:
Algebraic_point_2() :
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,
const Cache& cache) const
{

View File

@ -232,6 +232,10 @@ public:
Rational_function (const Self & r)
: Base(static_cast<const Base &> (r)) {}
#ifndef CGAL_CFG_NO_CPP0X_DELETED_AND_DEFAULT_FUNCTIONS
Self& operator=(const Self&)=default;
#endif
CGAL::Sign sign_at(const Algebraic_real_1& x,
CGAL::Sign epsilon = CGAL::ZERO) const
{

View File

@ -382,10 +382,11 @@ public:
/*!\brief
* copy constructor
*/
#ifdef DOXYGEN_RUNNING
Arc_2(const Self& a) :
Base(static_cast<const Base&>(a)) {
}
#endif
//!@}
public:

View File

@ -150,10 +150,12 @@ public:
/*!\brief
* copy constructor
*/
#ifdef DOXYGEN_RUNNING
Generic_arc_2(const Self& p) :
Base(static_cast<const Base&>(p)) {
}
#endif
/*!\brief
* constructs an arc from a given represenation
*/

View File

@ -131,10 +131,11 @@ public:
/*!\brief
* copy constructor
*/
#ifdef DOXYGEN_RUNNING
Generic_point_2(const Self& p) :
Base(static_cast<const Base&>(p)) {
}
#endif
/*!\brief
* constructs an arc from a given represenation
*/

View File

@ -146,9 +146,11 @@ public:
/*!\brief
* copy constructor
*/
#ifdef DOXYGEN_RUNNING
Non_x_monotone_arc_2(const Self& a) :
Base(static_cast<const Base&>(a)) {
}
#endif
/*! \brief
* constructs an arc from one x-monotone piece

View File

@ -256,10 +256,11 @@ public:
/*!\brief
* copy constructor
*/
#ifdef DOXYGEN_RUNNING
Point_2(const Self& p) :
Base(static_cast<const Base&>(p)) {
}
#endif
//!@}
public:

View File

@ -16,6 +16,7 @@ INPUT += ${CGAL_PACKAGE_INCLUDE_DIR}/CGAL/boost/graph/Euler_operations.h \
${CGAL_PACKAGE_INCLUDE_DIR}/CGAL/boost/graph/METIS/partition_graph.h \
${CGAL_PACKAGE_INCLUDE_DIR}/CGAL/boost/graph/METIS/partition_dual_graph.h
EXAMPLE_PATH = ${CGAL_Surface_mesh_skeletonization_EXAMPLE_DIR} \
${CGAL_Surface_mesh_segmentation_EXAMPLE_DIR} \
${CGAL_Polygon_mesh_processing_EXAMPLE_DIR} \

View File

@ -81,6 +81,13 @@ being marked or not.\n
<b>Default:</b> a default property map where no edge is constrained
\cgalNPEnd
\cgalNPBegin{use_binary_mode} \anchor BGL_use_binary_mode
is a Boolean indicating whether the binary mode or the ASCII mode should be used
when writing data into a stream.\n
<b>Type:</b> `bool`\n
<b>Default:</b> Function specific.
\cgalNPEnd
\cgalNPBegin{METIS_options} \anchor BGL_METIS_options
is a parameter used in `partition_graph()` and `partition_dual_graph()`
to pass options to the METIS graph partitioner. The many options of METIS

View File

@ -558,7 +558,7 @@ Methods to read and write graphs.
\cgalClassifedRefPages
## Concepts ##
\cgalCRPSection{Concepts}
- `VertexListGraph`
- `EdgeListGraph`
- `HalfedgeGraph`
@ -568,14 +568,14 @@ Methods to read and write graphs.
- `FaceListGraph`
- `MutableFaceGraph`
## Properties ##
\cgalCRPSection{Properties}
- `boost::vertex_index_t`
- `boost::halfedge_index_t`
- `boost::edge_index_t`
- `boost::face_index_t`
- `boost::vertex_point_t`
## %CGAL Classes Adapted for the Graph API ##
\cgalCRPSection{%CGAL Classes Adapted for the Graph API}
Different \cgal types have been adapted as graphs for the \sc{Bgl}. All
adapted types are listed here. The pages document which concepts they
@ -591,7 +591,7 @@ user might encounter.
- \link BGLOMPAK `boost::graph_traits<OpenMesh::PolyMesh_ArrayKernelT<K> >` \endlink
- \link BGLOMTMAK `boost::graph_traits<OpenMesh::TriMesh_ArrayKernelT<K> >` \endlink
## Helper Classes ##
\cgalCRPSection{Helper Classes}
- `CGAL::Triangulation_vertex_base_with_id_2`
- `CGAL::Arr_vertex_index_map`
- `CGAL::Arr_face_index_map`
@ -603,7 +603,7 @@ user might encounter.
- `CGAL::Linear_cell_complex_bgl_min_items`
- `CGAL::Linear_cell_complex_for_bgl_combinatorial_map_helper`
## Helper Functions ##
\cgalCRPSection{Helper Functions}
- `CGAL::is_border()`
- `CGAL::is_border_edge()`
- `CGAL::is_bivalent()`
@ -636,7 +636,7 @@ user might encounter.
- `CGAL::clear()`
- `CGAL::copy_face_graph()`
## Iterators ##
\cgalCRPSection{Iterators}
- `CGAL::Halfedge_around_source_iterator`
- `CGAL::Halfedge_around_target_iterator`
- `CGAL::Halfedge_around_face_iterator`
@ -652,7 +652,7 @@ user might encounter.
- `CGAL::vertices_around_face()`
- `CGAL::vertices_around_target()`
## Circulators ##
\cgalCRPSection{Circulators}
- `CGAL::Halfedge_around_source_circulator`
- `CGAL::Halfedge_around_target_circulator`
- `CGAL::Halfedge_around_face_circulator`
@ -660,7 +660,7 @@ user might encounter.
- `CGAL::Face_around_target_circulator`
- `CGAL::Face_around_face_circulator`
## Euler Operations ##
\cgalCRPSection{Euler Operations}
- `CGAL::Euler::add_center_vertex()`
- `CGAL::Euler::add_edge()`
- `CGAL::Euler::add_face()`
@ -681,7 +681,7 @@ user might encounter.
- `CGAL::Euler::split_loop()`
- `CGAL::Euler::split_vertex()`
## Selection ##
\cgalCRPSection{Selection}
- `CGAL::expand_face_selection()`
- `CGAL::reduce_face_selection()`
- `CGAL::expand_edge_selection()`
@ -691,24 +691,25 @@ user might encounter.
- `CGAL::select_incident_faces()`
- `CGAL::expand_face_selection_for_removal()`
## Conversion Functions ##
\cgalCRPSection{Conversion Functions}
- `CGAL::split_graph_into_polylines()`
## Graph Adaptors ##
\cgalCRPSection{Graph Adaptors}
- `CGAL::Dual`
- `CGAL::Face_filtered_graph`
- `CGAL::Graph_with_descriptor_with_graph`
- `CGAL::Graph_with_descriptor_with_graph_property_map`
- `CGAL::Seam_mesh`
## Partitioning Methods ##
\cgalCRPSection{Partitioning Methods}
- `CGAL::METIS::partition_graph()`
- `CGAL::METIS::partition_dual_graph()`
## I/O Functions ##
\cgalCRPSection{I/O Functions}
- \link PkgBGLIOFct CGAL::read_off() \endlink
- \link PkgBGLIOFct CGAL::write_off() \endlink
- \link PkgBGLIOFct CGAL::write_wrl() \endlink
- `CGAL::write_vtp()`
*/

View File

@ -1,10 +1,10 @@
#include <CGAL/Simple_cartesian.h>
#include <CGAL/boost/graph/graph_traits_Linear_cell_complex_for_combinatorial_map.h>
#include <CGAL/boost/graph/iterator.h>
#include <iostream>
#include <fstream>
typedef CGAL::Simple_cartesian<double> Kernel;
typedef CGAL::Linear_cell_complex_traits<3, Kernel> LCC_traits;

View File

@ -3,14 +3,12 @@
#include <boost/graph/graph_traits.hpp>
#include <CGAL/property_map.h>
#include <CGAL/basic.h>
#include <CGAL/Kernel/global_functions.h>
#include <CGAL/Cartesian.h>
#include <CGAL/Simple_cartesian.h>
#include <CGAL/boost/graph/graph_traits_Linear_cell_complex_for_combinatorial_map.h>
typedef CGAL::Cartesian<double> Kernel;
typedef Kernel::Point_3 Point;
typedef Kernel::Vector_3 Vector;
typedef CGAL::Simple_cartesian<double> Kernel;
typedef Kernel::Point_3 Point;
typedef Kernel::Vector_3 Vector;
typedef CGAL::Linear_cell_complex_traits<3, Kernel> LCC_traits;
typedef CGAL::Linear_cell_complex_for_bgl_combinatorial_map_helper

View File

@ -1,6 +1,7 @@
#include <CGAL/Simple_cartesian.h>
#include <CGAL/Iterator_range.h>
#include <CGAL/boost/graph/graph_traits_Linear_cell_complex_for_combinatorial_map.h>
#include <boost/foreach.hpp>
#include <iostream>

View File

@ -1,10 +1,10 @@
#include <CGAL/Simple_cartesian.h>
#include <CGAL/boost/graph/graph_traits_Linear_cell_complex_for_combinatorial_map.h>
#include <CGAL/boost/graph/iterator.h>
#include <fstream>
#include <CGAL/boost/iterator/transform_iterator.hpp>
#include <algorithm>
#include <fstream>
typedef CGAL::Simple_cartesian<double> Kernel;
typedef CGAL::Linear_cell_complex_traits<3, Kernel> LCC_traits;

View File

@ -1,4 +1,3 @@
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <OpenMesh/Core/IO/MeshIO.hh>
@ -9,7 +8,6 @@
#include <CGAL/boost/graph/Euler_operations.h>
#include <CGAL/mesh_segmentation.h>
#include <CGAL/property_map.h>
#include <iostream>

View File

@ -15,6 +15,7 @@
#include <iostream>
#include <fstream>
#include <iterator>
#include <boost/unordered_map.hpp>

View File

@ -14,7 +14,6 @@ typedef boost::graph_traits<Polyhedron>::vertex_descriptor vertex_descriptor;
typedef boost::graph_traits<Polyhedron>::vertex_iterator vertex_iterator;
int main(int argc, char** argv) {
Polyhedron P;

View File

@ -1,10 +1,10 @@
#include <CGAL/Simple_cartesian.h>
#include <CGAL/Polyhedron_3.h>
#include <CGAL/boost/graph/iterator.h>
#include <iostream>
#include <fstream>
typedef CGAL::Simple_cartesian<double> Kernel;
typedef CGAL::Polyhedron_3<Kernel> Polyhedron;

View File

@ -1,17 +1,13 @@
#include <fstream>
#include <boost/graph/graph_traits.hpp>
#include <CGAL/property_map.h>
#include <CGAL/basic.h>
#include <CGAL/Kernel/global_functions.h>
// Polyhedron
#include <CGAL/Cartesian.h>
#include <CGAL/Simple_cartesian.h>
#include <CGAL/Polyhedron_3.h>
#include <CGAL/Polyhedron_items_with_id_3.h>
#include <CGAL/property_map.h>
typedef CGAL::Cartesian<double> Kernel;
typedef CGAL::Simple_cartesian<double> Kernel;
typedef Kernel::Point_3 Point;
typedef Kernel::Vector_3 Vector;
typedef CGAL::Polyhedron_3<Kernel, CGAL::Polyhedron_items_with_id_3> Polyhedron;

View File

@ -1,8 +1,8 @@
#include <CGAL/Simple_cartesian.h>
#include <CGAL/Polyhedron_3.h>
#include <CGAL/Iterator_range.h>
#include <boost/foreach.hpp>
#include <boost/foreach.hpp>
#include <iostream>
#include <fstream>

View File

@ -1,5 +1,6 @@
#include <CGAL/Simple_cartesian.h>
#include <CGAL/Surface_mesh.h>
#include <iostream>
#include <fstream>

View File

@ -4,6 +4,7 @@
#include <CGAL/boost/graph/Graph_with_descriptor_with_graph.h>
#include <CGAL/boost/graph/helpers.h>
#include <CGAL/boost/graph/Euler_operations.h>
#include <fstream>
typedef CGAL::Simple_cartesian<double> K;

View File

@ -2,6 +2,7 @@
#include <CGAL/Surface_mesh.h>
#include <CGAL/boost/graph/Dual.h>
#include <CGAL/boost/graph/helpers.h>
#include <iostream>
#include <fstream>

View File

@ -1,7 +1,5 @@
#include <CGAL/Simple_cartesian.h>
#include <CGAL/Surface_mesh.h>
#include <CGAL/boost/graph/Face_filtered_graph.h>
#include <CGAL/boost/graph/partition.h>

View File

@ -1,6 +1,7 @@
#include <CGAL/Simple_cartesian.h>
#include <CGAL/Surface_mesh.h>
#include <CGAL/boost/graph/io.h>
#include <iostream>
#include <fstream>

View File

@ -43,8 +43,7 @@ vertices as a source and target. It is possible to filter border edges
using `boost::filtered_graph` as shown in example
\ref BGL_surface_mesh/surface_mesh_dual.cpp
Property forwarding
-------------------
\cgalHeading{Property Forwarding}
\cgalAdvancedBegin
Edge properties of the underlying graph are forwarded directly. For
faces and vertices only the `face_index` and `vertex_index` properties

View File

@ -1329,38 +1329,37 @@ flip_edge(typename boost::graph_traits<Graph>::halfedge_descriptor h,
/**
* \returns `true` if `e` satisfies the *link condition* \cgalCite{degn-tpec-98}, which guarantees that the surface is also 2-manifold after the edge collapse.
*/
template<typename Graph>
template<typename Graph>
bool
does_satisfy_link_condition(typename boost::graph_traits<Graph>::edge_descriptor e,
Graph& g)
does_satisfy_link_condition(typename boost::graph_traits<Graph>::edge_descriptor e,
Graph& g)
{
typedef typename boost::graph_traits<Graph>::vertex_descriptor vertex_descriptor;
typedef typename boost::graph_traits<Graph>::halfedge_descriptor halfedge_descriptor;
typedef CGAL::Halfedge_around_source_iterator<Graph> out_edge_iterator;
typedef typename boost::graph_traits<Graph>::vertex_descriptor vertex_descriptor;
typedef typename boost::graph_traits<Graph>::halfedge_descriptor halfedge_descriptor;
typedef CGAL::Halfedge_around_source_iterator<Graph> out_edge_iterator;
halfedge_descriptor v0_v1 = halfedge(e,g);
halfedge_descriptor v1_v0 = opposite(v0_v1,g);
vertex_descriptor v0 = target(v1_v0,g), v1 = target(v0_v1,g);
halfedge_descriptor v0_v1 = halfedge(e,g);
halfedge_descriptor v1_v0 = opposite(v0_v1,g);
vertex_descriptor vL = target(next(v0_v1,g),g);
vertex_descriptor vR = target(next(v1_v0,g),g);
vertex_descriptor v0 = target(v1_v0,g), v1 = target(v0_v1,g);
out_edge_iterator eb1, ee1 ;
out_edge_iterator eb2, ee2 ;
vertex_descriptor vL = target(next(v0_v1,g),g);
vertex_descriptor vR = target(next(v1_v0,g),g);
out_edge_iterator eb1, ee1 ;
out_edge_iterator eb2, ee2 ;
// The following loop checks the link condition for v0_v1.
// Specifically, that for every vertex 'k' adjacent to both 'p and 'q', 'pkq' is a face of the mesh.
//
//
for ( boost::tie(eb1,ee1) = halfedges_around_source(v0,g) ; eb1 != ee1 ; ++ eb1 )
{
halfedge_descriptor v0_k = *eb1;
if ( v0_k != v0_v1 )
{
vertex_descriptor k = target(v0_k,g);
for ( boost::tie(eb2,ee2) = halfedges_around_source(k,g) ; eb2 != ee2 ; ++ eb2 )
{
halfedge_descriptor k_v1 = *eb2;
@ -1377,66 +1376,53 @@ bool
// If k is either t or b then p-q-k *might* be a face of the mesh. It won't be if k==t but p->q is border
// or k==b but q->b is a border (because in that case even though there exists triangles p->q->t (or q->p->b)
// they are holes, not faces)
//
//
bool lIsFace = ( vL == k && (! is_border(v0_v1,g)) )
|| ( vR == k && (! is_border(v1_v0,g)) ) ;
if ( !lIsFace )
{
// CGAL_ECMS_TRACE(3," k=V" << get(Vertex_index_map,k) << " IS NOT in a face with p-q. NON-COLLAPSABLE edge." ) ;
return false ;
}
else
}
else
{
//CGAL_ECMS_TRACE(4," k=V" << get(Vertex_index_map,k) << " is in a face with p-q") ;
}
}
}
}
}
if ( is_border(v0_v1,g) )
{
if ( next(next(next(v0_v1,g),g),g) == v0_v1 )
{
//CGAL_ECMS_TRACE(3," p-q belongs to an open triangle. NON-COLLAPSABLE edge." ) ;
return false ;
}
}
else if ( is_border(v1_v0,g) )
}
// detect isolated triangle (or triangle attached to a mesh with non-manifold vertices)
if (!is_border(v0_v1,g) && is_border(opposite(next(v0_v1,g), g), g)
&& is_border(opposite(prev(v0_v1,g), g), g) ) return false;
if (!is_border(v1_v0,g) && is_border(opposite(next(v1_v0,g), g), g)
&& is_border(opposite(prev(v1_v0,g), g), g) ) return false;
if ( !is_border(v0_v1,g) && !is_border(v1_v0,g) )
{
if ( is_border(v0,g) && is_border(v1,g) )
{
if ( next(next(next(v1_v0,g),g),g) == v1_v0 )
{
//CGAL_ECMS_TRACE(3," p-q belongs to an open triangle. NON-COLLAPSABLE edge." ) ;
return false ;
}
//CGAL_ECMS_TRACE(3," both p and q are boundary vertices but p-q is not. NON-COLLAPSABLE edge." ) ;
return false ;
}
else
{
if ( is_border(v0,g) && is_border(v1,g) )
if ( is_tetrahedron(v0_v1,g) )
{
//CGAL_ECMS_TRACE(3," both p and q are boundary vertices but p-q is not. NON-COLLAPSABLE edge." ) ;
//CGAL_ECMS_TRACE(3," p-q belongs to a tetrahedron. NON-COLLAPSABLE edge." ) ;
return false ;
}
else
}
if ( next(v0_v1, g) == opposite(prev(v1_v0, g), g) &&
prev(v0_v1, g) == opposite(next(v1_v0, g), g) )
{
if ( is_tetrahedron(v0_v1,g) )
{
//CGAL_ECMS_TRACE(3," p-q belongs to a tetrahedron. NON-COLLAPSABLE edge." ) ;
return false ;
}
if ( next(v0_v1, g) == opposite(prev(v1_v0, g), g) &&
prev(v0_v1, g) == opposite(next(v1_v0, g), g) )
{
//CGAL_ECMS_TRACE(3," degenerate volume." ) ;
return false ;
}
//CGAL_ECMS_TRACE(3," degenerate volume." ) ;
return false ;
}
}
}
return true ;
}

View File

@ -650,6 +650,17 @@ degree(typename boost::graph_traits<Face_filtered_graph<Graph, FIMap, VIMap, HIM
return v_deg;
}
template<typename Graph,
typename FIMap,
typename VIMap,
typename HIMap>
typename boost::graph_traits<Graph>::degree_size_type
degree(typename boost::graph_traits<Face_filtered_graph<Graph, FIMap, VIMap, HIMap> >::face_descriptor f,
const Face_filtered_graph<Graph, FIMap, VIMap, HIMap>& w)
{
return degree(f, w.graph());
}
template<typename Graph,
typename FIMap,
typename VIMap,
@ -944,8 +955,7 @@ template<typename Graph,
typename FIMap,
typename VIMap,
typename HIMap>
std::pair<typename boost::graph_traits<Face_filtered_graph<Graph, FIMap, VIMap, HIMap> >::halfedge_iterator,
typename boost::graph_traits<Face_filtered_graph<Graph, FIMap, VIMap, HIMap> >::halfedge_iterator>
Iterator_range<typename boost::graph_traits<Face_filtered_graph<Graph, FIMap, VIMap, HIMap> >::halfedge_iterator>
halfedges(const Face_filtered_graph<Graph, FIMap, VIMap, HIMap> & w)
{
typedef typename boost::graph_traits<Face_filtered_graph<Graph, FIMap, VIMap, HIMap> >::halfedge_iterator halfedge_iterator;

View File

@ -118,8 +118,7 @@ The class `Graph_with_descriptor_with_graph` wraps a graph into another graph in
For example, calling `source(edge, graph)` will trigger an assertion if `edge` does not belong to `graph`.
It is mainly used for debugging purposes.
Property forwarding
-------------------
\cgalHeading{Property Forwarding}
All internal properties of the underlying graph are forwarded.
Property maps can be wrapped with `Graph_with_descriptor_with_graph_property_map`.

Some files were not shown because too many files have changed in this diff Show More