mirror of https://github.com/CGAL/cgal
Merge branch 'Periodic_4_hyperbolic_triangulation_2-IIordanov' of github.com:imiordanov/cgal into Periodic_4_hyperbolic_triangulation_2-IIordanov
This commit is contained in:
commit
e4881c1e7e
64
.travis.yml
64
.travis.yml
|
|
@ -19,38 +19,38 @@ 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='Hyperbolic_triangulation_2 Inscribed_areas Installation '
|
||||
- PACKAGE='Interpolation Intersections_2 Intersections_3 '
|
||||
- PACKAGE='Interval_skip_list Interval_support Inventor '
|
||||
- PACKAGE='Jet_fitting_3 Kernel_23 Kernel_d '
|
||||
- PACKAGE='LEDA Linear_cell_complex MacOSX '
|
||||
- PACKAGE='Maintenance Matrix_search Mesh_2 '
|
||||
- PACKAGE='Mesh_3 Mesher_level Minkowski_sum_2 '
|
||||
- PACKAGE='Minkowski_sum_3 Modifier Modular_arithmetic '
|
||||
- PACKAGE='Nef_2 Nef_3 Nef_S2 '
|
||||
- PACKAGE='NewKernel_d Number_types OpenNL '
|
||||
- PACKAGE='Optimal_transportation_reconstruction_2 Optimisation_basic Partition_2 '
|
||||
- PACKAGE='Periodic_2_triangulation_2 Periodic_3_mesh_3 Periodic_3_triangulation_3 '
|
||||
- PACKAGE='Periodic_4_hyperbolic_triangulation_2 Point_set_2 Point_set_3 '
|
||||
- PACKAGE='Point_set_processing_3 Point_set_shape_detection_3 Poisson_surface_reconstruction_3 '
|
||||
- PACKAGE='Polygon Polygon_mesh_processing Polyhedron '
|
||||
- PACKAGE='Polyhedron_IO Polyline_simplification_2 Polynomial '
|
||||
- PACKAGE='Polytope_distance_d Principal_component_analysis Principal_component_analysis_LGPL '
|
||||
- PACKAGE='Profiling_tools Property_map QP_solver '
|
||||
- PACKAGE='Random_numbers Ridges_3 Scale_space_reconstruction_3 '
|
||||
- PACKAGE='Scripts SearchStructures Segment_Delaunay_graph_2 '
|
||||
- PACKAGE='Segment_Delaunay_graph_Linf_2 Set_movable_separability_2 Skin_surface_3 '
|
||||
- PACKAGE='Snap_rounding_2 Solver_interface Spatial_searching '
|
||||
- PACKAGE='Spatial_sorting STL_Extension Straight_skeleton_2 '
|
||||
- PACKAGE='Stream_lines_2 Stream_support Subdivision_method_3 '
|
||||
- PACKAGE='Surface_mesh Surface_mesh_deformation Surface_mesher '
|
||||
- PACKAGE='Surface_mesh_parameterization Surface_mesh_segmentation Surface_mesh_shortest_path '
|
||||
- PACKAGE='Surface_mesh_simplification Surface_mesh_skeletonization Surface_sweep_2 '
|
||||
- PACKAGE='TDS_2 TDS_3 Testsuite '
|
||||
- PACKAGE='Three Triangulation Triangulation_2 '
|
||||
- PACKAGE='Triangulation_3 Union_find Visibility_2 '
|
||||
- PACKAGE='Voronoi_diagram_2 wininst '
|
||||
- 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 '
|
||||
- PACKAGE='Polynomial Polytope_distance_d Principal_component_analysis '
|
||||
- PACKAGE='Principal_component_analysis_LGPL Profiling_tools Property_map '
|
||||
- PACKAGE='QP_solver Random_numbers Ridges_3 '
|
||||
- PACKAGE='Scale_space_reconstruction_3 Scripts SearchStructures '
|
||||
- PACKAGE='Segment_Delaunay_graph_2 Segment_Delaunay_graph_Linf_2 Set_movable_separability_2 '
|
||||
- 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
|
||||
install:
|
||||
- echo "$PWD"
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@ Geomview
|
|||
GraphicsView
|
||||
HalfedgeDS
|
||||
Hash_map
|
||||
Heat_method_3
|
||||
Homogeneous_kernel
|
||||
Hyperbolic_triangulation_2
|
||||
Inscribed_areas
|
||||
|
|
|
|||
|
|
@ -1297,7 +1297,7 @@ void Scene::refine_loop()
|
|||
return;
|
||||
}
|
||||
std::cout << "Loop subdivision...";
|
||||
CGAL::Subdivision_method_3::Loop_subdivision(*m_pPolyhedron, 1);
|
||||
CGAL::Subdivision_method_3::Loop_subdivision(*m_pPolyhedron);
|
||||
std::cout << "done (" << m_pPolyhedron->size_of_facets() << " facets)" << std::endl;
|
||||
|
||||
clear_internal_data();
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#include <iostream>
|
||||
#include <boost/iterator.hpp>
|
||||
#include <boost/iterator/iterator_adaptor.hpp>
|
||||
|
||||
#include <CGAL/Simple_cartesian.h>
|
||||
#include <CGAL/AABB_tree.h>
|
||||
|
|
|
|||
|
|
@ -31,10 +31,18 @@
|
|||
#include <boost/type_traits/is_same.hpp>
|
||||
#include <boost/variant/apply_visitor.hpp>
|
||||
#if BOOST_VERSION >= 105000
|
||||
#include <boost/heap/priority_queue.hpp>
|
||||
# if defined(BOOST_MSVC)
|
||||
# pragma warning(push)
|
||||
# pragma warning(disable: 4996)
|
||||
# endif
|
||||
# include <boost/heap/priority_queue.hpp>
|
||||
# if defined(BOOST_MSVC)
|
||||
# pragma warning(pop)
|
||||
# endif
|
||||
#else
|
||||
#include <queue>
|
||||
# include <queue>
|
||||
#endif
|
||||
|
||||
#include <CGAL/assertions.h>
|
||||
|
||||
namespace CGAL {
|
||||
|
|
|
|||
|
|
@ -16,3 +16,4 @@ Property_map
|
|||
STL_Extension
|
||||
Spatial_searching
|
||||
Stream_support
|
||||
Distance_3
|
||||
|
|
|
|||
|
|
@ -325,27 +325,27 @@ efficiency.
|
|||
|
||||
The following example illustrates the construction of `AlgebraicKernel_d_1::Algebraic_real_1`
|
||||
using `AlgebraicKernel_d_1::Construct_algebraic_real_1`:
|
||||
<SMALL>\cgalExample{Algebraic_kernel_d/Construct_algebraic_real_1.cpp}</SMALL>
|
||||
\cgalExample{Algebraic_kernel_d/Construct_algebraic_real_1.cpp}
|
||||
|
||||
\subsection CGALAK1Solving Solving Univariate Polynomials
|
||||
|
||||
The following example illustrates the construction of `AlgebraicKernel_d_1::Algebraic_real_1`
|
||||
using `AlgebraicKernel_d_1::Solve_1`: <SMALL>\cgalExample{Algebraic_kernel_d/Solve_1.cpp} </SMALL>
|
||||
using `AlgebraicKernel_d_1::Solve_1`: \cgalExample{Algebraic_kernel_d/Solve_1.cpp}
|
||||
|
||||
\subsection CGALAK1EGCompare_1 Comparison and Approximation of Algebraic Real Numbers
|
||||
|
||||
The following example illustrates the comparison of `AlgebraicKernel_d_1::Algebraic_real_1` numbers:
|
||||
<SMALL>\cgalExample{Algebraic_kernel_d/Compare_1.cpp}</SMALL>
|
||||
\cgalExample{Algebraic_kernel_d/Compare_1.cpp}
|
||||
|
||||
\subsection CGALAK1EGIsolate_1 Isolation of Algebraic Real Numbers with respect to roots of other polynomials
|
||||
|
||||
The following example illustrates the isolation of `AlgebraicKernel_d_1::Algebraic_real_1` numbers:
|
||||
<SMALL>\cgalExample{Algebraic_kernel_d/Isolate_1.cpp}</SMALL>
|
||||
\cgalExample{Algebraic_kernel_d/Isolate_1.cpp}
|
||||
|
||||
\subsection CGALAK1EGSign_at_1 Interplay with Polynomials
|
||||
|
||||
The following example illustrates the sign evaluation of `AlgebraicKernel_d_1::Algebraic_real_1` numbers in polynomials:
|
||||
<SMALL>\cgalExample{Algebraic_kernel_d/Sign_at_1.cpp}</SMALL>
|
||||
\cgalExample{Algebraic_kernel_d/Sign_at_1.cpp}
|
||||
|
||||
\section Algebraic_kernel_dDesign Design and Implementation History
|
||||
|
||||
|
|
|
|||
|
|
@ -1524,17 +1524,11 @@ compute_intermediate_values_and_slices() const {
|
|||
#if CGAL_ACK_DEBUG_FLAG
|
||||
CGAL_ACK_DEBUG_PRINT << "Prepare intermediate slices.." << std::flush;
|
||||
#endif
|
||||
std::size_t size = event_x_coordinates().size()+1;
|
||||
this->ptr()->intermediate_values=std::vector<Lazy_bound>();
|
||||
this->ptr()->intermediate_slices=std::vector<Lazy_status_line_CPA_1>();
|
||||
|
||||
for(size_type i=0;
|
||||
i<=static_cast<size_type>(event_x_coordinates().size());
|
||||
i++) {
|
||||
this->ptr()->intermediate_values.get().push_back(Lazy_bound());
|
||||
this->ptr()->intermediate_slices.get().push_back
|
||||
(Lazy_status_line_CPA_1());
|
||||
}
|
||||
|
||||
this->ptr()->intermediate_values.get().resize(size);
|
||||
this->ptr()->intermediate_slices.get().resize(size);
|
||||
#if CGAL_ACK_DEBUG_FLAG
|
||||
CGAL_ACK_DEBUG_PRINT << "done" << std::endl;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -8,6 +8,10 @@ if(NOT POLICY CMP0070 AND POLICY CMP0053)
|
|||
cmake_policy(SET CMP0053 OLD)
|
||||
endif()
|
||||
|
||||
if(POLICY CMP0071)
|
||||
cmake_policy(SET CMP0071 NEW)
|
||||
endif()
|
||||
|
||||
find_package(CGAL COMPONENTS Core Qt5 )
|
||||
|
||||
find_package( Qt5 QUIET COMPONENTS Gui Widgets)
|
||||
|
|
|
|||
|
|
@ -2209,10 +2209,10 @@ representing line segments.
|
|||
|
||||
A polyline can be constructed given one of the following inputs:
|
||||
|
||||
- <b>A range of \a points</b>, where two succeeding points in the
|
||||
- <b>A range of <em>points</em></b>, where two succeeding points in the
|
||||
range represent the endpoints of a segment of the polyline.
|
||||
|
||||
- <b>A range of \a segments</b>. Note that , if the types
|
||||
- <b>A range of <em>segments</em></b>. Note that , if the types
|
||||
`SubcurveTraits_2::Curve_2` and `SubcurveTraits_2::X_monotone_curve_2` are
|
||||
not the same, then when `Make_x_monotone_2` is invoked the segments
|
||||
that compose the polyline will be broken into \f$x\f$-monotone
|
||||
|
|
@ -2681,7 +2681,7 @@ manner whenever possible. Thus, it resorts to exact computations only when
|
|||
the approximate computation fails to produce an unambiguous result.
|
||||
Note that most arrangement vertices are therefore associated with approximated
|
||||
points. You cannot access the coordinates of such points and obtain them as
|
||||
algebraic numbers, and only access to the approximate coordinates in possible.
|
||||
algebraic numbers, and only access to the approximate coordinates is possible.
|
||||
See the Reference Manual for the exact interface of the `Point_2`,
|
||||
`Curve_2` and `X_monotone_curve_2` defined by the traits class.
|
||||
|
||||
|
|
|
|||
|
|
@ -167,7 +167,7 @@ virtual void before_detach ();
|
|||
issued immediately after the observer has been detached from its
|
||||
arrangement instance.
|
||||
*/
|
||||
virtual void after_attach ();
|
||||
virtual void after_detach ();
|
||||
|
||||
/// @}
|
||||
|
||||
|
|
|
|||
|
|
@ -242,6 +242,11 @@ private:
|
|||
/*! Set the marked-face index */
|
||||
void set_marked_facet_index(size_type id) {m_marked_facet_index = id;}
|
||||
|
||||
/*! Add vertices to the current facet. */
|
||||
template <typename Iterator, typename Builder>
|
||||
void add_vertices_to_facet(Iterator begin, Iterator end, Builder& B)
|
||||
{ for (Iterator it = begin; it != end; ++it) B.add_vertex_to_facet(*it); }
|
||||
|
||||
/*! builds the polyhedron */
|
||||
void operator()(HDS& hds)
|
||||
{
|
||||
|
|
@ -262,11 +267,11 @@ private:
|
|||
for (CoordIndexIter it = m_indices_begin; it != m_indices_end; ++it) {
|
||||
Polyhedron_facet_handle fh = B.begin_facet();
|
||||
if (counter == m_marked_facet_index) fh->set_marked(true);
|
||||
//! \todo EF: when upgrading to C++11 change the type of the following
|
||||
// iterator to auto. Better yet, use for (auto blah : foo).
|
||||
for (std::vector<size_t>::const_iterator iit = it->begin();
|
||||
iit != it->end(); ++iit)
|
||||
B.add_vertex_to_facet(*iit);
|
||||
//! \todo EF: when upgrading to C++11 enable the following code and
|
||||
// remove add_vertices_to_facet().
|
||||
// for (const auto& facet : *it) B.add_vertex_to_facet(facet);
|
||||
// B.end_facet();
|
||||
add_vertices_to_facet(it->begin(), it->end(), B);
|
||||
B.end_facet();
|
||||
++counter;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -197,7 +197,7 @@ function(run_test_alt name datafile)
|
|||
set(command ${name} ${datafile} ${ARGN})
|
||||
string(MAKE_C_IDENTIFIER "${name} ${ARGV4} ${ARGV5}" test_name)
|
||||
add_test(NAME ${test_name} COMMAND ${command}
|
||||
WORKING_DIRECTORY ${CGAL_CURRENT_SOURCE_DIR})
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
set_property(TEST "${test_name}"
|
||||
APPEND PROPERTY DEPENDS "compilation_of__${name}")
|
||||
if(POLICY CMP0066) # CMake 3.7 or later
|
||||
|
|
|
|||
|
|
@ -708,6 +708,7 @@ user might encounter.
|
|||
## I/O Functions ##
|
||||
- \link PkgBGLIOFct CGAL::read_off() \endlink
|
||||
- \link PkgBGLIOFct CGAL::write_off() \endlink
|
||||
- \link PkgBGLIOFct CGAL::write_wrl() \endlink
|
||||
|
||||
*/
|
||||
|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 7.6 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 5.7 KiB |
|
|
@ -25,10 +25,10 @@ int main()
|
|||
Point_3(1,-1,-1),
|
||||
Point_3(1,1,-1),
|
||||
Point_3(-1,1,-1),
|
||||
Point_3(-1,1,1),
|
||||
Point_3(-1,-1,1),
|
||||
Point_3(1,-1,1),
|
||||
Point_3(1,1,1),
|
||||
Point_3(-1,1,1),
|
||||
sm
|
||||
);
|
||||
|
||||
|
|
@ -45,10 +45,10 @@ int main()
|
|||
Point_3(0.5,-0.5,-0.5),
|
||||
Point_3(0.5,0.5,-0.5),
|
||||
Point_3(-0.5,0.5,-0.5),
|
||||
Point_3(-0.5,0.5,0.5),
|
||||
Point_3(-0.5,-0.5,0.5),
|
||||
Point_3(0.5,-0.5,0.5),
|
||||
Point_3(0.5,0.5,0.5),
|
||||
Point_3(-0.5,0.5,0.5),
|
||||
poly
|
||||
);
|
||||
pvertex_descriptor pvd = * vertices(pmesh).first;
|
||||
|
|
|
|||
|
|
@ -585,8 +585,16 @@ add_face(const VertexRange& vr, Graph& g)
|
|||
|
||||
std::vector<vertex_descriptor> vertices(vr.begin(), vr.end()); // quick and dirty copy
|
||||
unsigned int n = (unsigned int)vertices.size();
|
||||
//check that every vertex is unique
|
||||
std::sort(vertices.begin(), vertices.end());
|
||||
if(std::adjacent_find(vertices.begin(), vertices.end()) != vertices.end()){
|
||||
return boost::graph_traits<Graph>::null_face();
|
||||
}
|
||||
std::copy(vr.begin(), vr.end(), vertices.begin());
|
||||
// don't allow degenerated faces
|
||||
CGAL_assertion(n > 2);
|
||||
if(n <= 2){
|
||||
return boost::graph_traits<Graph>::null_face();
|
||||
}
|
||||
|
||||
std::vector<halfedge_descriptor> halfedges(n);
|
||||
std::vector<bool> is_new(n);
|
||||
|
|
|
|||
|
|
@ -129,7 +129,7 @@ struct Face_filtered_graph
|
|||
* a property map containing an index for each face initialized from 0 to `num_vertices(graph)`
|
||||
* \cgalParamEnd
|
||||
* \cgalParamBegin{vertex_index_map}
|
||||
* a property map containing an index for each vertex initialized 0 to `num_vertices(vertex)`
|
||||
* a property map containing an index for each vertex initialized 0 to `num_vertices(graph)`
|
||||
* \cgalParamEnd
|
||||
* \cgalParamBegin{halfedge_index_map}
|
||||
* a property map containing an index for each halfedge initialized 0 to `num_halfedges(graph)`
|
||||
|
|
@ -189,7 +189,7 @@ struct Face_filtered_graph
|
|||
* a property map containing an index for each face initialized from 0 to `num_vertices(graph)`
|
||||
* \cgalParamEnd
|
||||
* \cgalParamBegin{vertex_index_map}
|
||||
* a property map containing an index for each vertex initialized 0 to `num_vertices(vertex)`
|
||||
* a property map containing an index for each vertex initialized 0 to `num_vertices(graph)`
|
||||
* \cgalParamEnd
|
||||
* \cgalParamBegin{halfedge_index_map}
|
||||
* a property map containing an index for each halfedge initialized 0 to `num_halfedges(graph)`
|
||||
|
|
@ -236,7 +236,7 @@ struct Face_filtered_graph
|
|||
* a property map containing an index for each face initialized from 0 to `num_vertices(graph)`
|
||||
* \cgalParamEnd
|
||||
* \cgalParamBegin{vertex_index_map}
|
||||
* a property map containing an index for each vertex initialized 0 to `num_vertices(vertex)`
|
||||
* a property map containing an index for each vertex initialized 0 to `num_vertices(graph)`
|
||||
* \cgalParamEnd
|
||||
* \cgalParamBegin{halfedge_index_map}
|
||||
* a property map containing an index for each halfedge initialized 0 to `num_halfedges(graph)`
|
||||
|
|
|
|||
|
|
@ -36,12 +36,15 @@
|
|||
#include <boost/graph/graph_traits.hpp>
|
||||
#include <boost/tuple/tuple.hpp>
|
||||
|
||||
#include <cstdlib>
|
||||
|
||||
namespace CGAL {
|
||||
|
||||
namespace METIS {
|
||||
|
||||
template<typename TriangleMesh, typename METIS_options, typename NamedParameters>
|
||||
void partition_dual_graph(const TriangleMesh& tm, int nparts,
|
||||
void partition_dual_graph(const TriangleMesh& tm,
|
||||
int nparts,
|
||||
METIS_options options, // options array
|
||||
const NamedParameters& np)
|
||||
{
|
||||
|
|
@ -93,11 +96,11 @@ void partition_dual_graph(const TriangleMesh& tm, int nparts,
|
|||
idx_t objval;
|
||||
|
||||
// partition info for the nodes
|
||||
idx_t* npart = (idx_t*) calloc(nn, sizeof(idx_t));
|
||||
idx_t* npart = (idx_t*) calloc(num_vertices(tm), sizeof(idx_t));
|
||||
CGAL_assertion(npart != NULL);
|
||||
|
||||
// partition info for the elements
|
||||
idx_t* epart = (idx_t*) calloc(ne, sizeof(idx_t));
|
||||
idx_t* epart = (idx_t*) calloc(num_faces(tm), sizeof(idx_t));
|
||||
CGAL_assertion(epart != NULL);
|
||||
|
||||
// do not support Fortran-style arrays
|
||||
|
|
@ -118,6 +121,12 @@ void partition_dual_graph(const TriangleMesh& tm, int nparts,
|
|||
Output_face_partition_ids fo;
|
||||
vo(tm, indices, npart, get_param(np, internal_np::vertex_partition_id));
|
||||
fo(tm, epart, get_param(np, internal_np::face_partition_id));
|
||||
|
||||
delete[] eptr;
|
||||
delete[] eind;
|
||||
|
||||
std::free(npart);
|
||||
std::free(epart);
|
||||
}
|
||||
|
||||
template<typename TriangleMesh, typename NamedParameters>
|
||||
|
|
|
|||
|
|
@ -34,6 +34,8 @@
|
|||
#include <boost/graph/graph_traits.hpp>
|
||||
#include <boost/tuple/tuple.hpp>
|
||||
|
||||
#include <cstdlib>
|
||||
|
||||
namespace CGAL {
|
||||
|
||||
namespace METIS {
|
||||
|
|
@ -76,7 +78,8 @@ struct Output_face_partition_ids
|
|||
};
|
||||
|
||||
template<typename TriangleMesh, typename METIS_options, typename NamedParameters>
|
||||
void partition_graph(const TriangleMesh& tm, int nparts,
|
||||
void partition_graph(const TriangleMesh& tm,
|
||||
int nparts,
|
||||
METIS_options options, // pointer to the options array
|
||||
const NamedParameters& np)
|
||||
{
|
||||
|
|
@ -125,11 +128,11 @@ void partition_graph(const TriangleMesh& tm, int nparts,
|
|||
idx_t objval;
|
||||
|
||||
// partition info for the nodes
|
||||
idx_t* npart = (idx_t*) calloc(nn, sizeof(idx_t));
|
||||
idx_t* npart = (idx_t*) calloc(num_vertices(tm), sizeof(idx_t));
|
||||
CGAL_assertion(npart != NULL);
|
||||
|
||||
// partition info for the elements
|
||||
idx_t* epart = (idx_t*) calloc(ne, sizeof(idx_t));
|
||||
idx_t* epart = (idx_t*) calloc(num_faces(tm), sizeof(idx_t));
|
||||
CGAL_assertion(epart != NULL);
|
||||
|
||||
// do not support Fortran-style arrays
|
||||
|
|
@ -150,6 +153,12 @@ void partition_graph(const TriangleMesh& tm, int nparts,
|
|||
Output_face_partition_ids fo;
|
||||
vo(tm, indices, npart, get_param(np, internal_np::vertex_partition_id));
|
||||
fo(tm, epart, get_param(np, internal_np::face_partition_id));
|
||||
|
||||
delete[] eptr;
|
||||
delete[] eind;
|
||||
|
||||
std::free(npart);
|
||||
std::free(epart);
|
||||
}
|
||||
|
||||
template<typename TriangleMesh, typename NamedParameters>
|
||||
|
|
|
|||
|
|
@ -837,6 +837,8 @@ make_quad(const P& p0, const P& p1, const P& p2, const P& p3, Graph& g)
|
|||
* \ingroup PkgBGLHelperFct
|
||||
* \brief Creates an isolated hexahedron
|
||||
* with its vertices initialized to `p0`, `p1`, ...\ , and `p7`, and adds it to the graph `g`.
|
||||
* \image html hexahedron.png
|
||||
* \image latex hexahedron.png
|
||||
* \returns the halfedge that has the target vertex associated with `p0`, in the face with the vertices with the points `p0`, `p1`, `p2`, and `p3`.
|
||||
**/
|
||||
template<typename Graph, typename P>
|
||||
|
|
@ -868,16 +870,16 @@ make_hexahedron(const P& p0, const P& p1, const P& p2, const P& p3,
|
|||
ppmap[v6] = p6;
|
||||
ppmap[v7] = p7;
|
||||
|
||||
halfedge_descriptor ht = internal::make_quad(v7, v4, v5, v6, g);
|
||||
halfedge_descriptor hb = prev(internal::make_quad(v1, v0, v3, v2, g),g);
|
||||
halfedge_descriptor ht = internal::make_quad(v4, v5, v6, v7, g);
|
||||
halfedge_descriptor hb = prev(internal::make_quad(v0, v3, v2, v1, g),g);
|
||||
for(int i=0; i <4; i++){
|
||||
halfedge_descriptor h = halfedge(add_edge(g),g);
|
||||
set_target(h,target(hb,g),g);
|
||||
set_next(h,opposite(hb,g),g);
|
||||
set_next(opposite(next(ht,g),g),h,g);
|
||||
set_next(opposite(prev(ht,g),g),h,g);
|
||||
h = opposite(h,g);
|
||||
set_target(h,target(ht,g),g);
|
||||
set_next(h,opposite(ht,g),g);
|
||||
set_target(h,source(prev(ht,g),g),g);
|
||||
set_next(h,opposite(next(next(ht,g),g),g),g);
|
||||
set_next(opposite(next(hb,g),g),h,g);
|
||||
hb = next(hb,g);
|
||||
ht = prev(ht,g);
|
||||
|
|
@ -892,6 +894,8 @@ make_hexahedron(const P& p0, const P& p1, const P& p2, const P& p3,
|
|||
* \ingroup PkgBGLHelperFct
|
||||
* \brief Creates an isolated tetrahedron
|
||||
* with its vertices initialized to `p0`, `p1`, `p2`, and `p3`, and adds it to the graph `g`.
|
||||
* \image html tetrahedron.png
|
||||
* \image latex tetrahedron.png
|
||||
* \returns the halfedge that has the target vertex associated with `p0`, in the face with the vertices with the points `p0`, `p1`, and `p2`.
|
||||
**/
|
||||
template<typename Graph, typename P>
|
||||
|
|
@ -1081,7 +1085,7 @@ make_regular_prism(
|
|||
* \ingroup PkgBGLHelperFct
|
||||
* \brief Creates a pyramid, outward oriented, having `nb_vertices` vertices in its base and adds it to the graph `g`.
|
||||
*
|
||||
* If `center` is (0, 0, 0), then the first point of the base is (`radius`, 0`, 0)
|
||||
* If `center` is `(0, 0, 0)`, then the first point of the base is `(radius, 0, 0)`
|
||||
* \param nb_vertices the number of vertices in the base. It must be greater than or equal to 3.
|
||||
* \param g the graph in which the pyramid will be created
|
||||
* \param base_center the center of the circle in which the base is inscribed.
|
||||
|
|
|
|||
|
|
@ -36,6 +36,89 @@
|
|||
#include <CGAL/boost/graph/named_function_params.h>
|
||||
|
||||
namespace CGAL {
|
||||
/*!
|
||||
\ingroup PkgBGLIOFct
|
||||
writes the graph `g` in the wrl format (VRML 2.0).
|
||||
|
||||
\cgalNamedParamsBegin
|
||||
* \cgalParamBegin{vertex_point_map} the property map with the points associated to the vertices of `g`.
|
||||
* If this parameter is omitted, an internal property map for
|
||||
* `CGAL::vertex_point_t` should be available in `FaceGraph`\cgalParamEnd
|
||||
* \cgalNamedParamsEnd
|
||||
*/
|
||||
template <typename FaceGraph, typename NamedParameters>
|
||||
bool write_wrl(std::ostream& os,
|
||||
const FaceGraph& g,
|
||||
const NamedParameters& np)
|
||||
{
|
||||
typedef typename boost::graph_traits<FaceGraph>::vertex_descriptor vertex_descriptor;
|
||||
typedef typename boost::graph_traits<FaceGraph>::face_descriptor face_descriptor;
|
||||
typedef typename boost::graph_traits<FaceGraph>::vertices_size_type vertices_size_type;
|
||||
|
||||
typename Polygon_mesh_processing::GetVertexPointMap<FaceGraph, NamedParameters>::const_type
|
||||
vpm = choose_param(get_param(np, internal_np::vertex_point),
|
||||
get_const_property_map(CGAL::vertex_point, g));
|
||||
|
||||
boost::container::flat_map<vertex_descriptor,vertices_size_type> reindex;
|
||||
int n = 0;
|
||||
|
||||
os << "#VRML V2.0 utf8\n"
|
||||
"Group {\n"
|
||||
"children [\n"
|
||||
"Shape {\n"
|
||||
"appearance DEF A1 Appearance {\n"
|
||||
"material Material {\n"
|
||||
"diffuseColor .6 .5 .9\n"
|
||||
"}\n"
|
||||
"}\n"
|
||||
"appearance\n"
|
||||
"Appearance {\n"
|
||||
"material DEF Material Material {}\n"
|
||||
"}\n"
|
||||
"}\n"
|
||||
"Group {\n"
|
||||
"children [\n"
|
||||
"Shape {\n"
|
||||
"appearance Appearance { material USE Material }\n"
|
||||
"geometry IndexedFaceSet {\n"
|
||||
"convex FALSE\n"
|
||||
"solid FALSE\n"
|
||||
"coord Coordinate {\n"
|
||||
"point [\n";
|
||||
|
||||
BOOST_FOREACH(vertex_descriptor v, vertices(g)){
|
||||
os << get(vpm,v) << ",\n";
|
||||
reindex[v]=n++;
|
||||
}
|
||||
os << "] #point\n"
|
||||
"} #coord Coordinate\n"
|
||||
"coordIndex [\n";
|
||||
BOOST_FOREACH(face_descriptor f, faces(g)){
|
||||
BOOST_FOREACH(vertex_descriptor v, vertices_around_face(halfedge(f,g),g)){
|
||||
os << reindex[v] << ",";
|
||||
}
|
||||
os << "-1,\n";
|
||||
}
|
||||
|
||||
os << "] #coordIndex\n"
|
||||
"} #geometry\n"
|
||||
"} #Shape\n"
|
||||
"] #children\n"
|
||||
"} #group\n"
|
||||
"]\n"
|
||||
"}\n";
|
||||
|
||||
return os.good();
|
||||
}
|
||||
|
||||
template <typename FaceGraph>
|
||||
bool write_wrl(std::ostream& os,
|
||||
const FaceGraph& g)
|
||||
{
|
||||
return write_wrl(os, g,
|
||||
parameters::all_default());
|
||||
}
|
||||
|
||||
/*!
|
||||
\ingroup PkgBGLIOFct
|
||||
writes the graph `g` in the OFF format.
|
||||
|
|
|
|||
|
|
@ -325,11 +325,17 @@ namespace CGAL {
|
|||
template<typename PointRange, typename NamedParameters>
|
||||
class GetK
|
||||
{
|
||||
typedef typename boost::property_traits<
|
||||
typename GetPointMap<PointRange, NamedParameters>::type
|
||||
>::value_type Point;
|
||||
typedef typename GetPointMap<PointRange, NamedParameters>::type Vpm;
|
||||
typedef typename Kernel_traits<
|
||||
typename boost::property_traits<Vpm>::value_type
|
||||
>::Kernel Default_kernel;
|
||||
|
||||
public:
|
||||
typedef typename CGAL::Kernel_traits<Point>::Kernel Kernel;
|
||||
typedef typename boost::lookup_named_param_def <
|
||||
internal_np::geom_traits_t,
|
||||
NamedParameters,
|
||||
Default_kernel
|
||||
> ::type Kernel;
|
||||
};
|
||||
|
||||
template<typename PointRange, typename NamedParameters>
|
||||
|
|
@ -399,6 +405,29 @@ namespace CGAL {
|
|||
> ::type type;
|
||||
};
|
||||
|
||||
template<typename PointRange, typename NamedParameters>
|
||||
class GetIsConstrainedMap
|
||||
{
|
||||
struct DummyConstrainedMap
|
||||
{
|
||||
typedef typename std::iterator_traits<typename PointRange::iterator>::value_type key_type;
|
||||
typedef bool value_type;
|
||||
typedef value_type reference;
|
||||
typedef boost::readable_property_map_tag category;
|
||||
|
||||
typedef DummyConstrainedMap Self;
|
||||
friend reference get(const Self&, const key_type&) { return false; }
|
||||
};
|
||||
|
||||
public:
|
||||
typedef DummyConstrainedMap NoMap;
|
||||
typedef typename boost::lookup_named_param_def <
|
||||
internal_np::point_is_constrained_t,
|
||||
NamedParameters,
|
||||
DummyConstrainedMap //default
|
||||
> ::type type;
|
||||
};
|
||||
|
||||
} // namespace Point_set_processing_3
|
||||
|
||||
template<typename NamedParameters, typename DefaultSolver>
|
||||
|
|
|
|||
|
|
@ -117,3 +117,4 @@ CGAL_add_named_parameter(plane_t, plane_map, plane_map)
|
|||
CGAL_add_named_parameter(plane_index_t, plane_index_map, plane_index_map)
|
||||
CGAL_add_named_parameter(select_percentage_t, select_percentage, select_percentage)
|
||||
CGAL_add_named_parameter(require_uniform_sampling_t, require_uniform_sampling, require_uniform_sampling)
|
||||
CGAL_add_named_parameter(point_is_constrained_t, point_is_constrained, point_is_constrained_map)
|
||||
|
|
|
|||
|
|
@ -441,17 +441,17 @@ put(boost::vertex_point_t p, OPEN_MESH_CLASS& g,
|
|||
} // namespace OpenMesh
|
||||
|
||||
|
||||
|
||||
// dynamic properties
|
||||
namespace boost {
|
||||
|
||||
template <typename K, typename V>
|
||||
struct property_map<OPEN_MESH_CLASS, CGAL::dynamic_vertex_property_t<V> >
|
||||
struct property_map<OPEN_MESH_CLASS, CGAL::dynamic_vertex_property_t<V> >
|
||||
{
|
||||
typedef OPEN_MESH_CLASS SM;
|
||||
typedef typename boost::graph_traits<SM>::vertex_descriptor vertex_descriptor;
|
||||
typedef CGAL::OM_pmap<SM,vertex_descriptor, V> SMPM;
|
||||
typedef CGAL::internal::Dynamic<SM, SMPM> type;
|
||||
typedef type const_type;
|
||||
typedef CGAL::internal::Dynamic_with_index<vertex_descriptor, V> const_type;
|
||||
};
|
||||
|
||||
template <typename K, typename V>
|
||||
|
|
@ -461,7 +461,7 @@ struct property_map<OPEN_MESH_CLASS, CGAL::dynamic_halfedge_property_t<V> >
|
|||
typedef typename boost::graph_traits<SM>::halfedge_descriptor halfedge_descriptor;
|
||||
typedef CGAL::OM_pmap<SM,halfedge_descriptor, V> SMPM;
|
||||
typedef CGAL::internal::Dynamic<SM, SMPM> type;
|
||||
typedef type const_type;
|
||||
typedef CGAL::internal::Dynamic_with_index<halfedge_descriptor, V> const_type;
|
||||
};
|
||||
|
||||
template <typename K, typename V>
|
||||
|
|
@ -471,7 +471,7 @@ struct property_map<OPEN_MESH_CLASS, CGAL::dynamic_edge_property_t<V> >
|
|||
typedef typename boost::graph_traits<SM>::edge_descriptor edge_descriptor;
|
||||
typedef CGAL::OM_pmap<SM,edge_descriptor, V> SMPM;
|
||||
typedef CGAL::internal::Dynamic<SM, SMPM> type;
|
||||
typedef type const_type;
|
||||
typedef CGAL::internal::Dynamic_with_index<edge_descriptor, V> const_type;
|
||||
};
|
||||
|
||||
template <typename K, typename V>
|
||||
|
|
@ -481,7 +481,7 @@ struct property_map<OPEN_MESH_CLASS, CGAL::dynamic_face_property_t<V> >
|
|||
typedef typename boost::graph_traits<SM>::face_descriptor face_descriptor;
|
||||
typedef CGAL::OM_pmap<SM,face_descriptor, V> SMPM;
|
||||
typedef CGAL::internal::Dynamic<SM, SMPM> type;
|
||||
typedef type const_type;
|
||||
typedef CGAL::internal::Dynamic_with_index<face_descriptor, V> const_type;
|
||||
};
|
||||
|
||||
} // namespace boost
|
||||
|
|
@ -489,46 +489,84 @@ struct property_map<OPEN_MESH_CLASS, CGAL::dynamic_face_property_t<V> >
|
|||
|
||||
namespace OpenMesh {
|
||||
|
||||
// get function for dynamic properties of mutable graph
|
||||
template <typename K, typename V>
|
||||
typename boost::property_map<OPEN_MESH_CLASS, CGAL::dynamic_vertex_property_t<V> >::const_type
|
||||
typename boost::property_map<OPEN_MESH_CLASS, CGAL::dynamic_vertex_property_t<V> >::type
|
||||
get(CGAL::dynamic_vertex_property_t<V>, OPEN_MESH_CLASS& om)
|
||||
{
|
||||
typedef OPEN_MESH_CLASS OM;
|
||||
typedef typename boost::property_map<OM, CGAL::dynamic_vertex_property_t<V> >::SMPM SMPM;
|
||||
typedef typename boost::property_map<OM, CGAL::dynamic_vertex_property_t<V> >::const_type DPM;
|
||||
typedef typename boost::property_map<OM, CGAL::dynamic_vertex_property_t<V> >::type DPM;
|
||||
return DPM(om, new SMPM(om));
|
||||
}
|
||||
|
||||
template <typename K, typename V>
|
||||
typename boost::property_map<OPEN_MESH_CLASS, CGAL::dynamic_halfedge_property_t<V> >::const_type
|
||||
typename boost::property_map<OPEN_MESH_CLASS, CGAL::dynamic_halfedge_property_t<V> >::type
|
||||
get(CGAL::dynamic_halfedge_property_t<V>, OPEN_MESH_CLASS& om)
|
||||
{
|
||||
typedef OPEN_MESH_CLASS OM;
|
||||
typedef typename boost::property_map<OM, CGAL::dynamic_halfedge_property_t<V> >::SMPM SMPM;
|
||||
typedef typename boost::property_map<OM, CGAL::dynamic_halfedge_property_t<V> >::const_type DPM;
|
||||
typedef typename boost::property_map<OM, CGAL::dynamic_halfedge_property_t<V> >::type DPM;
|
||||
return DPM(om, new SMPM(om));
|
||||
}
|
||||
|
||||
template <typename K, typename V>
|
||||
typename boost::property_map<OPEN_MESH_CLASS, CGAL::dynamic_edge_property_t<V> >::const_type
|
||||
typename boost::property_map<OPEN_MESH_CLASS, CGAL::dynamic_edge_property_t<V> >::type
|
||||
get(CGAL::dynamic_edge_property_t<V>, OPEN_MESH_CLASS& om)
|
||||
{
|
||||
typedef OPEN_MESH_CLASS OM;
|
||||
typedef typename boost::property_map<OM, CGAL::dynamic_edge_property_t<V> >::SMPM SMPM;
|
||||
typedef typename boost::property_map<OM, CGAL::dynamic_edge_property_t<V> >::const_type DPM;
|
||||
typedef typename boost::property_map<OM, CGAL::dynamic_edge_property_t<V> >::type DPM;
|
||||
return DPM(om, new SMPM(om));
|
||||
}
|
||||
|
||||
template <typename K, typename V>
|
||||
typename boost::property_map<OPEN_MESH_CLASS, CGAL::dynamic_face_property_t<V> >::const_type
|
||||
typename boost::property_map<OPEN_MESH_CLASS, CGAL::dynamic_face_property_t<V> >::type
|
||||
get(CGAL::dynamic_face_property_t<V>, OPEN_MESH_CLASS& om)
|
||||
{
|
||||
typedef OPEN_MESH_CLASS OM;
|
||||
typedef typename boost::property_map<OM, CGAL::dynamic_face_property_t<V> >::SMPM SMPM;
|
||||
typedef typename boost::property_map<OM, CGAL::dynamic_face_property_t<V> >::const_type DPM;
|
||||
typedef typename boost::property_map<OM, CGAL::dynamic_face_property_t<V> >::type DPM;
|
||||
return DPM(om, new SMPM(om));
|
||||
}
|
||||
|
||||
// get function for dynamic properties of const graph
|
||||
template <typename K, typename V>
|
||||
typename boost::property_map<OPEN_MESH_CLASS, CGAL::dynamic_vertex_property_t<V> >::const_type
|
||||
get(CGAL::dynamic_vertex_property_t<V>, const OPEN_MESH_CLASS& om)
|
||||
{
|
||||
typedef OPEN_MESH_CLASS OM;
|
||||
typedef typename boost::property_map<OM, CGAL::dynamic_vertex_property_t<V> >::const_type DPM;
|
||||
return DPM(num_vertices(om));
|
||||
}
|
||||
|
||||
template <typename K, typename V>
|
||||
typename boost::property_map<OPEN_MESH_CLASS, CGAL::dynamic_halfedge_property_t<V> >::const_type
|
||||
get(CGAL::dynamic_halfedge_property_t<V>, const OPEN_MESH_CLASS& om)
|
||||
{
|
||||
typedef OPEN_MESH_CLASS OM;
|
||||
typedef typename boost::property_map<OM, CGAL::dynamic_halfedge_property_t<V> >::const_type DPM;
|
||||
return DPM(num_halfedges(om));
|
||||
}
|
||||
|
||||
template <typename K, typename V>
|
||||
typename boost::property_map<OPEN_MESH_CLASS, CGAL::dynamic_edge_property_t<V> >::const_type
|
||||
get(CGAL::dynamic_edge_property_t<V>, const OPEN_MESH_CLASS& om)
|
||||
{
|
||||
typedef OPEN_MESH_CLASS OM;
|
||||
typedef typename boost::property_map<OM, CGAL::dynamic_edge_property_t<V> >::const_type DPM;
|
||||
return DPM(num_edges(om));
|
||||
}
|
||||
|
||||
template <typename K, typename V>
|
||||
typename boost::property_map<OPEN_MESH_CLASS, CGAL::dynamic_face_property_t<V> >::const_type
|
||||
get(CGAL::dynamic_face_property_t<V>, const OPEN_MESH_CLASS& om)
|
||||
{
|
||||
typedef OPEN_MESH_CLASS OM;
|
||||
typedef typename boost::property_map<OM, CGAL::dynamic_face_property_t<V> >::const_type DPM;
|
||||
return DPM(num_faces(om));
|
||||
}
|
||||
|
||||
// implementation detail: required by Dynamic_property_map_deleter
|
||||
template <typename Pmap, typename K>
|
||||
void remove_property(Pmap pm, OPEN_MESH_CLASS& om)
|
||||
|
|
|
|||
|
|
@ -97,6 +97,8 @@ create_single_source_cgal_program( "test_graph_traits.cpp" )
|
|||
|
||||
create_single_source_cgal_program( "test_Properties.cpp" )
|
||||
|
||||
create_single_source_cgal_program( "test_wrl.cpp" )
|
||||
|
||||
if(OpenMesh_FOUND)
|
||||
target_link_libraries( test_clear PRIVATE ${OPENMESH_LIBRARIES})
|
||||
target_link_libraries( test_Euler_operations PRIVATE ${OPENMESH_LIBRARIES})
|
||||
|
|
|
|||
|
|
@ -132,7 +132,7 @@ int main()
|
|||
assert(CGAL::is_triangle_mesh(m));
|
||||
assert(CGAL::is_valid_polygon_mesh(m));
|
||||
m.clear();
|
||||
hd = CGAL::make_hexahedron(a,b,c,d,aa,bb,cc,dd,m);
|
||||
hd = CGAL::make_hexahedron(a,b,c,d,dd,aa,bb,cc,m);
|
||||
assert(CGAL::is_hexahedron(hd,m));
|
||||
assert(CGAL::is_quad_mesh(m));
|
||||
assert(CGAL::is_valid_polygon_mesh(m));
|
||||
|
|
|
|||
|
|
@ -0,0 +1,18 @@
|
|||
#include <CGAL/Simple_cartesian.h>
|
||||
#include <CGAL/Surface_mesh.h>
|
||||
#include <CGAL/boost/graph/helpers.h>
|
||||
#include <CGAL/boost/graph/io.h>
|
||||
#include <iostream>
|
||||
|
||||
typedef CGAL::Simple_cartesian<double> Kernel;
|
||||
typedef Kernel::Point_3 Point;
|
||||
typedef CGAL::Surface_mesh<Point> Mesh;
|
||||
|
||||
int main()
|
||||
{
|
||||
Mesh sm;
|
||||
|
||||
CGAL::make_tetrahedron(Point(0,0,0), Point(1,0,0), Point(1,1,0), Point(0,0,1), sm);
|
||||
CGAL::write_wrl(std::cout, sm);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -74,7 +74,7 @@ polygon vertices is referred to as the polygon <B>(outer) boundary</B>.
|
|||
|
||||
<LI>A polygon whose curves are pairwise disjoint in their interior, and whose vertices' degree equals two is defined as a <B>Simple polygon</B>. Such a polygon has a well-defined interior and exterior and is topologically equivalent to a disk. Note that while traversing the edges of the relatively simple polygon illustrated above (B), no curve is crossed over.
|
||||
|
||||
<LI>A <B>Relatively simple</B> polygon allows vertices with a degree\f$\gt 2\f$, but all of its edges are disjoint in their interior. Furthermore, it must be an orientable polygon. Namely when it is inserted into an arrangement and its outer boundary is traversed, the same face is adjacent to all of the halfedges (no crossing over any curve during the traversal).
|
||||
<LI>A <B>Relatively simple</B> polygon allows vertices with a degree\f$> 2\f$, but all of its edges are disjoint in their interior. Furthermore, it must be an orientable polygon. Namely when it is inserted into an arrangement and its outer boundary is traversed, the same face is adjacent to all of the halfedges (no crossing over any curve during the traversal).
|
||||
Note that while polygon C has the same curves as polygon B, traversal of the curves leads to crossing over a previously traversed curve, and is therefore neither simple nor relatively simple.
|
||||
|
||||
<LI>A polygon in our context must be relatively simple and its outer boundary vertices must be ordered in a counterclockwise direction around the interior of the polygon.
|
||||
|
|
|
|||
|
|
@ -13,28 +13,28 @@ x\in\E^d \mid x^T E x + x^T e + \eta\leq 0 \}\f$, where \f$ E\f$ is some
|
|||
positive definite matrix from the set \f$ \mathbb{R}^{d\times d}\f$, \f$ e\f$ is some
|
||||
real \f$ d\f$-vector, and \f$ \eta\in\mathbb{R}\f$. A pointset \f$ P\subseteq \E^d\f$ is
|
||||
called <I>full-dimensional</I> if its affine hull has dimension \f$ d\f$.
|
||||
For a finite, full-dimensional pointset \f$ P\f$ we denote by \f$ \mel(P)\f$ the
|
||||
For a finite, full-dimensional pointset \f$ P\f$ we denote by \f$ (P)\f$ the
|
||||
smallest ellipsoid that contains all points of \f$ P\f$; this ellipsoid
|
||||
exists and is unique.
|
||||
|
||||
For a given finite and full-dimensional pointset \f$ P\subset \E^d\f$ and a
|
||||
real number \f$ \epsilon\ge 0\f$, we say that an ellipsoid \f$ {\cal
|
||||
E}\subset\E^d\f$ is an <I>\f$ (1+\epsilon)\f$-appoximation</I> to \f$ \mel(P)\f$ if
|
||||
\f$ P\subset {\cal E}\f$ and \f$ \vol({\cal E}) \leq (1+\epsilon)
|
||||
\vol(\mel(P))\f$. In other words, an \f$ (1+\epsilon)\f$-approximation to
|
||||
\f$ \mel(P)\f$ is an enclosing ellipsoid whose volume is by at most a
|
||||
E}\subset\E^d\f$ is an <I>\f$ (1+\epsilon)\f$-appoximation</I> to \f$ (P)\f$ if
|
||||
\f$ P\subset {\cal E}\f$ and \f$ ({\cal E}) \leq (1+\epsilon)
|
||||
((P))\f$. In other words, an \f$ (1+\epsilon)\f$-approximation to
|
||||
\f$ (P)\f$ is an enclosing ellipsoid whose volume is by at most a
|
||||
factor of \f$ 1+\epsilon\f$ larger than the volume of the smallest
|
||||
enclosing ellipsoid of \f$ P\f$.
|
||||
|
||||
Given this notation, an object of class `Approximate_min_ellipsoid_d` represents an
|
||||
\f$ (1+\epsilon)\f$-approximation to \f$ \mel(P)\f$ for a given finite and
|
||||
\f$ (1+\epsilon)\f$-approximation to \f$ (P)\f$ for a given finite and
|
||||
full-dimensional multiset of points \f$ P\subset\E^d\f$ and a real constant
|
||||
\f$ \epsilon>0\f$.\cgalFootnote{A <I>multiset</I> is a set where elements may have multiplicity greater than \f$ 1\f$.} When an
|
||||
`Approximate_min_ellipsoid_d<Traits>` object is constructed, an
|
||||
iterator over the points \f$ P\f$ and the number \f$ \epsilon\f$ have to be
|
||||
specified; the number \f$ \epsilon\f$ defines the <I>desired
|
||||
approximation ratio</I> \f$ 1+\epsilon\f$. The underlying algorithm will then
|
||||
try to compute an \f$ (1+\epsilon)\f$-approximation to \f$ \mel(P)\f$, and one of
|
||||
try to compute an \f$ (1+\epsilon)\f$-approximation to \f$ (P)\f$, and one of
|
||||
the following two cases takes place.
|
||||
<UL>
|
||||
<LI>The algorithm determines that \f$ P\f$ is not full-dimensional (see
|
||||
|
|
@ -44,7 +44,7 @@ the following two cases takes place.
|
|||
in all cases decide correctly whether \f$ P\f$ is full-dimensional or
|
||||
not. If `is_full_dimensional()` returns `false`, the points
|
||||
lie in such a "thin" subspace of \f$ \E^d\f$ that the algorithm is
|
||||
incapable of computing an approximation to \f$ \mel(P)\f$. More
|
||||
incapable of computing an approximation to \f$ (P)\f$. More
|
||||
precisely, if `is_full_dimensional()` returns `false`, there
|
||||
exist two parallel hyperplanes in \f$ \E^d\f$ with the points \f$ P\f$ in
|
||||
between so that the distance \f$ \delta\f$ between the hyperplanes is
|
||||
|
|
@ -55,7 +55,7 @@ If \f$ P\f$ is not full-dimensional, linear algebra techniques should be
|
|||
used to determine an affine subspace \f$ S\f$ of \f$ \E^d\f$ that contains the
|
||||
points \f$ P\f$ as a (w.r.t.\ \f$ S\f$) full-dimensional pointset; once \f$ S\f$ is
|
||||
determined, the algorithm can be invoked again to compute an
|
||||
approximation to (the lower-dimensional) \f$ \mel(P)\f$ in \f$ S\f$. Since
|
||||
approximation to (the lower-dimensional) \f$ (P)\f$ in \f$ S\f$. Since
|
||||
`is_full_dimensional()` might (due to rounding errors, see
|
||||
above) return `false` even though \f$ P\f$ is full-dimensional, the
|
||||
lower-dimensional subspace \f$ S\f$ containing \f$ P\f$ need not exist.
|
||||
|
|
@ -66,7 +66,7 @@ ellipsoid of the projected points within \f$ H\f$; the fitting can be
|
|||
done for instance using the `linear_least_squares_fitting()`
|
||||
function from the \cgal package `Principal_component_analysis`.
|
||||
<LI>The algorithm determines that \f$ P\f$ is full-dimensional. In this
|
||||
case, it provides an approximation \f$ {\cal E}\f$ to \f$ \mel(P)\f$, but
|
||||
case, it provides an approximation \f$ {\cal E}\f$ to \f$ (P)\f$, but
|
||||
depending on the input problem (i.e., on the pair \f$ (P,\epsilon)\f$),
|
||||
it may not have achieved the desired approximation ratio but merely
|
||||
some <I>worse</I> approximation ratio \f$ 1+\epsilon'>1+\epsilon\f$. The
|
||||
|
|
@ -126,7 +126,7 @@ Cholesky-decomposition. The algorithm's running time is
|
|||
|
||||
To illustrate the usage of `Approximate_min_ellipsoid_d` we give two examples in 2D. The
|
||||
first program generates a random set \f$ P\subset\E^2\f$ and outputs the
|
||||
points and a \f$ 1.01\f$-approximation of \f$ \mel(P)\f$ as an EPS-file, which
|
||||
points and a \f$ 1.01\f$-approximation of \f$ (P)\f$ as an EPS-file, which
|
||||
you can view using <TT>gv</TT>, for instance. (In both examples you can
|
||||
change the variables `n` and `d` to experiment with the code.)
|
||||
|
||||
|
|
@ -204,7 +204,7 @@ typedef unspecified_type Axis_direction_iterator;
|
|||
/*!
|
||||
|
||||
initializes `ame` to an \f$ (1+\epsilon)\f$-approximation of
|
||||
\f$ \mel(P)\f$ with \f$ P\f$ being the set of points in the range
|
||||
\f$ (P)\f$ with \f$ P\f$ being the set of points in the range
|
||||
[`first`,`last`). The number \f$ \epsilon\f$ in this will
|
||||
be at most `eps`, if possible. However, due to the
|
||||
limited precision in the algorithm's underlying arithmetic, it
|
||||
|
|
@ -260,7 +260,7 @@ unsigned int number_of_points( ) const;
|
|||
returns a number
|
||||
\f$ \epsilon'\f$ such that the computed approximation is (under exact
|
||||
arithmetic) guaranteed to be an \f$ (1+\epsilon')\f$-approximation to
|
||||
\f$ \mel(P)\f$.
|
||||
\f$ (P)\f$.
|
||||
\pre `ame.is_full_dimensional() == true`.
|
||||
\post \f$ \epsilon'>0\f$.
|
||||
*/
|
||||
|
|
@ -404,7 +404,7 @@ bool is_full_dimensional( ) const;
|
|||
/// An object `ame` is valid iff <UL> <LI>`ame` contains all points of
|
||||
/// its defining set \f$ P\f$, <LI>`ame` is an \f$
|
||||
/// (1+\epsilon')\f$-approximation to the smallest ellipsoid \f$
|
||||
/// \mel(P)\f$ of \f$ P\f$, <LI>The ellipsoid represented by `ame`
|
||||
/// (P)\f$ of \f$ P\f$, <LI>The ellipsoid represented by `ame`
|
||||
/// fulfills the inclusion ( \ref eqapproximate_min_ellipsoid_incl
|
||||
/// ). </UL>
|
||||
/// @{
|
||||
|
|
@ -426,7 +426,7 @@ bool is_valid( bool verbose = false) const;
|
|||
/*!
|
||||
|
||||
Writes the points \f$ P\f$ and the computed approximation to
|
||||
\f$ \mel(P)\f$ as an EPS-file under pathname `name`. \pre The dimension of points \f$ P\f$ must be \f$ 2\f$.
|
||||
\f$ (P)\f$ as an EPS-file under pathname `name`. \pre The dimension of points \f$ P\f$ must be \f$ 2\f$.
|
||||
<I>Note:</I> this
|
||||
routine is provided as a debugging routine; future version of
|
||||
\cgal might not provide it anymore.
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@
|
|||
#include <CGAL/boost/iterator/counting_iterator.hpp>
|
||||
#include <CGAL/boost/iterator/transform_iterator.hpp>
|
||||
#include <boost/functional.hpp>
|
||||
#include <CGAL/NT_converter.h>
|
||||
|
||||
// here is how it works. We have d+2 variables:
|
||||
// R (big radius), r (small radius), c (center). The problem is
|
||||
|
|
@ -466,7 +467,8 @@ public:
|
|||
{ CGAL_optimisation_precondition(
|
||||
is_empty() || tco.access_dimension_d_object()( p) == d);
|
||||
ET sqr_d = sqr_dist( p);
|
||||
ET h_p_sqr = da_coord(p)[d] * da_coord(p)[d];
|
||||
ET h_p_sqr(da_coord(p)[d]);
|
||||
h_p_sqr *= h_p_sqr;
|
||||
return ( ( sqr_d < h_p_sqr * sqr_i_rad_numer) ||
|
||||
( h_p_sqr * sqr_o_rad_numer < sqr_d)); }
|
||||
|
||||
|
|
@ -623,9 +625,10 @@ private:
|
|||
inner_indices.push_back( 0);
|
||||
outer_indices.push_back( 0);
|
||||
center_coords.resize( d+1);
|
||||
std::copy( da_coord( points[ 0]),
|
||||
da_coord( points[ 0])+d+1,
|
||||
center_coords.begin());
|
||||
std::transform( da_coord( points[ 0]),
|
||||
da_coord( points[ 0])+d+1,
|
||||
center_coords.begin(),
|
||||
NT_converter<RT,ET>());
|
||||
sqr_i_rad_numer = ET( 0);
|
||||
sqr_o_rad_numer = ET( 0);
|
||||
sqr_rad_denom = ET( 1);
|
||||
|
|
@ -748,7 +751,8 @@ is_valid( bool verbose, int level) const
|
|||
// all inner support points on inner boundary?
|
||||
Inner_support_point_iterator i_pt_it = inner_support_points_begin();
|
||||
for ( ; i_pt_it != inner_support_points_end(); ++i_pt_it) {
|
||||
ET h_p_sqr = da_coord (*i_pt_it)[d] * da_coord (*i_pt_it)[d];
|
||||
ET h_p_sqr(da_coord (*i_pt_it)[d]);
|
||||
h_p_sqr *= h_p_sqr;
|
||||
if ( sqr_dist( *i_pt_it) != h_p_sqr * sqr_i_rad_numer)
|
||||
return CGAL::_optimisation_is_valid_fail( verr,
|
||||
"annulus does not have all inner support points on its inner boundary");
|
||||
|
|
@ -757,7 +761,8 @@ is_valid( bool verbose, int level) const
|
|||
// all outer support points on outer boundary?
|
||||
Outer_support_point_iterator o_pt_it = outer_support_points_begin();
|
||||
for ( ; o_pt_it != outer_support_points_end(); ++o_pt_it) {
|
||||
ET h_p_sqr = da_coord (*o_pt_it)[d] * da_coord (*o_pt_it)[d];
|
||||
ET h_p_sqr(da_coord (*o_pt_it)[d]);
|
||||
h_p_sqr *= h_p_sqr;
|
||||
if ( sqr_dist( *o_pt_it) != h_p_sqr * sqr_o_rad_numer)
|
||||
return CGAL::_optimisation_is_valid_fail( verr,
|
||||
"annulus does not have all outer support points on its outer boundary");
|
||||
|
|
|
|||
|
|
@ -360,7 +360,20 @@ class Min_ellipse_2 {
|
|||
|
||||
// default constructor
|
||||
inline
|
||||
Min_ellipse_2( const Traits& traits = Traits())
|
||||
Min_ellipse_2()
|
||||
: n_support_points( 0)
|
||||
{
|
||||
// allocate support points' array
|
||||
support_points = new Point[ 5];
|
||||
|
||||
// initialize ellipse
|
||||
tco.ellipse.set();
|
||||
|
||||
CGAL_optimisation_postcondition( is_empty());
|
||||
}
|
||||
|
||||
inline
|
||||
Min_ellipse_2( const Traits& traits )
|
||||
: tco( traits), n_support_points( 0)
|
||||
{
|
||||
// allocate support points' array
|
||||
|
|
|
|||
|
|
@ -47,11 +47,13 @@
|
|||
|
||||
#if !defined CGAL_CFG_NO_CPP0X_ISFINITE
|
||||
#define CGAL_CORE_finite(x) std::isfinite(x)
|
||||
#define CGAL_CORE_ilogb(x) ilogb(x)
|
||||
#elif defined (_MSC_VER) || defined (__MINGW32__) // add support for MinGW
|
||||
#define CGAL_CORE_finite(x) _finite(x)
|
||||
#define ilogb(x) (int)_logb(x)
|
||||
#define CGAL_CORE_ilogb(x) (int)_logb(x)
|
||||
#else
|
||||
#define CGAL_CORE_finite(x) finite(x)
|
||||
#define CGAL_CORE_ilogb(x) ilogb(x)
|
||||
#endif
|
||||
|
||||
#if defined(sun) || defined(__sun)
|
||||
|
|
@ -126,11 +128,11 @@ public:
|
|||
ilogb(x) is floor(log_2(|x|)).
|
||||
Also, ilogb(0) = -INT_MAX. ilogb(NaN) = ilogb(+/-Inf) = INT_MAX */
|
||||
extLong lMSB() const {
|
||||
return extLong(ilogb(core_abs(fpVal)-maxAbs*ind*CORE_EPS));
|
||||
return extLong(CGAL_CORE_ilogb(core_abs(fpVal)-maxAbs*ind*CORE_EPS));
|
||||
}
|
||||
/// upper bound on MSB
|
||||
extLong uMSB() const {
|
||||
return extLong(ilogb(core_abs(fpVal)+maxAbs*ind*CORE_EPS));
|
||||
return extLong(CGAL_CORE_ilogb(core_abs(fpVal)+maxAbs*ind*CORE_EPS));
|
||||
}
|
||||
//@}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,10 @@ project( CGALimageIO_Examples )
|
|||
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
|
||||
if(POLICY CMP0074)
|
||||
cmake_policy(SET CMP0074 NEW)
|
||||
endif()
|
||||
|
||||
find_package(CGAL QUIET COMPONENTS ImageIO )
|
||||
|
||||
if(CGAL_ImageIO_FOUND)
|
||||
|
|
|
|||
|
|
@ -168,7 +168,7 @@ unsigned int ImageIO_limit_len(size_t to_be_read)
|
|||
CGAL_INLINE_FUNCTION
|
||||
size_t ImageIO_write(const _image *im, const void *buf, size_t len) {
|
||||
size_t to_be_written = len;
|
||||
int l = -1;
|
||||
std::ptrdiff_t l = -1;
|
||||
char *b = (char*)buf;
|
||||
|
||||
switch(im->openMode) {
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@ read_vtk_image_data(vtkImageData* vtk_image)
|
|||
_image* image = ::_initImage();
|
||||
const int* dims = vtk_image->GetDimensions();
|
||||
const double* spacing = vtk_image->GetSpacing();
|
||||
const double* offset = vtk_image->GetOrigin();
|
||||
image->vectMode = VM_SCALAR;
|
||||
image->xdim = dims[0];
|
||||
image->ydim = dims[1];
|
||||
|
|
@ -71,6 +72,9 @@ read_vtk_image_data(vtkImageData* vtk_image)
|
|||
image->vx = spacing[0];
|
||||
image->vy = spacing[1];
|
||||
image->vz = spacing[2];
|
||||
image->tx = offset[0];
|
||||
image->ty = offset[1];
|
||||
image->tz = offset[2];
|
||||
image->endianness = ::_getEndianness();
|
||||
int vtk_type = vtk_image->GetScalarType();
|
||||
if(vtk_type == VTK_SIGNED_CHAR) vtk_type = VTK_CHAR;
|
||||
|
|
|
|||
|
|
@ -6,6 +6,10 @@ project( CGAL_ImageIO_Tests )
|
|||
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
|
||||
if(POLICY CMP0074)
|
||||
cmake_policy(SET CMP0074 NEW)
|
||||
endif()
|
||||
|
||||
find_package(CGAL QUIET COMPONENTS ImageIO )
|
||||
|
||||
if ( CGAL_FOUND )
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ public:
|
|||
CGAL_kernel_assertion((p.a() * center.x() +
|
||||
p.b() * center.y() +
|
||||
p.c() * center.z() +
|
||||
p.d()) == CGAL::ZERO);
|
||||
p.d()) == 0);
|
||||
CGAL_kernel_assertion(squared_r >= FT(0));
|
||||
base = Rep(Sphere_3(center,squared_r), p);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
|
||||
#include <CGAL/determinant.h>
|
||||
#include <CGAL/number_utils.h>
|
||||
#include <boost/type_traits/is_integral.hpp>
|
||||
|
||||
namespace CGAL {
|
||||
|
||||
|
|
@ -284,7 +285,16 @@ line_get_pointC2(const FT &a, const FT &b, const FT &c, int i,
|
|||
{
|
||||
if (CGAL_NTS is_zero(b))
|
||||
{
|
||||
x = (-b-c)/a + i * b;
|
||||
// Laurent Rineau, 2018/12/07: I add this CGAL_assume to calm
|
||||
// down a warning from MSVC 2017:
|
||||
// > include\cgal\constructions\kernel_ftc2.h(287) :
|
||||
// > warning C4723: potential divide by 0
|
||||
// The test `!boost::is_integral<FT>::value` is there to avoid
|
||||
// that `a != 0` is tested on anything but integral types, for
|
||||
// performance reasons.
|
||||
CGAL_assume(!boost::is_integral<FT>::value || a != FT(0));
|
||||
|
||||
x = -c/a;
|
||||
y = 1 - i * a;
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -191,7 +191,7 @@ namespace internal {
|
|||
// the circles intersect
|
||||
|
||||
const std::pair<typename CK::Circular_arc_point_2, unsigned>*
|
||||
result = CGAL::internal::intersect_get< std::pair<typename CK::Circular_arc_point_2, unsigned> >(*it);
|
||||
result = CGAL::Intersections::internal::intersect_get< std::pair<typename CK::Circular_arc_point_2, unsigned> >(*it);
|
||||
if ( result->second == 2 ){ // double solution
|
||||
_begin = result->first;
|
||||
_end = result->first;
|
||||
|
|
@ -202,7 +202,7 @@ namespace internal {
|
|||
_end = result->first;
|
||||
if (!(b_1 && b_2)) {
|
||||
++it;
|
||||
result = CGAL::internal::intersect_get< std::pair<typename CK::Circular_arc_point_2, unsigned> >(*it);
|
||||
result = CGAL::Intersections::internal::intersect_get< std::pair<typename CK::Circular_arc_point_2, unsigned> >(*it);
|
||||
if (!b_1)
|
||||
_begin = result->first;
|
||||
if (!b_2)
|
||||
|
|
|
|||
|
|
@ -92,13 +92,13 @@ public:
|
|||
// the circles intersect
|
||||
|
||||
const std::pair<typename CK::Circular_arc_point_2, unsigned>*
|
||||
result = CGAL::internal::intersect_get<std::pair<typename CK::Circular_arc_point_2, unsigned> >(*it);
|
||||
result = CGAL::Intersections::internal::intersect_get<std::pair<typename CK::Circular_arc_point_2, unsigned> >(*it);
|
||||
// get must have succeeded
|
||||
if ( result->second == 2 ) // double solution
|
||||
return result->first;
|
||||
if (b) return result->first;
|
||||
++it;
|
||||
result = CGAL::internal::intersect_get<std::pair<typename CK::Circular_arc_point_2, unsigned> >(*it);
|
||||
result = CGAL::Intersections::internal::intersect_get<std::pair<typename CK::Circular_arc_point_2, unsigned> >(*it);
|
||||
return result->first;
|
||||
}
|
||||
|
||||
|
|
@ -136,14 +136,14 @@ public:
|
|||
CGAL_kernel_precondition(do_intersect(support, l2));
|
||||
//typedef typename Root_of_2::RT RT_2;
|
||||
typename Intersection_traits<CK, Line_2, Line_2>::result_type
|
||||
v = CGAL::internal::intersection(support, l1, CK());
|
||||
v = CGAL::Intersections::internal::intersection(support, l1, CK());
|
||||
CGAL_assertion(bool(v));
|
||||
|
||||
const Point_2 *pt = CGAL::internal::intersect_get<Point_2>(v);
|
||||
const Point_2 *pt = CGAL::Intersections::internal::intersect_get<Point_2>(v);
|
||||
CGAL_assertion(pt != NULL);
|
||||
_begin = Circular_arc_point_2(*pt);
|
||||
v = CGAL::internal::intersection(support, l2, CK());
|
||||
const Point_2 *pt2 = CGAL::internal::intersect_get<Point_2>(v);
|
||||
v = CGAL::Intersections::internal::intersection(support, l2, CK());
|
||||
const Point_2 *pt2 = CGAL::Intersections::internal::intersect_get<Point_2>(v);
|
||||
CGAL_assertion(pt2 != NULL);
|
||||
_end = Circular_arc_point_2(*pt2);
|
||||
reset_flags();
|
||||
|
|
|
|||
|
|
@ -508,7 +508,7 @@ namespace CircularFunctors {
|
|||
template <class T1, class T2>
|
||||
result_type
|
||||
operator()(const T1& t1, const T2& t2) const
|
||||
{ return internal::do_intersect(t1, t2, CK()); }
|
||||
{ return Intersections::internal::do_intersect(t1, t2, CK()); }
|
||||
};
|
||||
|
||||
template < class CK >
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ circle_intersect( const typename CK::Circle_2 & c1,
|
|||
// the circles intersect
|
||||
|
||||
const std::pair<typename CK::Circular_arc_point_2, unsigned>*
|
||||
result = internal::intersect_get<std::pair<typename CK::Circular_arc_point_2, unsigned> > (*it);
|
||||
result = Intersections::internal::intersect_get<std::pair<typename CK::Circular_arc_point_2, unsigned> > (*it);
|
||||
|
||||
if ( result->second == 2 ) // double solution
|
||||
return result->first;
|
||||
|
|
@ -63,7 +63,7 @@ circle_intersect( const typename CK::Circle_2 & c1,
|
|||
return result->first;
|
||||
|
||||
++it;
|
||||
result = internal::intersect_get<std::pair<typename CK::Circular_arc_point_2, unsigned> > (*it);
|
||||
result = Intersections::internal::intersect_get<std::pair<typename CK::Circular_arc_point_2, unsigned> > (*it);
|
||||
|
||||
return result->first;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -488,10 +488,10 @@ namespace CircularFunctors {
|
|||
}
|
||||
|
||||
typename Intersection_traits<CK, typename CK::Line_2, typename CK::Line_2>::result_type
|
||||
v = CGAL::internal::intersection(a1.supporting_line(), a2.supporting_line(), CK());
|
||||
v = CGAL::Intersections::internal::intersection(a1.supporting_line(), a2.supporting_line(), CK());
|
||||
if(!v) return res;
|
||||
|
||||
const Point_2 *pt = CGAL::internal::intersect_get<Point_2>(v);
|
||||
const Point_2 *pt = CGAL::Intersections::internal::intersect_get<Point_2>(v);
|
||||
if(pt == NULL) return res;
|
||||
Circular_arc_point_2 intersect_point = Circular_arc_point_2(*pt);
|
||||
// (Root_for_circles_2_2(Root_of_2(pt->x()),Root_of_2(pt->y())));
|
||||
|
|
|
|||
|
|
@ -48,7 +48,8 @@ intersection(const A <K> &c1, const B <K> &c2, OutputIterator res) \
|
|||
{ \
|
||||
return typename K::Intersect_2()(c1, c2, res); \
|
||||
} \
|
||||
namespace internal { \
|
||||
namespace Intersections { \
|
||||
namespace internal { \
|
||||
template <class K> \
|
||||
inline \
|
||||
bool \
|
||||
|
|
@ -59,6 +60,7 @@ namespace internal { \
|
|||
return !res.empty(); \
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
template <class K> \
|
||||
inline \
|
||||
bool \
|
||||
|
|
|
|||
|
|
@ -30,7 +30,6 @@
|
|||
#include <CGAL/Algebraic_kernel_for_circles_2_2.h>
|
||||
#include <CGAL/MP_Float.h>
|
||||
#include <CGAL/Quotient.h>
|
||||
#include <CGAL/Circular_kernel_2/function_objects_polynomial_circular.h>
|
||||
#include <CGAL/Circular_kernel_2/Circular_arc_2.h>
|
||||
#include <CGAL/Circular_kernel_2/Line_arc_2.h>
|
||||
#include <CGAL/Exact_circular_kernel_2.h>
|
||||
|
|
|
|||
|
|
@ -6,6 +6,10 @@ if(NOT POLICY CMP0070 AND POLICY CMP0053)
|
|||
cmake_policy(SET CMP0053 OLD)
|
||||
endif()
|
||||
|
||||
if(POLICY CMP0071)
|
||||
cmake_policy(SET CMP0071 NEW)
|
||||
endif()
|
||||
|
||||
find_package(CGAL COMPONENTS Qt5)
|
||||
|
||||
find_package(Qt5 QUIET COMPONENTS Xml Script OpenGL)
|
||||
|
|
|
|||
|
|
@ -282,7 +282,15 @@ namespace CGAL {
|
|||
const double dz = z2-z1;
|
||||
const double d_sq = dx*dx + dy*dy + dz*dz;
|
||||
const double r_sq = to_double(squared_radius());
|
||||
const double ap_ang = 2.0 * std::asin(0.5 * std::sqrt(d_sq / r_sq));
|
||||
const double s = 0.5 * std::sqrt(d_sq / r_sq);
|
||||
double ap_ang;
|
||||
if(std::abs(s)<=1) {
|
||||
ap_ang = 2.0 * std::asin(s);
|
||||
} else {
|
||||
// We only allow a small rounding error
|
||||
CGAL_assertion(std::abs(s)<=1.0001);
|
||||
ap_ang = (s < 0) ? -CGAL_PI : CGAL_PI;
|
||||
}
|
||||
if(sign_cross_product() == NEGATIVE) return 2.0 * CGAL_PI - ap_ang;
|
||||
else return ap_ang;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ struct Trait_for_cmp_tgt_theta_0{
|
|||
typename SK::FT
|
||||
unsigned_tkz_coeff_normal( const typename SK::Point_3& C,const typename SK::FT& gamma_k) const
|
||||
{
|
||||
return - CGAL_NTS sign(gamma_k)*C.y();
|
||||
return - (int)CGAL_NTS sign(gamma_k)*C.y();
|
||||
}
|
||||
|
||||
Tk_type
|
||||
|
|
|
|||
|
|
@ -130,8 +130,8 @@ namespace CGAL {
|
|||
intersect_3<SK>(circle,plane,std::back_inserter(inters));
|
||||
CGAL_kernel_precondition(inters.size()==2);
|
||||
const std::pair<typename SK::Circular_arc_point_3,unsigned>* pt[2]={NULL,NULL};
|
||||
pt[0]=CGAL::internal::intersect_get<std::pair<typename SK::Circular_arc_point_3,unsigned> >(inters[0]);
|
||||
pt[1]=CGAL::internal::intersect_get<std::pair<typename SK::Circular_arc_point_3,unsigned> >(inters[1]);
|
||||
pt[0]=CGAL::Intersections::internal::intersect_get<std::pair<typename SK::Circular_arc_point_3,unsigned> >(inters[0]);
|
||||
pt[1]=CGAL::Intersections::internal::intersect_get<std::pair<typename SK::Circular_arc_point_3,unsigned> >(inters[1]);
|
||||
CGAL_kernel_precondition(pt[0]!=NULL);
|
||||
CGAL_kernel_precondition(pt[1]!=NULL);
|
||||
|
||||
|
|
|
|||
|
|
@ -103,12 +103,12 @@ namespace CGAL {
|
|||
std::back_inserter(solutions) );
|
||||
if(solutions.size() == 0) return res;
|
||||
if(solutions.size() == 1) {
|
||||
const Solution& sol=*CGAL::internal::intersect_get<Solution>(solutions[0]);
|
||||
const Solution& sol=*CGAL::Intersections::internal::intersect_get<Solution>(solutions[0]);
|
||||
if(SK().has_on_3_object()(ca,sol.first,true))
|
||||
*res++ = solutions[0];
|
||||
} else {
|
||||
const Solution& sol1=*CGAL::internal::intersect_get<Solution>(solutions[0]);
|
||||
const Solution& sol2=*CGAL::internal::intersect_get<Solution>(solutions[1]);
|
||||
const Solution& sol1=*CGAL::Intersections::internal::intersect_get<Solution>(solutions[0]);
|
||||
const Solution& sol2=*CGAL::Intersections::internal::intersect_get<Solution>(solutions[1]);
|
||||
if(SK().has_on_3_object()(ca,sol1.first,true))
|
||||
*res++ = solutions[0];
|
||||
if(SK().has_on_3_object()(ca,sol2.first,true))
|
||||
|
|
@ -140,12 +140,12 @@ namespace CGAL {
|
|||
std::back_inserter(solutions) );
|
||||
if(solutions.size() == 0) return res;
|
||||
if(solutions.size() == 1) {
|
||||
const Solution& sol=*CGAL::internal::intersect_get<Solution>(solutions[0]);
|
||||
const Solution& sol=*CGAL::Intersections::internal::intersect_get<Solution>(solutions[0]);
|
||||
if(SK().has_on_3_object()(ca,sol.first,true))
|
||||
*res++ = solutions[0];
|
||||
} else {
|
||||
const Solution& sol1=*CGAL::internal::intersect_get<Solution>(solutions[0]);
|
||||
const Solution& sol2=*CGAL::internal::intersect_get<Solution>(solutions[1]);
|
||||
const Solution& sol1=*CGAL::Intersections::internal::intersect_get<Solution>(solutions[0]);
|
||||
const Solution& sol2=*CGAL::Intersections::internal::intersect_get<Solution>(solutions[1]);
|
||||
if(SK().has_on_3_object()(ca,sol1.first,true))
|
||||
*res++ = solutions[0];
|
||||
if(SK().has_on_3_object()(ca,sol2.first,true))
|
||||
|
|
@ -178,12 +178,12 @@ namespace CGAL {
|
|||
std::back_inserter(solutions) );
|
||||
if(solutions.size() == 0) return res;
|
||||
if(solutions.size() == 1) {
|
||||
const Solution& sol=*CGAL::internal::intersect_get<Solution>(solutions[0]);
|
||||
const Solution& sol=*CGAL::Intersections::internal::intersect_get<Solution>(solutions[0]);
|
||||
if(SK().has_on_3_object()(c,sol.first,true))
|
||||
*res++ = solutions[0];
|
||||
} else {
|
||||
const Solution& sol1=*CGAL::internal::intersect_get<Solution>(solutions[0]);
|
||||
const Solution& sol2=*CGAL::internal::intersect_get<Solution>(solutions[1]);
|
||||
const Solution& sol1=*CGAL::Intersections::internal::intersect_get<Solution>(solutions[0]);
|
||||
const Solution& sol2=*CGAL::Intersections::internal::intersect_get<Solution>(solutions[1]);
|
||||
if(SK().has_on_3_object()(c,sol1.first,true))
|
||||
*res++ = solutions[0];
|
||||
if(SK().has_on_3_object()(c,sol2.first,true))
|
||||
|
|
@ -215,12 +215,12 @@ namespace CGAL {
|
|||
std::back_inserter(solutions) );
|
||||
if(solutions.size() == 0) return res;
|
||||
if(solutions.size() == 1) {
|
||||
const Solution& sol=*CGAL::internal::intersect_get<Solution>(solutions[0]);
|
||||
const Solution& sol=*CGAL::Intersections::internal::intersect_get<Solution>(solutions[0]);
|
||||
if(SK().has_on_3_object()(ca,sol.first,true))
|
||||
*res++ = CGAL::internal::sk3_intersection_return<result_type>(sol);
|
||||
} else {
|
||||
const Solution& sol1=*CGAL::internal::intersect_get<Solution>(solutions[0]);
|
||||
const Solution& sol2=*CGAL::internal::intersect_get<Solution>(solutions[1]);
|
||||
const Solution& sol1=*CGAL::Intersections::internal::intersect_get<Solution>(solutions[0]);
|
||||
const Solution& sol2=*CGAL::Intersections::internal::intersect_get<Solution>(solutions[1]);
|
||||
if(SK().has_on_3_object()(ca,sol1.first,true))
|
||||
*res++ = CGAL::internal::sk3_intersection_return<result_type>(sol1);
|
||||
if(SK().has_on_3_object()(ca,sol2.first,true))
|
||||
|
|
@ -247,13 +247,13 @@ namespace CGAL {
|
|||
std::back_inserter(solutions) );
|
||||
if(solutions.size() == 0) return res;
|
||||
if(solutions.size() == 1) {
|
||||
const Solution& sol=*CGAL::internal::intersect_get<Solution>(solutions[0]);
|
||||
const Solution& sol=*CGAL::Intersections::internal::intersect_get<Solution>(solutions[0]);
|
||||
if(SK().has_on_3_object()(ca,sol.first,true) &&
|
||||
SK().has_on_3_object()(la,sol.first,true))
|
||||
*res++ = solutions[0];
|
||||
} else {
|
||||
const Solution& sol1=*CGAL::internal::intersect_get<Solution>(solutions[0]);
|
||||
const Solution& sol2=*CGAL::internal::intersect_get<Solution>(solutions[1]);
|
||||
const Solution& sol1=*CGAL::Intersections::internal::intersect_get<Solution>(solutions[0]);
|
||||
const Solution& sol2=*CGAL::Intersections::internal::intersect_get<Solution>(solutions[1]);
|
||||
if(SK().has_on_3_object()(ca,sol1.first,true) &&
|
||||
SK().has_on_3_object()(la,sol1.first,true))
|
||||
*res++ = solutions[0];
|
||||
|
|
@ -359,13 +359,13 @@ namespace CGAL {
|
|||
std::back_inserter(solutions) );
|
||||
if(solutions.size() == 0) return res;
|
||||
if(solutions.size() == 1) {
|
||||
const Solution& sol=*CGAL::internal::intersect_get<Solution>(solutions[0]);
|
||||
const Solution& sol=*CGAL::Intersections::internal::intersect_get<Solution>(solutions[0]);
|
||||
if(SK().has_on_3_object()(a1,sol.first,true) &&
|
||||
SK().has_on_3_object()(a2,sol.first,true))
|
||||
*res++ = solutions[0];
|
||||
} else {
|
||||
const Solution& sol1=*CGAL::internal::intersect_get<Solution>(solutions[0]);
|
||||
const Solution& sol2=*CGAL::internal::intersect_get<Solution>(solutions[1]);
|
||||
const Solution& sol1=*CGAL::Intersections::internal::intersect_get<Solution>(solutions[0]);
|
||||
const Solution& sol2=*CGAL::Intersections::internal::intersect_get<Solution>(solutions[1]);
|
||||
if(SK().has_on_3_object()(a1,sol1.first,true) &&
|
||||
SK().has_on_3_object()(a2,sol1.first,true))
|
||||
*res++ = solutions[0];
|
||||
|
|
@ -481,8 +481,8 @@ namespace CGAL {
|
|||
//one endpoint is extremal: just split the arc
|
||||
if (nb_extrem==1){
|
||||
const std::pair<typename SK::Circular_arc_point_3,unsigned>* pt[2]={NULL,NULL};
|
||||
pt[0]=CGAL::internal::intersect_get<std::pair<typename SK::Circular_arc_point_3,unsigned> >(inters[0]);
|
||||
pt[1]=CGAL::internal::intersect_get<std::pair<typename SK::Circular_arc_point_3,unsigned> >(inters[1]);
|
||||
pt[0]=CGAL::Intersections::internal::intersect_get<std::pair<typename SK::Circular_arc_point_3,unsigned> >(inters[0]);
|
||||
pt[1]=CGAL::Intersections::internal::intersect_get<std::pair<typename SK::Circular_arc_point_3,unsigned> >(inters[1]);
|
||||
CGAL_kernel_precondition(pt[0]!=NULL);
|
||||
CGAL_kernel_precondition(pt[1]!=NULL);
|
||||
const typename SK::Circular_arc_point_3& midpt=(arc.source()==pt[0]->first || arc.target()==pt[0]->first)?pt[1]->first:pt[0]->first;
|
||||
|
|
@ -496,7 +496,7 @@ namespace CGAL {
|
|||
//only one intersection points
|
||||
if (inters.size()==1){
|
||||
const std::pair<typename SK::Circular_arc_point_3,unsigned>* midpt=NULL;
|
||||
midpt=CGAL::internal::intersect_get<std::pair<typename SK::Circular_arc_point_3,unsigned> >(inters[0]);
|
||||
midpt=CGAL::Intersections::internal::intersect_get<std::pair<typename SK::Circular_arc_point_3,unsigned> >(inters[0]);
|
||||
CGAL_kernel_precondition(midpt!=NULL);
|
||||
*out_it++=typename SK::Circular_arc_3(arc.supporting_circle(),arc.source(),midpt->first);
|
||||
*out_it++=typename SK::Circular_arc_3(arc.supporting_circle(),midpt->first,arc.target());
|
||||
|
|
@ -505,8 +505,8 @@ namespace CGAL {
|
|||
|
||||
//three arcs are defined by two intersection points
|
||||
const std::pair<typename SK::Circular_arc_point_3,unsigned>* pt[2]={NULL,NULL};
|
||||
pt[0]=CGAL::internal::intersect_get<std::pair<typename SK::Circular_arc_point_3,unsigned> >(inters[0]);
|
||||
pt[1]=CGAL::internal::intersect_get<std::pair<typename SK::Circular_arc_point_3,unsigned> >(inters[1]);
|
||||
pt[0]=CGAL::Intersections::internal::intersect_get<std::pair<typename SK::Circular_arc_point_3,unsigned> >(inters[0]);
|
||||
pt[1]=CGAL::Intersections::internal::intersect_get<std::pair<typename SK::Circular_arc_point_3,unsigned> >(inters[1]);
|
||||
CGAL_kernel_precondition(pt[0]!=NULL);
|
||||
CGAL_kernel_precondition(pt[1]!=NULL);
|
||||
|
||||
|
|
@ -590,16 +590,16 @@ namespace CGAL {
|
|||
CGAL_kernel_precondition(!inters.empty());
|
||||
if (inters.size()==1){
|
||||
const typename SK::Circular_arc_point_3& pt=
|
||||
CGAL::internal::intersect_get<std::pair<typename SK::Circular_arc_point_3,unsigned> >(inters[0])->first;
|
||||
CGAL::Intersections::internal::intersect_get<std::pair<typename SK::Circular_arc_point_3,unsigned> >(inters[0])->first;
|
||||
return pt;
|
||||
}
|
||||
|
||||
CGAL_kernel_precondition(classify_circle_3<SK>(arc.supporting_circle(),sphere)!=NORMAL);
|
||||
|
||||
const typename SK::Circular_arc_point_3& pts1 =
|
||||
CGAL::internal::intersect_get<std::pair<typename SK::Circular_arc_point_3,unsigned> >(inters[0])->first;
|
||||
CGAL::Intersections::internal::intersect_get<std::pair<typename SK::Circular_arc_point_3,unsigned> >(inters[0])->first;
|
||||
const typename SK::Circular_arc_point_3& pts2 =
|
||||
CGAL::internal::intersect_get<std::pair<typename SK::Circular_arc_point_3,unsigned> >(inters[1])->first;
|
||||
CGAL::Intersections::internal::intersect_get<std::pair<typename SK::Circular_arc_point_3,unsigned> >(inters[1])->first;
|
||||
|
||||
|
||||
//either a polar (1 pole + 1 pt) or a threaded circle (2 pts with theta-coord = +/- pi)
|
||||
|
|
|
|||
|
|
@ -101,12 +101,12 @@ namespace CGAL {
|
|||
if(!o)
|
||||
return res;
|
||||
|
||||
if(const Point_3* inters_p = CGAL::internal::intersect_get<Point_3>(o)) {
|
||||
if(const Point_3* inters_p = CGAL::Intersections::internal::intersect_get<Point_3>(o)) {
|
||||
Circular_arc_point_3 p = *inters_p;
|
||||
if(!SK().has_on_3_object()(l1,p,true)) return res;
|
||||
if(!SK().has_on_3_object()(l2,p,true)) return res;
|
||||
*res++ = CGAL::internal::sk3_intersection_return<result_type>(std::make_pair(p,1u));
|
||||
} else if( CGAL::internal::intersect_get<Line_3>(o) ) {
|
||||
} else if( CGAL::Intersections::internal::intersect_get<Line_3>(o) ) {
|
||||
if(SK().compare_xyz_3_object()(l1.lower_xyz_extremity(),
|
||||
l2.lower_xyz_extremity()) < 0) {
|
||||
int comparison =
|
||||
|
|
@ -167,9 +167,9 @@ namespace CGAL {
|
|||
if(!o)
|
||||
return res;
|
||||
|
||||
if(const Line_3* inters_l = CGAL::internal::intersect_get<Line_3>(o)) {
|
||||
if(const Line_3* inters_l = CGAL::Intersections::internal::intersect_get<Line_3>(o)) {
|
||||
*res++ = CGAL::internal::sk3_intersection_return<result_type>(la);
|
||||
} else if(const Point_3* inters_p = CGAL::internal::intersect_get<Point_3>(o)) {
|
||||
} else if(const Point_3* inters_p = CGAL::Intersections::internal::intersect_get<Point_3>(o)) {
|
||||
Circular_arc_point_3 p = *inters_p;
|
||||
if(!SK().has_on_3_object()(la,p,true)) return res;
|
||||
*res++ = CGAL::internal::sk3_intersection_return<result_type>(std::make_pair(p,1u));
|
||||
|
|
@ -195,12 +195,12 @@ namespace CGAL {
|
|||
std::back_inserter(solutions) );
|
||||
if(solutions.size() == 0) return res;
|
||||
if(solutions.size() == 1) {
|
||||
const Solution* sol = CGAL::internal::intersect_get<Solution>(solutions[0]);
|
||||
const Solution* sol = CGAL::Intersections::internal::intersect_get<Solution>(solutions[0]);
|
||||
if(SK().has_on_3_object()(l,(*sol).first,true))
|
||||
*res++ = solutions[0];
|
||||
} else {
|
||||
const Solution* sol1 = CGAL::internal::intersect_get<Solution>(solutions[0]);
|
||||
const Solution* sol2 = CGAL::internal::intersect_get<Solution>(solutions[1]);
|
||||
const Solution* sol1 = CGAL::Intersections::internal::intersect_get<Solution>(solutions[0]);
|
||||
const Solution* sol2 = CGAL::Intersections::internal::intersect_get<Solution>(solutions[1]);
|
||||
|
||||
if(SK().has_on_3_object()(l,(*sol1).first,true))
|
||||
*res++ = solutions[0];
|
||||
|
|
@ -226,12 +226,12 @@ namespace CGAL {
|
|||
std::back_inserter(solutions) );
|
||||
if(solutions.size() == 0) return res;
|
||||
if(solutions.size() == 1) {
|
||||
const Solution* sol = CGAL::internal::intersect_get<Solution>(solutions[0]);
|
||||
const Solution* sol = CGAL::Intersections::internal::intersect_get<Solution>(solutions[0]);
|
||||
if(SK().has_on_3_object()(l,(*sol).first,true))
|
||||
*res++ = solutions[0];
|
||||
} else {
|
||||
const Solution* sol1 = CGAL::internal::intersect_get<Solution>(solutions[0]);
|
||||
const Solution* sol2 = CGAL::internal::intersect_get<Solution>(solutions[1]);
|
||||
const Solution* sol1 = CGAL::Intersections::internal::intersect_get<Solution>(solutions[0]);
|
||||
const Solution* sol2 = CGAL::Intersections::internal::intersect_get<Solution>(solutions[1]);
|
||||
if(SK().has_on_3_object()(l,(*sol1).first,true))
|
||||
*res++ = solutions[0];
|
||||
if(SK().has_on_3_object()(l,(*sol2).first,true))
|
||||
|
|
@ -257,7 +257,7 @@ namespace CGAL {
|
|||
|
||||
if(!o)
|
||||
return res;
|
||||
if((sol = CGAL::internal::intersect_get<Point_3>(o))) {
|
||||
if((sol = CGAL::Intersections::internal::intersect_get<Point_3>(o))) {
|
||||
if(!SK().has_on_3_object()(l,*sol)) return res;
|
||||
Circular_arc_point_3 point = sol;
|
||||
*res++ = result_type(std::make_pair(point,1u));
|
||||
|
|
|
|||
|
|
@ -336,7 +336,7 @@ namespace CGAL {
|
|||
typename Intersection_traits<SK, Sphere_3, Sphere_3>::result_type v =
|
||||
SK().intersect_3_object()(s1, s2);
|
||||
if(!v) return res;
|
||||
if(const Point_3* p = CGAL::internal::intersect_get<Point_3>(v)) {
|
||||
if(const Point_3* p = CGAL::Intersections::internal::intersect_get<Point_3>(v)) {
|
||||
if(SK().has_on_3_object()(s3, *p)) {
|
||||
#if CGAL_INTERSECTION_VERSION < 2
|
||||
*res++ = make_object(std::make_pair(Circular_arc_point_3(*p),2u));
|
||||
|
|
@ -346,7 +346,7 @@ namespace CGAL {
|
|||
}
|
||||
return res;
|
||||
}
|
||||
if(const Circle_3* c = CGAL::internal::intersect_get<Circle_3>(v)) {
|
||||
if(const Circle_3* c = CGAL::Intersections::internal::intersect_get<Circle_3>(v)) {
|
||||
if(SK().has_on_3_object()(s3, *c)) {
|
||||
#if CGAL_INTERSECTION_VERSION < 2
|
||||
*res++ = make_object(*c);
|
||||
|
|
|
|||
|
|
@ -38,6 +38,14 @@
|
|||
|
||||
namespace CGAL {
|
||||
|
||||
#define CGAL_SPHERICAL_KERNEL_MACRO_GLOBAL_FUNCTION_JUST_INTERSECTION_2_(A,B) \
|
||||
template < class OutputIterator, class K > \
|
||||
OutputIterator \
|
||||
intersection(const A <K> &c1, const B <K> &c2, OutputIterator res) \
|
||||
{ \
|
||||
return typename K::Intersect_3()(c1, c2, res); \
|
||||
}
|
||||
|
||||
#define CGAL_SPHERICAL_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_2_(A,B) \
|
||||
template < class OutputIterator, class K > \
|
||||
OutputIterator \
|
||||
|
|
@ -68,8 +76,8 @@ do_intersect(const A <K> &c1, const B <K> &c2, const C <K> &c3) \
|
|||
return typename K::Do_intersect_3()(c1, c2, c3); \
|
||||
}
|
||||
|
||||
CGAL_SPHERICAL_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_2_(Sphere_3, Line_3)
|
||||
CGAL_SPHERICAL_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_2_(Line_3, Sphere_3)
|
||||
CGAL_SPHERICAL_KERNEL_MACRO_GLOBAL_FUNCTION_JUST_INTERSECTION_2_(Sphere_3, Line_3)
|
||||
CGAL_SPHERICAL_KERNEL_MACRO_GLOBAL_FUNCTION_JUST_INTERSECTION_2_(Line_3, Sphere_3)
|
||||
CGAL_SPHERICAL_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_3_(Sphere_3, Sphere_3, Sphere_3)
|
||||
CGAL_SPHERICAL_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_3_(Sphere_3, Sphere_3, Plane_3)
|
||||
CGAL_SPHERICAL_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_3_(Plane_3, Sphere_3, Sphere_3)
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ void _test_spherical_kernel_compute(SK sk)
|
|||
cp[i] = theConstruct_circular_arc_point_3(rt[i]);
|
||||
}
|
||||
|
||||
const double pi = std::acos(-1.);
|
||||
const double pi = CGAL_PI;
|
||||
|
||||
const Polynomials_for_circle_3 pcc_test =
|
||||
std::make_pair(Polynomial_for_spheres_2_3(0,0,0,1),
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*!
|
||||
\defgroup PkgClassificationRef Classification Reference
|
||||
/// \defgroup PkgClassificationRef Classification Reference
|
||||
|
||||
/*!
|
||||
\defgroup PkgClassificationConcepts Concepts
|
||||
\ingroup PkgClassificationRef
|
||||
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@
|
|||
# pragma warning(disable:4267)
|
||||
# pragma warning(disable:4275)
|
||||
# pragma warning(disable:4251)
|
||||
# pragma warning(disable:4996)
|
||||
#endif
|
||||
|
||||
#include <CGAL/Classification/internal/auxiliary/random-forest/node-gini.hpp>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,3 @@
|
|||
// PRETTY PACKAGE NAME should equal the project title in Doxyfile.in
|
||||
|
||||
/// \defgroup PkgConeSpanners2Ref Cone-Based Spanners Reference
|
||||
|
||||
/*!
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
namespace CGAL {
|
||||
|
||||
/*
|
||||
#include <CGAL/Segment_2_Segment_2_intersection.h>
|
||||
#include <CGAL/Intersections_2/Segment_2_Segment_2.h>
|
||||
template <class ForwardIterator, class OutputIterator, class R>
|
||||
OutputIterator
|
||||
si_brute_force(ForwardIterator first, ForwardIterator last,
|
||||
|
|
|
|||
|
|
@ -14,3 +14,4 @@ Number_types
|
|||
Profiling_tools
|
||||
STL_Extension
|
||||
Stream_support
|
||||
Distance_3
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ function(configure_doxygen_package CGAL_PACKAGE_NAME)
|
|||
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "STRIP_FROM_INC_PATH = ${CGAL_PACKAGE_DOC_DIR}/\n")
|
||||
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "STRIP_FROM_INC_PATH += ${CGAL_PACKAGE_DIR}/include/\n")
|
||||
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "ALIASES += \"cgalPkgDescriptionBegin{2}=\\details \"\n")
|
||||
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "ALIASES += \"cgalPkgManuals{2}=<BR>\"\n")
|
||||
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "ALIASES += \"cgalPkgManuals{2}=<div class=\\\"PkgManuals\\\"></div>\"\n")
|
||||
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "INPUT = ${CGAL_PACKAGE_DOC_DIR}\n")
|
||||
if(NOT EXISTS "${CGAL_PACKAGE_DOC_DIR}/CGAL")
|
||||
# This package has in-source documentation.
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ Generator
|
|||
Geomview
|
||||
GraphicsView
|
||||
HalfedgeDS
|
||||
Heat_method_3
|
||||
BGL
|
||||
Combinatorial_map
|
||||
Generalized_map
|
||||
|
|
|
|||
|
|
@ -125,7 +125,7 @@ h1 {
|
|||
\package_listing{Point_set_shape_detection_3}
|
||||
\package_listing{Stream_lines_2}
|
||||
\package_listing{Classification}
|
||||
|
||||
\package_listing{Heat_method_3}
|
||||
|
||||
\section PartSearchStructures Spatial Searching and Sorting
|
||||
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@
|
|||
,howpublished = {American National Standards Institute, 11 West 42nd
|
||||
Street, New York 10036}
|
||||
,year = 1998
|
||||
,url = "http://webstore.ansi.org/"
|
||||
,url = "https://webstore.ansi.org/"
|
||||
,update = "04.03 kettner, 01.06 hoffmann"
|
||||
}
|
||||
|
||||
|
|
@ -294,8 +294,8 @@ Boissonnat}
|
|||
,author = {Gavin Bell and Anthony Parisi and Mark Pesce}
|
||||
,title = {VRML The Virtual Reality Modeling Language:
|
||||
Version 1.0 Specification}
|
||||
,howpublished = {\url{http://www.web3d.org/x3d/specifications/vrml/VRML1.0/index.html}}
|
||||
,url = "http://www.web3d.org/x3d/specifications/vrml/VRML1.0/index.html"
|
||||
,howpublished = {\url{http://www.web3d.org/standards}}
|
||||
,url = "http://www.web3d.org/standards"
|
||||
,month = {May 26}
|
||||
,year = 1995
|
||||
,update = "13.04 lrineau"
|
||||
|
|
@ -339,7 +339,7 @@ Boissonnat}
|
|||
,school = "Universit\'e de {Nice-Sophia Antipolis}"
|
||||
,address = "France"
|
||||
,year = 2010
|
||||
,url = "http://tel.archives-ouvertes.fr/tel-00552215/"
|
||||
,url = "https://tel.archives-ouvertes.fr/tel-00552215/"
|
||||
}
|
||||
|
||||
@article{cgal:cc-rgbss-78
|
||||
|
|
@ -462,7 +462,7 @@ note="Conference version: Symp. on Geometry Processing 2003"
|
|||
, year = 2009
|
||||
, volume = 5757
|
||||
, pages = "37--48"
|
||||
, note = "Full version available as INRIA Research Report 6823 \url{http://hal.inria.fr/inria-00356871}"
|
||||
, note = "Full version available as INRIA Research Report 6823 \url{https://hal.inria.fr/inria-00356871}"
|
||||
}
|
||||
|
||||
@inproceedings{cgal:pt-rs-14,
|
||||
|
|
@ -489,6 +489,30 @@ note="Conference version: Symp. on Geometry Processing 2003"
|
|||
,update = "97.08 kettner"
|
||||
}
|
||||
|
||||
|
||||
@article{cgal:cww-ghnac-13,
|
||||
author = {Crane, Keenan and Weischedel, Clarisse and Wardetzky, Max},
|
||||
title = {Geodesics in Heat: A New Approach to Computing Distance Based on Heat Flow},
|
||||
journal = {ACM Trans. Graph.},
|
||||
issue_date = {September 2013},
|
||||
volume = {32},
|
||||
number = {5},
|
||||
month = oct,
|
||||
year = {2013},
|
||||
issn = {0730-0301},
|
||||
pages = {152:1--152:11},
|
||||
articleno = {152},
|
||||
numpages = {11},
|
||||
url = {http://doi.acm.org/10.1145/2516971.2516977},
|
||||
doi = {10.1145/2516971.2516977},
|
||||
acmid = {2516977},
|
||||
publisher = {ACM},
|
||||
address = {New York, NY, USA},
|
||||
keywords = {Digital geometry processing, discrete differential geometry, distance transform, geodesic distance, heat kernel},
|
||||
}
|
||||
|
||||
|
||||
|
||||
@PhdThesis{ cgal:d-ccccg-10,
|
||||
author = {Damiand, G.},
|
||||
title = {Contributions aux Cartes Combinatoires et Cartes G\'en\'eralis\'ees : Simplification, Mod\`eles, Invariants Topologiques et Applications},
|
||||
|
|
@ -621,7 +645,7 @@ Mourrain and Monique Teillaud"
|
|||
, nickname = "ALENEX '03"
|
||||
, year = 2003
|
||||
, pages = "37--44"
|
||||
, url = "http://hal.inria.fr/inria-00344517/"
|
||||
, url = "https://hal.inria.fr/inria-00344517/"
|
||||
}
|
||||
|
||||
@article{ cgal:dpt-wt-02
|
||||
|
|
@ -640,7 +664,7 @@ Teillaud"
|
|||
, author = "Olivier Devillers and Monique Teillaud"
|
||||
, title = "Perturbations and Vertex Removal in a {3D Delaunay} Triangulation"
|
||||
, booktitle = "Proc. 14th ACM-SIAM Sympos. Discrete Algorithms (SODA)"
|
||||
, url = "http://hal.inria.fr/inria-00166710/"
|
||||
, url = "https://hal.inria.fr/inria-00166710/"
|
||||
, year = 2003
|
||||
, pages = "313-319"
|
||||
}
|
||||
|
|
@ -740,6 +764,23 @@ Teillaud"
|
|||
,update = "95.09 mitchell"
|
||||
}
|
||||
|
||||
@inproceedings{cgal:fsbs-acidt-06,
|
||||
author = {Fisher, Matthew and Springborn, Boris and Bobenko, Alexander I. and Schroder, Peter},
|
||||
title = {An Algorithm for the Construction of Intrinsic Delaunay Triangulations with Applications to Digital Geometry Processing},
|
||||
booktitle = {ACM SIGGRAPH 2006 Courses},
|
||||
series = {SIGGRAPH '06},
|
||||
year = {2006},
|
||||
isbn = {1-59593-364-6},
|
||||
location = {Boston, Massachusetts},
|
||||
pages = {69--74},
|
||||
numpages = {6},
|
||||
url = {http://doi.acm.org/10.1145/1185657.1185668},
|
||||
doi = {10.1145/1185657.1185668},
|
||||
acmid = {1185668},
|
||||
publisher = {ACM},
|
||||
address = {New York, NY, USA},
|
||||
}
|
||||
|
||||
@InCollection{ cgal:fh-survey-05,
|
||||
author = {M. S. Floater and K. Hormann},
|
||||
title = {Surface Parameterization: a Tutorial and Survey},
|
||||
|
|
@ -1133,7 +1174,7 @@ Teillaud"
|
|||
isbn = {9781848002784},
|
||||
edition = {3rd},
|
||||
publisher = {Springer Publishing Company, Incorporated}
|
||||
}
|
||||
}
|
||||
|
||||
@inproceedings { cgal:l-nmdgp-05,
|
||||
AUTHOR = {Bruno Levy},
|
||||
|
|
@ -1539,7 +1580,7 @@ ABSTRACT = {We present the first complete, exact and efficient C++ implementatio
|
|||
,title = {The {LEDA} {U}ser {M}anual}
|
||||
,organization = {Algorithmic Solutions}
|
||||
,address = {66123 Saarbr\"ucken, Germany}
|
||||
,url = {http://www.algorithmic-solutions.info/leda_manual/manual.html}
|
||||
,url = {http://www.algorithmic-solutions.info/leda_manual/MANUAL.html}
|
||||
}
|
||||
|
||||
@article{ cgal:mog-vbcfe-11
|
||||
|
|
@ -1597,7 +1638,7 @@ ABSTRACT = {We present the first complete, exact and efficient C++ implementatio
|
|||
title = {{MPFR} - The Multiple Precision Floating-Point Reliable
|
||||
Library},
|
||||
howpublished = {The {MPFR} Team},
|
||||
url = {http://mpfr.org},
|
||||
url = {https://mpfr.org},
|
||||
update = "09.11 penarand"
|
||||
}
|
||||
|
||||
|
|
@ -1778,7 +1819,6 @@ ABSTRACT = {We present the first complete, exact and efficient C++ implementatio
|
|||
key = {RS},
|
||||
title = {{RS - A} Software for real solving of algebraic systems},
|
||||
howpublished = {{R}ouillier, {F}abrice},
|
||||
url = {http://www.loria.fr/equipes/vegas/rs/},
|
||||
update = "09.11 penarand"
|
||||
}
|
||||
|
||||
|
|
@ -1912,7 +1952,6 @@ ABSTRACT = {We present the first complete, exact and efficient C++ implementatio
|
|||
@misc{ cgal:sgcsi-stlpg-97
|
||||
,author = {{Silicon Graphics Computer Systems{,} Inc.}}
|
||||
,title = {Standard Template Library Programmer's Guide}
|
||||
,url = {http://www.sgi.com/Technology/STL/}
|
||||
,year = 1997
|
||||
,annote = {Web reference to the STL from SGI.
|
||||
recommended C++ and STL reference material.}
|
||||
|
|
@ -1954,7 +1993,7 @@ ABSTRACT = {We present the first complete, exact and efficient C++ implementatio
|
|||
,month = dec
|
||||
,year = {2000}
|
||||
,issn = {0946-011X}
|
||||
,url = {http://www.mpi-sb.mpg.de/~mehlhorn/ftp/InfiFrames.ps}
|
||||
,url = {https://www.mpi-sb.mpg.de/~mehlhorn/ftp/InfiFrames.ps}
|
||||
}
|
||||
|
||||
@InProceedings{cgal:sp-mrbee-05
|
||||
|
|
@ -2044,7 +2083,7 @@ location = {Salt Lake City, Utah, USA}
|
|||
, pages = "75:1-75:9"
|
||||
, note = "SIGGRAPH '2009 Conference Proceedings"
|
||||
, volume = "28(3)"
|
||||
, url = "http://hal.inria.fr/inria-00359288"
|
||||
, url = "https://hal.inria.fr/inria-00359288"
|
||||
, geombib = "not yet"
|
||||
, x-editorial-board = {yes}
|
||||
, x-proceedings = {yes}
|
||||
|
|
@ -2177,7 +2216,7 @@ location = {Salt Lake City, Utah, USA}
|
|||
howpublished = {Stefan Walk (ETH Zurich, Department of Civil,
|
||||
Environmental and Geomatic Engineering, Institute of
|
||||
Geodesy and Photogrammetry)},
|
||||
url = {http://www.prs.igp.ethz.ch/research/Source_code_and_datasets.html},
|
||||
url = {https://www.prs.igp.ethz.ch/research/Source_code_and_datasets.html},
|
||||
year = 2014
|
||||
}
|
||||
|
||||
|
|
@ -2245,7 +2284,7 @@ location = {Salt Lake City, Utah, USA}
|
|||
editor = "L{\'{a}}szl{\'{o}} Szirmay Kalos",
|
||||
pages = "210--218",
|
||||
year = "1998",
|
||||
url = "citeseer.ist.psu.edu/article/felkel98straight.html"
|
||||
url = "http://citeseer.ist.psu.edu/article/felkel98straight.html"
|
||||
}
|
||||
|
||||
@inproceedings{ cgal:ee-rrccpp-98,
|
||||
|
|
@ -2254,7 +2293,7 @@ location = {Salt Lake City, Utah, USA}
|
|||
booktitle = "Symposium on Computational Geometry",
|
||||
pages = "58--67",
|
||||
year = "1998",
|
||||
url = "citeseer.ist.psu.edu/eppstein98raising.html"
|
||||
url = "http://citeseer.ist.psu.edu/eppstein98raising.html"
|
||||
}
|
||||
|
||||
@inproceedings{ cgal:ld-agrm-03,
|
||||
|
|
@ -2307,7 +2346,7 @@ pages = {69-79},
|
|||
ee = {http://link.springer.de/link/service/series/0558/bibs/1766/17660069.htm},
|
||||
crossref = {cgal:jlm-isgp-98},
|
||||
bibsource = {DBLP, http://dblp.uni-trier.de},
|
||||
url = "http://www.boost.org/community/exception_safety.html"
|
||||
url = "https://www.boost.org/community/exception_safety.html"
|
||||
}
|
||||
|
||||
@misc{ cgal:asprs-lasf-13
|
||||
|
|
@ -2315,7 +2354,7 @@ url = "http://www.boost.org/community/exception_safety.html"
|
|||
,title = "LASer ({LAS}) File Format Exchange Activities"
|
||||
,howpublished = {American Society for Photogrammetry \& Remote Sensing}
|
||||
,year = 2013
|
||||
,url = "https://www.asprs.org/committee-general/laser-las-file-format-exchange-activities.html"
|
||||
,url = "https://www.asprs.org/divisions-committees/lidar-division/laser-las-file-format-exchange-activities"
|
||||
}
|
||||
|
||||
@article{cgal:as-solri-92
|
||||
|
|
@ -2449,7 +2488,7 @@ author = "Pedro M.M. de Castro and Frederic Cazals and Sebastien Loriot and Moni
|
|||
AUTHOR = {Otfried Cheong},
|
||||
EDITION = {6.0pre32},
|
||||
YEAR = {2009},
|
||||
URL = {http://tclab.kaist.ac.kr/ipe/}
|
||||
URL = {http://ipe.otfried.org/}
|
||||
}
|
||||
|
||||
@misc{cgal:t-ocdl-05,
|
||||
|
|
@ -2467,7 +2506,7 @@ author = "Pedro M.M. de Castro and Frederic Cazals and Sebastien Loriot and Moni
|
|||
editor = "Jacob E. Goodman, J\'anos Pach and Emo Welzl",
|
||||
year = {2005},
|
||||
pages = {439-458},
|
||||
URL = {http://www.msri.org/communications/books/Book52/files/23liu.pdf},
|
||||
URL = {http://library.msri.org/books/Book52/files/23liu.pdf},
|
||||
publisher = {MSRI Publications}
|
||||
}
|
||||
|
||||
|
|
@ -2480,7 +2519,7 @@ author = "Pedro M.M. de Castro and Frederic Cazals and Sebastien Loriot and Moni
|
|||
, volume = "40"
|
||||
, number = "1"
|
||||
, pages = "61-78"
|
||||
, url = "http://hal.inria.fr/inria-00344310/"
|
||||
, url = "https://hal.inria.fr/inria-00344310/"
|
||||
, doi = "10.1016/j.comgeo.2007.06.003"
|
||||
, x-international-audience = "yes"
|
||||
, x-editorial-board = "yes"
|
||||
|
|
@ -2500,7 +2539,7 @@ author = "Pedro M.M. de Castro and Frederic Cazals and Sebastien Loriot and Moni
|
|||
, title = "Complexity of {Delaunay} triangulation for points on lower-dimensional polyhedra"
|
||||
, booktitle = "Proc. 18th ACM-SIAM Sympos. Discrete Algorithms"
|
||||
, nickname = "SODA"
|
||||
, url = "http://hal.inria.fr/inria-00182835/"
|
||||
, url = "https://hal.inria.fr/inria-00182835/"
|
||||
, year = 2007
|
||||
, pages = "1106--1113"
|
||||
}
|
||||
|
|
@ -2626,7 +2665,7 @@ ADDRESS = "Saarbr{\"u}cken, Germany"
|
|||
author={Sorkine, Olga},
|
||||
year={2009},
|
||||
pages={1-6},
|
||||
howpublished = {http://igl.ethz.ch/projects/ARAP/}
|
||||
url = {https://igl.ethz.ch/projects/ARAP/}
|
||||
|
||||
@book{cgal:bc:m-dbc-27,
|
||||
Address = {Leipzig},
|
||||
|
|
@ -2772,7 +2811,7 @@ pages = "207--221"
|
|||
journal = {CoRR},
|
||||
year = {2014},
|
||||
volume = {abs/1403.3905},
|
||||
url = {http://arxiv.org/abs/1403.3905},
|
||||
url = {https://arxiv.org/abs/1403.3905},
|
||||
timestamp = {Wed, 17 Sep 2014 16:30:16 +0200},
|
||||
biburl = {http://dblp.uni-trier.de/rec/bib/journals/corr/BungiuHHHK14},
|
||||
bibsource = {dblp computer science bibliography, http://dblp.org}
|
||||
|
|
|
|||
|
|
@ -7010,7 +7010,6 @@ cell neighborhood in $O(m)$ time."
|
|||
, type = "Research {Report}"
|
||||
, institution = "Xerox PARC"
|
||||
, year = 1997
|
||||
, url = "http://www.geom.umn.edu/~nina/papers/crust.ps.gz"
|
||||
, precedes = "abe-cbscc-98"
|
||||
, update = "00.03 devillers, 98.03 devillers"
|
||||
}
|
||||
|
|
@ -11387,7 +11386,7 @@ method that uses very different techniques."
|
|||
, address = "BP93, 06902 Sophia-Antipolis, France"
|
||||
, month = jun
|
||||
, year = 1993
|
||||
, url = "http://www.inria.fr/cgi-bin/wais_ra_sophia?question=1990"
|
||||
, url = "https://hal.inria.fr/inria-00074682"
|
||||
, keywords = "parallel algorithms, hypercube, multisearching, point location"
|
||||
, update = "95.09 devillers, 95.01 devillers, 93.09 devillers+milone+mitchell"
|
||||
}
|
||||
|
|
@ -19005,7 +19004,6 @@ $O(n^2)$ in the plane."
|
|||
, address = "Berlin"
|
||||
, year = 1997
|
||||
, isbn = "3-540-61270-X"
|
||||
, url = "http://www.cs.ruu.nl/geobook/"
|
||||
, keywords = "textbook"
|
||||
, update = "98.03 agarwal+mitchell, 97.11 oostrum+orourke"
|
||||
}
|
||||
|
|
@ -19734,7 +19732,7 @@ $O(n^2)$ in the plane."
|
|||
, booktitle = "Proc. 11th Canad. Conf. Comput. Geom."
|
||||
, year = 1999
|
||||
, pages = "13--16"
|
||||
, note = "Full version: http://arXiv.org/abs/cs/9908003/"
|
||||
, note = "Full version: https://arXiv.org/abs/cs/9908003/"
|
||||
, url = "http://www.cs.ubc.ca/conferences/CCCG/elec_proc/elecproc.html"
|
||||
, update = "01.11 orourke, 00.03 orourke"
|
||||
}
|
||||
|
|
@ -24218,7 +24216,7 @@ must lie in the halfplanes delimited by the query lines."
|
|||
, volume = 8
|
||||
, year = 1992
|
||||
, pages = "51--71"
|
||||
, url = "http://www-sop.inria.fr/prisme/publis/bdsty-arsol-92.ps.gz"
|
||||
, url = "https://hal.inria.fr/inria-00090675"
|
||||
, keywords = "randomized algorithms, Delaunay triangulation, semi-dynamic algorithms, arrangement of line-segments"
|
||||
, succeeds = "bdsty-olgag-91i"
|
||||
, update = "99.11 bibrelex, 99.07 devillers, 98.07 bibrelex, 97.03 devillers, 96.01 devillers, 95.09 devillers, 95.01 devillers"
|
||||
|
|
@ -24669,7 +24667,6 @@ present a polynomial-time exact algorithm to solve this problem."
|
|||
, address = "UK"
|
||||
, year = 1998
|
||||
, note = "Translated by Herv{\'e} Br{\"o}nnimann"
|
||||
, url = "http://www.cup.cam.ac.uk/Scripts/webbook.asp?isbn=0521563224"
|
||||
, succeeds = "by-ga-95"
|
||||
, update = "99.11 devillers, 99.07 devillers, 99.03 bibrelex+devillers, 98.07 devillers"
|
||||
, annote = "translated from {\cite{by-ga-95}} by Herv{\'e} Br{\"o}nnimann"
|
||||
|
|
@ -24681,7 +24678,6 @@ present a polynomial-time exact algorithm to solve this problem."
|
|||
, publisher = "Ediscience international"
|
||||
, address = "Paris"
|
||||
, year = 1995
|
||||
, url = "http://www-sop.inria.fr/prisme/personnel/yvinec/livre.html"
|
||||
, precedes = "by-ag-98"
|
||||
, update = "99.07 devillers, 99.03 bibrelex, 98.07 devillers, 96.01 devillers"
|
||||
}
|
||||
|
|
@ -27495,7 +27491,7 @@ and solids on dynamically evolving grids without remeshing."
|
|||
, year = 1999
|
||||
, pages = "173--197"
|
||||
, note = "Special Issue on Real Numbers and Computers"
|
||||
, url = "http://www-sop.inria.fr/prisme/personnel/pion/publis/TCS.ps.gz"
|
||||
, url = "https://hal.inria.fr/inria-00344324"
|
||||
, succeeds = "bepp-cegpu-97"
|
||||
, update = "99.07 devillers"
|
||||
}
|
||||
|
|
@ -44299,7 +44295,7 @@ Contains C code."
|
|||
, booktitle = "Proc. 14th Annu. ACM Sympos. Comput. Geom."
|
||||
, year = 1998
|
||||
, pages = "106--115"
|
||||
, url = "http://www-sop.inria.fr/prisme/publis/d-iirdt-98.ps.gz"
|
||||
, url = "https://hal.inria.fr/hal-01179446"
|
||||
, archive = "XXX:cs.CG/9907024"
|
||||
, update = "99.11 bibrelex+devillers, 99.07 devillers, 98.11 devillers"
|
||||
, abstract = "We propose a new data structure to compute the Delaunay triangulation of a set of points in the plane. It combines good worst case complexity, fast behavior on real data, and small memory occupation. The location structure is organized into several levels. The lowest level just consists of the triangulation, then each level contains the triangulation of a small sample of the levels below. Point location is done by marching in a triangulation to determine the nearest neighbor of the query at that level, then the march restarts from that neighbor at the level below. Using a small sample (3 {\%}) allows a small memory occupation; the march and the use of the nearest neighbor to change levels quickly locate the query."
|
||||
|
|
@ -44337,7 +44333,7 @@ Contains C code."
|
|||
, year = 2009
|
||||
, type = "Research Report"
|
||||
, number = 7104
|
||||
, url = "http://hal.inria.fr/inria-00433107/"
|
||||
, url = "https://hal.inria.fr/inria-00433107/"
|
||||
}
|
||||
|
||||
@inproceedings{d-ddt-99
|
||||
|
|
@ -44363,7 +44359,7 @@ Contains C code."
|
|||
, number = 1
|
||||
, year = 1992
|
||||
, pages = "97--111"
|
||||
, url = "http://www-sop.inria.fr/prisme/publis/d-rysoa-92.ps.gz"
|
||||
, url = "https://hal.inria.fr/inria-00167206"
|
||||
, archive = "XXX:cs.CG/9810007"
|
||||
, keywords = "randomized algorithms, Delaunay triangulation, skeleton, medial axis, minimum spanning tree, simple polygon"
|
||||
, succeeds = "d-sroa-91"
|
||||
|
|
@ -44583,7 +44579,7 @@ respectively, we obtain a speedup of $\frac p{\log p}$."
|
|||
, number = 3
|
||||
, year = 1995
|
||||
, pages = "157--164"
|
||||
, url = "http://www-sop.inria.fr/prisme/biblio/search.html"
|
||||
, url = "https://hal.inria.fr/inria-00074391"
|
||||
, succeeds = "dg-iafch-94"
|
||||
, cites = "a-dcgp-85, bcddy-acchs-92, r-chada-92"
|
||||
, update = "99.11 devillers, 99.07 devillers, 96.01 devillers"
|
||||
|
|
@ -44838,7 +44834,7 @@ respectively, we obtain a speedup of $\frac p{\log p}$."
|
|||
, volume = 20
|
||||
, year = 1998
|
||||
, pages = "523--547"
|
||||
, url = "http://www-sop.inria.fr/prisme/publis/dp-papaf-98.ps.gz"
|
||||
, url = "https://hal.inria.fr/inria-00090653"
|
||||
, archive = "XXX:cs.CG/9907029"
|
||||
, succeeds = "dp-papaf-96"
|
||||
, cites = "b-g-87, bkmnsu-egcl-95, bms-hcvdl-94, fv-eeacg-93, lpt-rpqiv-96, mn-iga-94, y-tegc-97"
|
||||
|
|
@ -52318,7 +52314,6 @@ library."
|
|||
, month = jan
|
||||
, year = 1994
|
||||
, pages = "43--72"
|
||||
, url = "https://users.cs.duke.edu/~edels/Papers/1994-J-04-3DAlphaShapes.pdf"
|
||||
, comments = "Software in \url{ftp://cs.uiuc.edu/pub/edels/geometry/alpha-2.1a.tar.Z}"
|
||||
, update = "94.09 orourke"
|
||||
}
|
||||
|
|
@ -68865,7 +68860,7 @@ generated in O(dn2d+1) time. We present a simple proof that the (d -
|
|||
@misc{g-ggmpa
|
||||
, author = "Torbj{\"o}rn Granlund"
|
||||
, title = "{GMP}, The {GNU} Multiple Precision Arithmetic Library"
|
||||
, url = "http://gmplib.org/"
|
||||
, url = "https://gmplib.org/"
|
||||
, update = "02.03 devillers"
|
||||
}
|
||||
|
||||
|
|
@ -85658,7 +85653,7 @@ fitting method."
|
|||
, title = "The {CORE} Library Project"
|
||||
, edition = "1.2"
|
||||
, year = 1999
|
||||
, url = "http://www.cs.nyu.edu/exact/core/"
|
||||
, url = "https://www.cs.nyu.edu/exact/core/"
|
||||
, update = "00.03 devillers"
|
||||
}
|
||||
|
||||
|
|
@ -140391,7 +140386,7 @@ code."
|
|||
, publisher = "INRIA Sophia-Antipolis"
|
||||
, year = 1999
|
||||
, pages = "175--178"
|
||||
, url = "ftp://ftp-sop.inria.fr/geometrica/publis/t-3tc-99.pdf"
|
||||
, url = "https://hal.inria.fr/inria-00167199"
|
||||
, update = "00.03 bibrelex+devillers, 99.07 bibrelex"
|
||||
}
|
||||
|
||||
|
|
@ -150728,7 +150723,6 @@ This improves previous bound of $O(mt+m\log m)$ in
|
|||
, address = "Singapore"
|
||||
, year = 1995
|
||||
, pages = "452--492"
|
||||
, url = "http://cs.nyu.edu/cs/faculty/yap/papers/paradigm.ps"
|
||||
, keywords = "survey paper, numeral computing, exact compuation, fixed-precision, multiprecision number packages"
|
||||
, update = "98.07 icking+vismara, 97.11 icking, 97.03 devillers+pocchiola"
|
||||
, abstract = "A survey of the approaches to non-robustness of geometric algorithms, and especially the exact computation approach. Also surveys available big-number packages."
|
||||
|
|
@ -151944,7 +151938,7 @@ pages = {179--189}
|
|||
, number = "RR-8467"
|
||||
, month = "Feb"
|
||||
, year = "2014"
|
||||
, url = "http://hal.inria.fr/hal-00943409"
|
||||
, url = "https://hal.inria.fr/hal-00943409"
|
||||
}
|
||||
|
||||
@article{XinWang2009improvingchenandhan,
|
||||
|
|
|
|||
|
|
@ -250,9 +250,9 @@ ALIASES = "sc{1}=<span style=\"font-variant: small-caps;\">\1</sp
|
|||
"cgalFigureBegin{8}=\anchor fig__\1 \n <CENTER> <TABLE border=0> <TR> <TD> \image html \2 \n \image latex \2 \"\" width=2.1cm \n </TD> <TD> \image html \3 \n \image latex \3 \"\" width=2.1cm \n </TD> <TD> \image html \4 \n \image latex \4 \"\" width=2.1cm \n </TD> <TD> \image html \5 \n \image latex \5 \"\" width=2.1cm \n </TD> <TD> \image html \6 \n \image latex \6 \"\" width=2.1cm \n </TD> <TD> \image html \7 \n \image latex \7 \"\" width=2.1cm \n </TD> <TD> \image html \8 \n \image latex \8 \"\" width=2.1cm \n </TD> </TR> </TABLE> </CENTER> \htmlonly <div class=\"cgal_figure_caption\"> \endhtmlonly \n \latexonly \n \endlatexonly \ref fig__\1" \
|
||||
"cgalFigureBegin{9}=\anchor fig__\1 \n <CENTER> <TABLE border=0> <TR> <TD> \image html \2 \n \image latex \2 \"\" width=1.9cm \n </TD> <TD> \image html \3 \n \image latex \3 \"\" width=1.9cm \n </TD> <TD> \image html \4 \n \image latex \4 \"\" width=1.9cm \n </TD> <TD> \image html \5 \n \image latex \5 \"\" width=1.9cm \n </TD> <TD> \image html \6 \n \image latex \6 \"\" width=1.9cm \n </TD> <TD> \image html \7 \n \image latex \7 \"\" width=1.9cm \n </TD> <TD> \image html \8 \n \image latex \8 \"\" width=1.9cm \n </TD> <TD> \image html \9 \n \image latex \9 \"\" width=1.9cm \n </TD> </TR> </TABLE> </CENTER> \htmlonly <div class=\"cgal_figure_caption\"> \endhtmlonly \n \latexonly \n \endlatexonly \ref fig__\1" \
|
||||
"cgalFigureBegin{10}=\anchor fig__\1 \n <CENTER> <TABLE border=0> <TR> <TD> \image html \2 \n \image latex \2 \"\" width=1.6cm \n </TD> <TD> \image html \3 \n \image latex \3 \"\" width=1.6cm \n </TD> <TD> \image html \4 \n \image latex \4 \"\" width=1.6cm \n </TD> <TD> \image html \5 \n \image latex \5 \"\" width=1.6cm \n </TD> <TD> \image html \6 \n \image latex \6 \"\" width=1.6cm \n </TD> <TD> \image html \7 \n \image latex \7 \"\" width=1.6cm \n </TD> <TD> \image html \8 \n \image latex \8 \"\" width=1.6cm \n </TD> <TD> \image html \9 \n \image latex \9 \"\" width=1.6cm \n </TD> <TD> \image html \10 \n \image latex \10 \"\" width=1.6cm \n </TD> </TR> </TABLE> </CENTER> \htmlonly <div class=\"cgal_figure_caption\"> \endhtmlonly \n \latexonly \n \endlatexonly \ref fig__\1" \
|
||||
"cgalFigureEnd=\htmlonly </div> \endhtmlonly <br>" \
|
||||
"cgalFigureEnd=\htmlonly </div> <br> \endhtmlonly" \
|
||||
"cgalFigureCaptionBegin{1}=\htmlonly <div class=\"cgal_figure_caption\"> \endhtmlonly \ref fig__\1" \
|
||||
"cgalFigureCaptionEnd=\htmlonly </div> \endhtmlonly <br>" \
|
||||
"cgalFigureCaptionEnd=\htmlonly </div> <br> \endhtmlonly" \
|
||||
"cgalConcept=\details <div id=\"CGALConcept\"></div>\n \brief" \
|
||||
"cgalConceptNamespace=\details <div id=\"CGALConceptNS\"></div>\n \brief" \
|
||||
"cgalRefines=\xrefitem refines \"Refines\" \"Refinement Relationships\"" \
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
<!-- HTML header for doxygen 1.8.13-->
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<link rel="icon" type="image/png" href="$relpath$../Manual/g-196x196-doc.png">
|
||||
<link rel="icon" type="image/png" href="$relpath$../Manual/g-196x196-doc.png"/>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen $doxygenversion"/>
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
<!-- HTML header for doxygen 1.8.13-->
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<link rel="icon" type="image/png" href="$relpath$../Manual/g-196x196-doc.png">
|
||||
<link rel="icon" type="image/png" href="$relpath$../Manual/g-196x196-doc.png" />
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen $doxygenversion"/>
|
||||
|
|
|
|||
|
|
@ -242,29 +242,29 @@ ALIASES = "sc{1}=<span style=\"font-variant: small-caps;\">\1</sp
|
|||
"cgalExample{1}=<br><b>File</b> \ref \1 \include \1" \
|
||||
"cgalFigureAnchor{1}=\anchor fig__\1" \
|
||||
"cgalFigureRef{1}=\ref fig__\1" \
|
||||
"cgalFigureBegin{2}=\anchor fig__\1 ^^ \image html \2 ^^ \image latex \2 \"\" width=15cm ^^ \htmlonly <div class=\"cgal_figure_caption\"> \endhtmlonly \latexonly ^^ \endlatexonly ^^ \ref fig__\1" \
|
||||
"cgalFigureBegin{3}=\anchor fig__\1 ^^ <CENTER> <TABLE border=0> <TR> <TD> \image html \2 ^^ \image latex \2 \"\" width=7.5cm ^^ </TD> <TD> \image html \3 ^^ \image latex \3 \"\" width=7.5cm ^^ </TD> </TR> </TABLE> </CENTER> \htmlonly <div class=\"cgal_figure_caption\"> \endhtmlonly ^^ \latexonly ^^ \endlatexonly \ref fig__\1" \
|
||||
"cgalFigureBegin{4}=\anchor fig__\1 ^^ <CENTER> <TABLE border=0> <TR> <TD> \image html \2 ^^ \image latex \2 \"\" width=5cm ^^ </TD> <TD> \image html \3 ^^ \image latex \3 \"\" width=5cm ^^ </TD> <TD> \image html \4 ^^ \image latex \4 \"\" width=5cm ^^ </TD> </TR> </TABLE> </CENTER> \htmlonly <div class=\"cgal_figure_caption\"> \endhtmlonly ^^ \latexonly ^^ \endlatexonly \ref fig__\1" \
|
||||
"cgalFigureBegin{5}=\anchor fig__\1 ^^ <CENTER> <TABLE border=0> <TR> <TD> \image html \2 ^^ \image latex \2 \"\" width=3.75cm ^^ </TD> <TD> \image html \3 ^^ \image latex \3 \"\" width=3.75cm ^^ </TD> <TD> \image html \4 ^^ \image latex \4 \"\" width=3.75cm ^^ </TD> <TD> \image html \5 ^^ \image latex \5 \"\" width=3.75cm ^^ </TD> </TR> </TABLE> </CENTER> \htmlonly <div class=\"cgal_figure_caption\"> \endhtmlonly ^^ \latexonly ^^ \endlatexonly \ref fig__\1" \
|
||||
"cgalFigureBegin{6}=\anchor fig__\1 ^^ <CENTER> <TABLE border=0> <TR> <TD> \image html \2 ^^ \image latex \2 \"\" width=3cm ^^ </TD> <TD> \image html \3 ^^ \image latex \3 \"\" width=3cm ^^ </TD> <TD> \image html \4 ^^ \image latex \4 \"\" width=3cm ^^ </TD> <TD> \image html \5 ^^ \image latex \5 \"\" width=3cm ^^ </TD> <TD> \image html \6 ^^ \image latex \6 \"\" width=3cm ^^ </TD> </TR> </TABLE> </CENTER> \htmlonly <div class=\"cgal_figure_caption\"> \endhtmlonly ^^ \latexonly ^^ \endlatexonly \ref fig__\1" \
|
||||
"cgalFigureBegin{7}=\anchor fig__\1 ^^ <CENTER> <TABLE border=0> <TR> <TD> \image html \2 ^^ \image latex \2 \"\" width=2.5cm ^^ </TD> <TD> \image html \3 ^^ \image latex \3 \"\" width=2.5cm ^^ </TD> <TD> \image html \4 ^^ \image latex \4 \"\" width=2.5cm ^^ </TD> <TD> \image html \5 ^^ \image latex \5 \"\" width=2.5cm ^^ </TD> <TD> \image html \6 ^^ \image latex \6 \"\" width=2.5cm ^^ </TD> <TD> \image html \7 ^^ \image latex \7 \"\" width=2.5cm ^^ </TD> </TR> </TABLE> </CENTER> \htmlonly <div class=\"cgal_figure_caption\"> \endhtmlonly ^^ \latexonly ^^ \endlatexonly \ref fig__\1" \
|
||||
"cgalFigureBegin{8}=\anchor fig__\1 ^^ <CENTER> <TABLE border=0> <TR> <TD> \image html \2 ^^ \image latex \2 \"\" width=2.1cm ^^ </TD> <TD> \image html \3 ^^ \image latex \3 \"\" width=2.1cm ^^ </TD> <TD> \image html \4 ^^ \image latex \4 \"\" width=2.1cm ^^ </TD> <TD> \image html \5 ^^ \image latex \5 \"\" width=2.1cm ^^ </TD> <TD> \image html \6 ^^ \image latex \6 \"\" width=2.1cm ^^ </TD> <TD> \image html \7 ^^ \image latex \7 \"\" width=2.1cm ^^ </TD> <TD> \image html \8 ^^ \image latex \8 \"\" width=2.1cm ^^ </TD> </TR> </TABLE> </CENTER> \htmlonly <div class=\"cgal_figure_caption\"> \endhtmlonly ^^ \latexonly ^^ \endlatexonly \ref fig__\1" \
|
||||
"cgalFigureBegin{9}=\anchor fig__\1 ^^ <CENTER> <TABLE border=0> <TR> <TD> \image html \2 ^^ \image latex \2 \"\" width=1.9cm ^^ </TD> <TD> \image html \3 ^^ \image latex \3 \"\" width=1.9cm ^^ </TD> <TD> \image html \4 ^^ \image latex \4 \"\" width=1.9cm ^^ </TD> <TD> \image html \5 ^^ \image latex \5 \"\" width=1.9cm ^^ </TD> <TD> \image html \6 ^^ \image latex \6 \"\" width=1.9cm ^^ </TD> <TD> \image html \7 ^^ \image latex \7 \"\" width=1.9cm ^^ </TD> <TD> \image html \8 ^^ \image latex \8 \"\" width=1.9cm ^^ </TD> <TD> \image html \9 ^^ \image latex \9 \"\" width=1.9cm ^^ </TD> </TR> </TABLE> </CENTER> \htmlonly <div class=\"cgal_figure_caption\"> \endhtmlonly ^^ \latexonly ^^ \endlatexonly \ref fig__\1" \
|
||||
"cgalFigureBegin{10}=\anchor fig__\1 ^^ <CENTER> <TABLE border=0> <TR> <TD> \image html \2 ^^ \image latex \2 \"\" width=1.6cm ^^ </TD> <TD> \image html \3 ^^ \image latex \3 \"\" width=1.6cm ^^ </TD> <TD> \image html \4 ^^ \image latex \4 \"\" width=1.6cm ^^ </TD> <TD> \image html \5 ^^ \image latex \5 \"\" width=1.6cm ^^ </TD> <TD> \image html \6 ^^ \image latex \6 \"\" width=1.6cm ^^ </TD> <TD> \image html \7 ^^ \image latex \7 \"\" width=1.6cm ^^ </TD> <TD> \image html \8 ^^ \image latex \8 \"\" width=1.6cm ^^ </TD> <TD> \image html \9 ^^ \image latex \9 \"\" width=1.6cm ^^ </TD> <TD> \image html \10 ^^ \image latex \10 \"\" width=1.6cm ^^ </TD> </TR> </TABLE> </CENTER> \htmlonly <div class=\"cgal_figure_caption\"> \endhtmlonly ^^ \latexonly ^^ \endlatexonly \ref fig__\1" \
|
||||
"cgalFigureEnd=\htmlonly </div> \endhtmlonly <br>" \
|
||||
"cgalFigureCaptionBegin{1}=\htmlonly <div class=\"cgal_figure_caption\"> \endhtmlonly \ref fig__\1" \
|
||||
"cgalFigureCaptionEnd=\htmlonly </div> \endhtmlonly <br>" \
|
||||
"cgalFigureBegin{2}=\anchor fig__\1 ^^ \image html \2 ^^ \image latex \2 \"\" width=15cm ^^ \htmlonly[block] <div class=\"cgal_figure_caption\"> \endhtmlonly \latexonly ^^ \endlatexonly ^^ \ref fig__\1" \
|
||||
"cgalFigureBegin{3}=\anchor fig__\1 ^^ <CENTER> <TABLE border=0> <TR> <TD> \image html \2 ^^ \image latex \2 \"\" width=7.5cm ^^ </TD> <TD> \image html \3 ^^ \image latex \3 \"\" width=7.5cm ^^ </TD> </TR> </TABLE> </CENTER> \htmlonly[block] <div class=\"cgal_figure_caption\"> \endhtmlonly ^^ \latexonly ^^ \endlatexonly \ref fig__\1" \
|
||||
"cgalFigureBegin{4}=\anchor fig__\1 ^^ <CENTER> <TABLE border=0> <TR> <TD> \image html \2 ^^ \image latex \2 \"\" width=5cm ^^ </TD> <TD> \image html \3 ^^ \image latex \3 \"\" width=5cm ^^ </TD> <TD> \image html \4 ^^ \image latex \4 \"\" width=5cm ^^ </TD> </TR> </TABLE> </CENTER> \htmlonly[block] <div class=\"cgal_figure_caption\"> \endhtmlonly ^^ \latexonly ^^ \endlatexonly \ref fig__\1" \
|
||||
"cgalFigureBegin{5}=\anchor fig__\1 ^^ <CENTER> <TABLE border=0> <TR> <TD> \image html \2 ^^ \image latex \2 \"\" width=3.75cm ^^ </TD> <TD> \image html \3 ^^ \image latex \3 \"\" width=3.75cm ^^ </TD> <TD> \image html \4 ^^ \image latex \4 \"\" width=3.75cm ^^ </TD> <TD> \image html \5 ^^ \image latex \5 \"\" width=3.75cm ^^ </TD> </TR> </TABLE> </CENTER> \htmlonly[block] <div class=\"cgal_figure_caption\"> \endhtmlonly ^^ \latexonly ^^ \endlatexonly \ref fig__\1" \
|
||||
"cgalFigureBegin{6}=\anchor fig__\1 ^^ <CENTER> <TABLE border=0> <TR> <TD> \image html \2 ^^ \image latex \2 \"\" width=3cm ^^ </TD> <TD> \image html \3 ^^ \image latex \3 \"\" width=3cm ^^ </TD> <TD> \image html \4 ^^ \image latex \4 \"\" width=3cm ^^ </TD> <TD> \image html \5 ^^ \image latex \5 \"\" width=3cm ^^ </TD> <TD> \image html \6 ^^ \image latex \6 \"\" width=3cm ^^ </TD> </TR> </TABLE> </CENTER> \htmlonly[block] <div class=\"cgal_figure_caption\"> \endhtmlonly ^^ \latexonly ^^ \endlatexonly \ref fig__\1" \
|
||||
"cgalFigureBegin{7}=\anchor fig__\1 ^^ <CENTER> <TABLE border=0> <TR> <TD> \image html \2 ^^ \image latex \2 \"\" width=2.5cm ^^ </TD> <TD> \image html \3 ^^ \image latex \3 \"\" width=2.5cm ^^ </TD> <TD> \image html \4 ^^ \image latex \4 \"\" width=2.5cm ^^ </TD> <TD> \image html \5 ^^ \image latex \5 \"\" width=2.5cm ^^ </TD> <TD> \image html \6 ^^ \image latex \6 \"\" width=2.5cm ^^ </TD> <TD> \image html \7 ^^ \image latex \7 \"\" width=2.5cm ^^ </TD> </TR> </TABLE> </CENTER> \htmlonly[block] <div class=\"cgal_figure_caption\"> \endhtmlonly ^^ \latexonly ^^ \endlatexonly \ref fig__\1" \
|
||||
"cgalFigureBegin{8}=\anchor fig__\1 ^^ <CENTER> <TABLE border=0> <TR> <TD> \image html \2 ^^ \image latex \2 \"\" width=2.1cm ^^ </TD> <TD> \image html \3 ^^ \image latex \3 \"\" width=2.1cm ^^ </TD> <TD> \image html \4 ^^ \image latex \4 \"\" width=2.1cm ^^ </TD> <TD> \image html \5 ^^ \image latex \5 \"\" width=2.1cm ^^ </TD> <TD> \image html \6 ^^ \image latex \6 \"\" width=2.1cm ^^ </TD> <TD> \image html \7 ^^ \image latex \7 \"\" width=2.1cm ^^ </TD> <TD> \image html \8 ^^ \image latex \8 \"\" width=2.1cm ^^ </TD> </TR> </TABLE> </CENTER> \htmlonly[block] <div class=\"cgal_figure_caption\"> \endhtmlonly ^^ \latexonly ^^ \endlatexonly \ref fig__\1" \
|
||||
"cgalFigureBegin{9}=\anchor fig__\1 ^^ <CENTER> <TABLE border=0> <TR> <TD> \image html \2 ^^ \image latex \2 \"\" width=1.9cm ^^ </TD> <TD> \image html \3 ^^ \image latex \3 \"\" width=1.9cm ^^ </TD> <TD> \image html \4 ^^ \image latex \4 \"\" width=1.9cm ^^ </TD> <TD> \image html \5 ^^ \image latex \5 \"\" width=1.9cm ^^ </TD> <TD> \image html \6 ^^ \image latex \6 \"\" width=1.9cm ^^ </TD> <TD> \image html \7 ^^ \image latex \7 \"\" width=1.9cm ^^ </TD> <TD> \image html \8 ^^ \image latex \8 \"\" width=1.9cm ^^ </TD> <TD> \image html \9 ^^ \image latex \9 \"\" width=1.9cm ^^ </TD> </TR> </TABLE> </CENTER> \htmlonly[block] <div class=\"cgal_figure_caption\"> \endhtmlonly ^^ \latexonly ^^ \endlatexonly \ref fig__\1" \
|
||||
"cgalFigureBegin{10}=\anchor fig__\1 ^^ <CENTER> <TABLE border=0> <TR> <TD> \image html \2 ^^ \image latex \2 \"\" width=1.6cm ^^ </TD> <TD> \image html \3 ^^ \image latex \3 \"\" width=1.6cm ^^ </TD> <TD> \image html \4 ^^ \image latex \4 \"\" width=1.6cm ^^ </TD> <TD> \image html \5 ^^ \image latex \5 \"\" width=1.6cm ^^ </TD> <TD> \image html \6 ^^ \image latex \6 \"\" width=1.6cm ^^ </TD> <TD> \image html \7 ^^ \image latex \7 \"\" width=1.6cm ^^ </TD> <TD> \image html \8 ^^ \image latex \8 \"\" width=1.6cm ^^ </TD> <TD> \image html \9 ^^ \image latex \9 \"\" width=1.6cm ^^ </TD> <TD> \image html \10 ^^ \image latex \10 \"\" width=1.6cm ^^ </TD> </TR> </TABLE> </CENTER> \htmlonly[block] <div class=\"cgal_figure_caption\"> \endhtmlonly ^^ \latexonly ^^ \endlatexonly \ref fig__\1" \
|
||||
"cgalFigureEnd=\htmlonly[block] </div> \endhtmlonly <br>" \
|
||||
"cgalFigureCaptionBegin{1}=\htmlonly[block] <div class=\"cgal_figure_caption\"> \endhtmlonly \ref fig__\1" \
|
||||
"cgalFigureCaptionEnd=\htmlonly[block] </div> \endhtmlonly <br>" \
|
||||
"cgalConcept=\details <div id=\"CGALConcept\"></div>^^ \brief" \
|
||||
"cgalConceptNamespace=\details <div id=\"CGALConceptNS\"></div>^^ \brief" \
|
||||
"cgalRefines=\xrefitem refines \"Refines\" \"Refinement Relationships\"" \
|
||||
"cgalModels=\xrefitem models \"Is Model Of\" \"Is Model Relationships\"" \
|
||||
"cgalGeneralizes=\xrefitem generalizes \"Generalizes\" \"Generalization Relationships\"" \
|
||||
"cgalHasModel=\xrefitem hasModels \"Has Models\" \"Has Model Relationships\"" \
|
||||
"cgalDebugBegin=\htmlonly <div class=\"CGALDebug\"> <div>Debugging Support</div> \endhtmlonly ^^" \
|
||||
"cgalDebugEnd=\htmlonly </div> \endhtmlonly" \
|
||||
"cgalDebugBegin=\htmlonly[block] <div class=\"CGALDebug\"> <div>Debugging Support</div> \endhtmlonly ^^" \
|
||||
"cgalDebugEnd=\htmlonly[block] </div> \endhtmlonly" \
|
||||
"cgalDebugFunction=This is a function for debugging purpose." \
|
||||
"cgalAdvancedBegin=\htmlonly <div class=\"CGALAdvanced\"> <div>Advanced</div> \endhtmlonly ^^" \
|
||||
"cgalAdvancedEnd=\htmlonly </div> \endhtmlonly" \
|
||||
"cgalAdvancedBegin=\htmlonly[block] <div class=\"CGALAdvanced\"> <div>Advanced</div> \endhtmlonly ^^" \
|
||||
"cgalAdvancedEnd=\htmlonly[block] </div> \endhtmlonly" \
|
||||
"cgalAdvancedFunction=This is an advanced function." \
|
||||
"cgalAdvancedClass=This is an advanced class." \
|
||||
"cgalRequiresCPP11=\warning This function requires a C++11 compiler." \
|
||||
|
|
@ -287,11 +287,11 @@ ALIASES = "sc{1}=<span style=\"font-variant: small-caps;\">\1</sp
|
|||
"cgalModifEnd=\htmlonly </div> \endhtmlonly \latexonly END MODIFICATIONS \endlatexonly" \
|
||||
"cgalPkgBib{1}=<B>BibTeX:</B> <a href=\"../Manual/how_to_cite_cgal.html#\1-${CGAL_RELEASE_YEAR_ID}\">\1-${CGAL_RELEASE_YEAR_ID}</a><BR>" \
|
||||
"cgalFootnote{1}=<span class=\"footnote\">\1</span>" \
|
||||
"cgalAutoToc=\htmlonly <div id=\"autotoc\" class=\"toc\"></div> \endhtmlonly" \
|
||||
"cgalAutoToc=\htmlonly[block] <div id=\"autotoc\" class=\"toc\"></div> \endhtmlonly" \
|
||||
"cgalTagTrue=\link CGAL::Tag_true `CGAL::Tag_true`\endlink" \
|
||||
"cgalTagFalse=\link CGAL::Tag_false `CGAL::Tag_false`\endlink" \
|
||||
"cgalHeading{1}= <B>\1</B><BR>" \
|
||||
"cgalClassifedRefPages=\htmlonly <h2 class=\"groupheader\">Classified Reference Pages</h2> \endhtmlonly" \
|
||||
"cgalClassifedRefPages=\htmlonly[block] <h2 class=\"groupheader\">Classified Reference Pages</h2> \endhtmlonly" \
|
||||
"cgalCite{1}=<!-- -->\cite \1"
|
||||
|
||||
# This tag can be used to specify a number of word-keyword mappings (TCL only).
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
<!-- HTML header for doxygen 1.8.13-->
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<link rel="icon" type="image/png" href="$relpath$../Manual/g-196x196-doc.png">
|
||||
<link rel="icon" type="image/png" href="$relpath$../Manual/g-196x196-doc.png"/>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen $doxygenversion"/>
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
<!-- HTML header for doxygen 1.8.13-->
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<link rel="icon" type="image/png" href="$relpath$../Manual/g-196x196-doc.png">
|
||||
<link rel="icon" type="image/png" href="$relpath$../Manual/g-196x196-doc.png"/>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen $doxygenversion"/>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<link rel="icon" type="image/png" href="$relpath$../Manual/g-196x196-doc.png">
|
||||
<link rel="icon" type="image/png" href="$relpath$../Manual/g-196x196-doc.png"/>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<link rel="icon" type="image/png" href="$relpath$../Manual/g-196x196-doc.png">
|
||||
<link rel="icon" type="image/png" href="$relpath$../Manual/g-196x196-doc.png"/>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ def conceptify_ns(d):
|
|||
def write_out_html(d, fn):
|
||||
f = codecs.open(fn, 'w', encoding='utf-8')
|
||||
# this is the normal doxygen doctype, which is thrown away by pyquery
|
||||
f.write('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n')
|
||||
f.write('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n')
|
||||
f.write('<html xmlns=\"http://www.w3.org/1999/xhtml\">')
|
||||
f.write(d.html())
|
||||
f.write('\n')
|
||||
|
|
|
|||
|
|
@ -69,19 +69,19 @@ public:
|
|||
result_type
|
||||
operator()(const Segment_2 &s, const Segment_2& t) const
|
||||
{
|
||||
return internal::do_intersect(s,t, SFK());
|
||||
return Intersections::internal::do_intersect(s,t, SFK());
|
||||
}
|
||||
|
||||
result_type
|
||||
operator()(const Point_2 &p, const Segment_2& t) const
|
||||
{
|
||||
return internal::do_intersect(p,t, SFK());
|
||||
return Intersections::internal::do_intersect(p,t, SFK());
|
||||
}
|
||||
|
||||
result_type
|
||||
operator()(const Segment_2& t, const Point_2 &p) const
|
||||
{
|
||||
return internal::do_intersect(p,t, SFK());
|
||||
return Intersections::internal::do_intersect(p,t, SFK());
|
||||
}
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
#include <CGAL/internal/Static_filters/Static_filter_error.h>
|
||||
#include <CGAL/internal/Static_filters/tools.h>
|
||||
|
||||
#include <CGAL/internal/Intersections_3/Bbox_3_Segment_3_do_intersect.h>
|
||||
#include <CGAL/Intersections_3/Bbox_3_Segment_3.h>
|
||||
// for CGAL::internal::do_intersect_bbox_segment_aux
|
||||
|
||||
#include <iostream>
|
||||
|
|
@ -89,13 +89,13 @@ public:
|
|||
result_type
|
||||
operator()(const Segment_3 &s, const Triangle_3& t) const
|
||||
{
|
||||
return internal::do_intersect(t,s, SFK());
|
||||
return Intersections::internal::do_intersect(t,s, SFK());
|
||||
}
|
||||
|
||||
result_type
|
||||
operator()(const Triangle_3& t, const Segment_3 &s) const
|
||||
{
|
||||
return internal::do_intersect(t,s, SFK());
|
||||
return Intersections::internal::do_intersect(t,s, SFK());
|
||||
}
|
||||
|
||||
result_type
|
||||
|
|
@ -124,7 +124,7 @@ public:
|
|||
CGAL_BRANCH_PROFILER_BRANCH_1(tmp);
|
||||
|
||||
const Uncertain<result_type> ub =
|
||||
do_intersect_bbox_segment_aux
|
||||
Intersections::internal::do_intersect_bbox_segment_aux
|
||||
<double,
|
||||
true, // bounded at t=0
|
||||
true, // bounded at t=1
|
||||
|
|
@ -167,7 +167,7 @@ public:
|
|||
CGAL_BRANCH_PROFILER_BRANCH_1(tmp);
|
||||
|
||||
const Uncertain<result_type> ub =
|
||||
do_intersect_bbox_segment_aux
|
||||
Intersections::internal::do_intersect_bbox_segment_aux
|
||||
<double,
|
||||
true, // bounded at t=0
|
||||
false,// not bounded at t=1
|
||||
|
|
|
|||
|
|
@ -277,7 +277,7 @@ triangle (2D and 3D) and in tetrahedra (3D). Basically, in order to generate
|
|||
a random point in a \f$N\f$-simplex (a triangle for \f$N = 2\f$, and tetrahedron
|
||||
for \f$N = 3\f$), we generate numbers \f$a_1,a_2,\ldots,a_N\f$ identically and independently
|
||||
uniformly distributed in \f$(0,1)\f$, we sort them, we let \f$a_0 = 0\f$ and \f$a_{N+1} = 1\f$,
|
||||
and then \f$a_{i+1}−a_i\f$, for \f$i = 1,\ldots,N\f$ becomes its
|
||||
and then \f$a_{i+1}-a_i\f$, for \f$i = 1,\ldots,N\f$ becomes its
|
||||
barycentric coordinates with respect to the simplex.
|
||||
|
||||
Maxime Gimemo introduced the random generators on 2D and 3D triangle meshes.
|
||||
|
|
|
|||
|
|
@ -151,6 +151,7 @@ void
|
|||
Random_points_in_cube_d<P>::
|
||||
generate_point() {
|
||||
typedef typename Kernel_traits<P>::Kernel::RT RT;
|
||||
CGAL_assume(dimension>0);
|
||||
std::vector<RT> coord(dimension);
|
||||
for(int i=0; i<dimension; ++i)
|
||||
coord[i]=RT(this->d_range * ( 2 * this->_rnd.get_double() - 1.0));
|
||||
|
|
|
|||
|
|
@ -288,8 +288,10 @@ int main()
|
|||
Polyhedron polyhedron;
|
||||
|
||||
// A cube
|
||||
make_hexahedron(Point_3(-0.5,-0.5,-0.5), Point_3(0.5,-0.5,-0.5), Point_3(0.5,0.5,-0.5), Point_3(-0.5,0.5,-0.5),
|
||||
Point_3(-0.5,0.5,0.5), Point_3(-0.5,-0.5,0.5), Point_3(0.5,-0.5,0.5), Point_3(0.5,0.5,0.5),
|
||||
make_hexahedron(
|
||||
Point_3(-0.5,-0.5,-0.5), Point_3(0.5,-0.5,-0.5), Point_3(0.5,0.5,-0.5),
|
||||
Point_3(-0.5,0.5,-0.5), Point_3(-0.5,0.5,0.5), Point_3(-0.5,-0.5,0.5),
|
||||
Point_3(0.5,-0.5,0.5), Point_3(0.5,0.5,0.5),
|
||||
polyhedron);
|
||||
|
||||
boost::graph_traits<Polyhedron>::halfedge_descriptor facets[6];
|
||||
|
|
|
|||
|
|
@ -363,19 +363,6 @@ operator<<(Geomview_stream& gs, const Bbox_2& b);
|
|||
Geomview_stream&
|
||||
operator<<(Geomview_stream& gs, const Bbox_3& b);
|
||||
|
||||
/*!
|
||||
Inserts the bounding box `b` into the stream `gs`.
|
||||
\relates Geomview_stream
|
||||
*/
|
||||
Geomview_stream&
|
||||
operator<<(Geomview_stream& gs, const Bbox_3& b);
|
||||
|
||||
/*!
|
||||
Inserts the bounding box `b` into the stream `gs`.
|
||||
\relates Geomview_stream
|
||||
*/
|
||||
Geomview_stream&
|
||||
operator<<(Geomview_stream& gs, const Bbox_3& b);
|
||||
|
||||
/// @}
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,10 @@ if(NOT POLICY CMP0070 AND POLICY CMP0053)
|
|||
cmake_policy(SET CMP0053 OLD)
|
||||
endif()
|
||||
|
||||
if(POLICY CMP0071)
|
||||
cmake_policy(SET CMP0071 NEW)
|
||||
endif()
|
||||
|
||||
find_package(CGAL COMPONENTS Qt5)
|
||||
|
||||
find_package(Qt5 QUIET COMPONENTS Xml Script OpenGL Svg)
|
||||
|
|
|
|||
|
|
@ -9,6 +9,10 @@ if(NOT POLICY CMP0070 AND POLICY CMP0053)
|
|||
cmake_policy(SET CMP0053 OLD)
|
||||
endif()
|
||||
|
||||
if(POLICY CMP0071)
|
||||
cmake_policy(SET CMP0071 NEW)
|
||||
endif()
|
||||
|
||||
find_package(CGAL COMPONENTS Qt5)
|
||||
|
||||
find_package(Qt5 QUIET COMPONENTS Xml Script OpenGL Svg)
|
||||
|
|
|
|||
|
|
@ -9,6 +9,10 @@ if(NOT POLICY CMP0070 AND POLICY CMP0053)
|
|||
cmake_policy(SET CMP0053 OLD)
|
||||
endif()
|
||||
|
||||
if(POLICY CMP0071)
|
||||
cmake_policy(SET CMP0071 NEW)
|
||||
endif()
|
||||
|
||||
find_package(CGAL COMPONENTS Qt5)
|
||||
|
||||
find_package(Qt5 QUIET COMPONENTS Xml Script OpenGL Svg)
|
||||
|
|
|
|||
|
|
@ -9,6 +9,10 @@ if(NOT POLICY CMP0070 AND POLICY CMP0053)
|
|||
cmake_policy(SET CMP0053 OLD)
|
||||
endif()
|
||||
|
||||
if(POLICY CMP0071)
|
||||
cmake_policy(SET CMP0071 NEW)
|
||||
endif()
|
||||
|
||||
find_package(CGAL COMPONENTS Qt5)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -8,6 +8,10 @@ if(NOT POLICY CMP0070 AND POLICY CMP0053)
|
|||
cmake_policy(SET CMP0053 OLD)
|
||||
endif()
|
||||
|
||||
if(POLICY CMP0071)
|
||||
cmake_policy(SET CMP0071 NEW)
|
||||
endif()
|
||||
|
||||
find_package(CGAL COMPONENTS Qt5)
|
||||
|
||||
find_package(Qt5 QUIET COMPONENTS Xml Script OpenGL Svg)
|
||||
|
|
|
|||
|
|
@ -8,6 +8,10 @@ if(NOT POLICY CMP0070 AND POLICY CMP0053)
|
|||
cmake_policy(SET CMP0053 OLD)
|
||||
endif()
|
||||
|
||||
if(POLICY CMP0071)
|
||||
cmake_policy(SET CMP0071 NEW)
|
||||
endif()
|
||||
|
||||
find_package(CGAL COMPONENTS Qt5)
|
||||
|
||||
find_package(Qt5 QUIET COMPONENTS Xml Script OpenGL Svg)
|
||||
|
|
|
|||
|
|
@ -9,6 +9,10 @@ if(NOT POLICY CMP0070 AND POLICY CMP0053)
|
|||
cmake_policy(SET CMP0053 OLD)
|
||||
endif()
|
||||
|
||||
if(POLICY CMP0071)
|
||||
cmake_policy(SET CMP0071 NEW)
|
||||
endif()
|
||||
|
||||
find_package(CGAL COMPONENTS Qt5)
|
||||
|
||||
find_package(Qt5 QUIET COMPONENTS Xml Script OpenGL Svg)
|
||||
|
|
|
|||
|
|
@ -85,8 +85,8 @@ public:
|
|||
FT delta_x = pp2->x() - pp1->x();
|
||||
FT delta_y = pp2->y() - pp1->y();
|
||||
|
||||
FT sign_x = CGAL::sign(delta_x);
|
||||
FT sign_y = CGAL::sign(delta_y);
|
||||
FT sign_x = (int)CGAL::sign(delta_x);
|
||||
FT sign_y = (int)CGAL::sign(delta_y);
|
||||
|
||||
FT abs_x = CGAL::abs(delta_x);
|
||||
FT abs_y = CGAL::abs(delta_y);
|
||||
|
|
|
|||
|
|
@ -9,6 +9,10 @@ if(NOT POLICY CMP0070 AND POLICY CMP0053)
|
|||
cmake_policy(SET CMP0053 OLD)
|
||||
endif()
|
||||
|
||||
if(POLICY CMP0071)
|
||||
cmake_policy(SET CMP0071 NEW)
|
||||
endif()
|
||||
|
||||
find_package(CGAL COMPONENTS Qt5)
|
||||
|
||||
find_package(Qt5 QUIET COMPONENTS Xml Script OpenGL Svg)
|
||||
|
|
|
|||
|
|
@ -6,6 +6,10 @@ if(NOT POLICY CMP0070 AND POLICY CMP0053)
|
|||
cmake_policy(SET CMP0053 OLD)
|
||||
endif()
|
||||
|
||||
if(POLICY CMP0071)
|
||||
cmake_policy(SET CMP0071 NEW)
|
||||
endif()
|
||||
|
||||
find_package(CGAL COMPONENTS Qt5)
|
||||
|
||||
|
||||
|
|
@ -30,12 +34,6 @@ qt5_add_resources ( CGAL_Qt5_RESOURCE_FILES ./Periodic_2_triangulation_2.qrc )
|
|||
qt5_generate_moc( Periodic_2_Delaunay_triangulation_2.cpp Periodic_2_triangulation_2.moc )
|
||||
|
||||
# find header files for projects that can show them
|
||||
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
if(NOT POLICY CMP0070 AND POLICY CMP0053)
|
||||
# Only set CMP0053 to OLD with CMake<3.10, otherwise there is a warning.
|
||||
cmake_policy(SET CMP0053 OLD)
|
||||
endif()
|
||||
file(GLOB headers "*.h")
|
||||
file(GLOB QT_headers "include/CGAL/Qt/*.h")
|
||||
file(GLOB P2T2_headers "../../../include/CGAL/*.h")
|
||||
|
|
|
|||
|
|
@ -9,6 +9,10 @@ if(NOT POLICY CMP0070 AND POLICY CMP0053)
|
|||
cmake_policy(SET CMP0053 OLD)
|
||||
endif()
|
||||
|
||||
if(POLICY CMP0071)
|
||||
cmake_policy(SET CMP0071 NEW)
|
||||
endif()
|
||||
|
||||
find_package(CGAL COMPONENTS Qt5 Core)
|
||||
|
||||
find_package(Eigen3 3.1.0) #(requires 3.1.0 or greater)
|
||||
|
|
|
|||
|
|
@ -9,6 +9,10 @@ if(NOT POLICY CMP0070 AND POLICY CMP0053)
|
|||
cmake_policy(SET CMP0053 OLD)
|
||||
endif()
|
||||
|
||||
if(POLICY CMP0071)
|
||||
cmake_policy(SET CMP0071 NEW)
|
||||
endif()
|
||||
|
||||
find_package(CGAL COMPONENTS Qt5 Core)
|
||||
|
||||
set( QT_USE_QTXML TRUE )
|
||||
|
|
|
|||
|
|
@ -9,6 +9,10 @@ if(NOT POLICY CMP0070 AND POLICY CMP0053)
|
|||
cmake_policy(SET CMP0053 OLD)
|
||||
endif()
|
||||
|
||||
if(POLICY CMP0071)
|
||||
cmake_policy(SET CMP0071 NEW)
|
||||
endif()
|
||||
|
||||
find_package(CGAL COMPONENTS Qt5 Core)
|
||||
|
||||
set( QT_USE_QTXML TRUE )
|
||||
|
|
|
|||
|
|
@ -9,6 +9,10 @@ if(NOT POLICY CMP0070 AND POLICY CMP0053)
|
|||
cmake_policy(SET CMP0053 OLD)
|
||||
endif()
|
||||
|
||||
if(POLICY CMP0071)
|
||||
cmake_policy(SET CMP0071 NEW)
|
||||
endif()
|
||||
|
||||
find_package(CGAL COMPONENTS Qt5)
|
||||
|
||||
find_package(Qt5 QUIET COMPONENTS Xml Script OpenGL Svg)
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue