diff --git a/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2/arr_hist.tex b/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2/arr_hist.tex index b3eed99ae71..1a010496e56 100644 --- a/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2/arr_hist.tex +++ b/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2/arr_hist.tex @@ -162,8 +162,8 @@ segments, as depicted in Figure~\ref{arr_fig:ex_24}, while maintaining the curve history. The example demonstrates the usage of the special traversal functions. It also shows how to issue point-location queries on the resulting arrangement, using the auxiliary function -\ccc{point_location_query()} defined in the header file -\ccc{point_location_utils.h} (see also Section~\ref{arr_ssec:pl}). +\ccc{locate_point()} defined in the header file +\ccc{point_location_utils.h}; see also Section~\ref{arr_ssec:pl}. \ccIncludeExampleCode{Arrangement_on_surface_2/curve_history.cpp} diff --git a/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2/arr_queries.tex b/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2/arr_queries.tex index 12fcf7ceec4..645e1df96e4 100644 --- a/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2/arr_queries.tex +++ b/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2/arr_queries.tex @@ -19,16 +19,18 @@ The \ccc{Arrangement_2} class template does not support point-location queries directly, as the arrangement representation is decoupled from the geometric algorithms that operate on it. The \emph{2D Arrangements} package includes a set of classe templates that are capable of -answering such queries; all are models of the concept +answering such queries; all are models of the concept \ccc{ArrangementPointLocation_2}. Each model employs a different algorithm or \emph{strategy} for answering queries. A model of this -concept must define the \ccc{locate()} member function, which accepts an -input query-point and returns a polymorphic object representing the -arrangement cell that contains this point. The returned object, which is -of type \ccc{CGAL::Object}, can be assigned to a \ccc{Face_const_handle}, -a \ccc{Halfedge_const_handle}, or a \ccc{Vertex_const_handle}, depending -on whether the query point is located inside a face, on an edge, or on a -vertex. +concept must define the \ccc{locate()} member function, which accepts +an input query-point and returns an object that represents the +arrangement cell that contains this point. This object is is type +\ccc{Arr_point_location_result::Type}---a discriminated +union container of the bounded types \ccc{Vertex_const_handle}, +\ccc{Halfedge_const_handle}, or \ccc{Face_const_handle}. Depending on +whether the query point is located inside a face, on an edge, or on a +vertex, the appropriate handle can be obtained With \emph{value retrieval} +by \ccc{boost::get} as demonstrated in the example below. Note that the handles returned by the \ccc{locate()} functionss are non-mutable (\ccc{const}). If necessary, such handles may @@ -68,9 +70,9 @@ The function template \ccc{locate_point()} calls an instance of the function template \ccc{print_point_location()}, which inserts the result of the query into the standard output-stream. It is listed below, and defined in the header file \ccc{point_location_utils.h}. -Observe how the function \ccc{assign()} is used to cast the -resulting \ccc{CGAL::Object} into a handle to an arrangement feature. -The point-location object \ccc{pl} is assumed to be already attached +Observe how the function \ccc{boost::get()} is used to cast the +resulting object into a handle to an arrangement feature. The +point-location object \ccc{pl} is assumed to be already attached to an arrangement. \begin{alltt} @@ -91,13 +93,13 @@ print_point_location const Face_const_handle* f; std::cout << "The point (" << q << ") is located "; - if (f = boost::get(&(*obj))) // located inside a face + if (f = boost::get(&obj)) // located inside a face std::cout << "inside " << (((*f)->is_unbounded()) ? "the unbounded" : "a bounded") << " face." << std::endl; - else if (e = boost::get(&(*obj))) // located on an edge + else if (e = boost::get(&obj)) // located on an edge std::cout << "on an edge: " << (*e)->curve() << std::endl; - else if (v = boost::get(&(*obj))) // located on a vertex + else if (v = boost::get(&obj)) // located on a vertex std::cout << "on " << (((*v)->is_isolated()) ? "an isolated" : "a") << " vertex: " << (*v)->point() << std::endl; else CGAL_error_msg("Invalid object."); @@ -249,14 +251,15 @@ that it hits a vertex, or that the arrangement does not have any vertex or edge lying directly above (or below) the query point. All point-location classes listed in the previous section are also -models of the \ccc{ArrangementVerticalRayShoot_2} concept. That is, t -hey all have member functions called \ccc{ray_shoot_up(q)} and +models of the \ccc{ArrangementVerticalRayShoot_2} concept. That is, +they all have member functions called \ccc{ray_shoot_up(q)} and \ccc{ray_shoot_down(q)} that accept a query point $q$. These functions -output a polymorphic object of type \ccc{CGAL::Object}, which wraps a -\ccc{Halfedge_const_handle}, a \ccc{Vertex_const_handle}, or a -\ccc{Face_const_handle} object. The latter type is used for the -unbounded face of the arrangement, in case there is no edge or -vertex lying directly above (or below) $q$. +output an object of type type +\ccc{Arr_point_location_result::Type}---a discriminated +union container of the bounded types \ccc{Vertex_const_handle}, +\ccc{Halfedge_const_handle}, or \ccc{Face_const_handle}. The latter type +is used for the unbounded face of the arrangement, in case there is no +edge or vertex lying directly above (or below) $q$. The function template \ccc{vertical_ray_shooting_query()} listed below accepts a vertical ray-shooting object, the type of which @@ -288,12 +291,12 @@ void shoot_vertical_ray(const RayShoot& vrs, const Face_const_handle* f; std::cout << "Shooting up from (" << q << ") : "; - if (v = boost::get(&(*obj))) // we hit a vertex + if (v = boost::get(&obj)) // we hit a vertex std::cout << "hit " << (((*v)->is_isolated()) ? "an isolated" : "a") << " vertex: " << (*v)->point() << std::endl; - else if (e = boost::get(&(*obj))) // we hit an edge + else if (e = boost::get(&obj)) // we hit an edge std::cout << "hit an edge: " << (*e)->curve() << std::endl; - else if (f = boost::get(&(*obj))) \{ // we hit nothing + else if (f = boost::get(&obj)) \{ // we hit nothing CGAL_assertion((*f)->is_unbounded()); std::cout << "hit nothing." << std::endl; \} @@ -332,7 +335,7 @@ Alternatively, the \emph{2D Arrangement} package includes a free query points as its input and sweeps through the arrangement to locate all query points in one pass. The function outputs the query results as pairs, where each pair consists of a query point -and a polymorphic object \ccc{CGAL::Object}, which represents the +and a discriminated union container, which represents the cell containing the point; see Section~\ref{arr_ssec:pl}. The output pairs are sorted in increasing $xy$-lexicographical order of the query point. diff --git a/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/Arr_landmarks_point_location.tex b/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/Arr_landmarks_point_location.tex index 3640ebca1bf..5337c18407e 100644 --- a/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/Arr_landmarks_point_location.tex +++ b/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/Arr_landmarks_point_location.tex @@ -55,8 +55,16 @@ insertions of curves and not deletions of them. \ccInclude{CGAL/Arr_landmarks_point_location.h} \ccIsModel - \ccc{ArrangementPointLocation_2} \\ - \ccc{ArrangementVerticalRayShoot_2} +%============ +\ccc{ArrangementPointLocation_2}\\ +\ccc{ArrangementVerticalRayShoot_2} + +\ccSeeAlso +%============ +\ccRefConceptPage{ArrangementPointLocation_2}\\ +\ccRefConceptPage{ArrangementVerticalRayShoot_2}\\ +\ccRefIdfierPage{CGAL::Arr_point_location_result}\\ +\ccRefIdfierPage{CGAL_ARR_POINT_LOCATION_VERSION} \end{ccRefClass} diff --git a/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/Arr_naive_point_location.tex b/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/Arr_naive_point_location.tex index 0c18c50d64e..d4a10063ac6 100644 --- a/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/Arr_naive_point_location.tex +++ b/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/Arr_naive_point_location.tex @@ -13,8 +13,7 @@ \ccDefinition %============ - -The \ccRefName\ class implements a naive algorithm that traverses +The \ccRefName{} class implements a naive algorithm that traverses all the vertices and halfedges in the arrangement in search for an answer to a point-location query. The query time is therefore linear in the complexity of the arrangement. @@ -24,9 +23,17 @@ time-consuming process when applied to dense arrangements. \ccInclude{CGAL/Arr_naive_point_location.h} \ccIsModel - \ccc{ArrangementPointLocation_2} \\ - \ccc{ArrangementVerticalRayShoot_2} +%============ +\ccc{ArrangementPointLocation_2} \\ +\ccc{ArrangementVerticalRayShoot_2} +\ccSeeAlso +%============ +\ccRefConceptPage{ArrangementPointLocation_2}\\ +\ccRefConceptPage{ArrangementVerticalRayShoot_2}\\ +\ccRefIdfierPage{CGAL::Arr_point_location_result}\\ +\ccRefIdfierPage{CGAL_ARR_POINT_LOCATION_VERSION} + \end{ccRefClass} \ccRefPageEnd diff --git a/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/Arr_point_location.tex b/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/Arr_point_location.tex index 4c9f46670f0..147ab32dd21 100644 --- a/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/Arr_point_location.tex +++ b/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/Arr_point_location.tex @@ -13,12 +13,22 @@ \ccDefinition %============ -A model of the \ccRefName\ concept can be attached to an \ccc{Arrangement_2} -instance and answer point-location queries on this arrangement. Namely, given -a \ccc{Arrangement_2::Point_2} object, representing a point in the plane, -it returns the arrangement cell containing it. In the general case, the -query point is contained inside an arrangement face, but in degenerate -situations it may lie on an edge or coincide with an arrangement vertex. +A model of the \ccRefName{} concept can answer point-location queries on +an arrangement attched to it. Namely, given a \ccc{Arrangement_2::Point_2} +object, representing a point in the plane, it returns the arrangement cell +containing it. In the general case, the query point is contained inside an +arrangement face, but in degenerate situations it may lie on an edge or +coincide with an arrangement vertex. + +\paragraph{A note on Backwards compatibility} +The \ccc{locate} member function used to return \ccc{CGAL::Object} up to +\cgal{} version~3.9. Starting with \cal{} version~4.0 the return type +is determined by a metafunction. To preserve backwards compatibility +\ccc{CGAL::Object} can be constructed from the new return types +implicitly, but switching to the new style is recommended. To enable +the old style without any overhead, the macro +\ccc{CGAL_ARR_POINT_LOCATION_VERSION} can be defined to 1 before any +\cgal{} header is included. \ccTypes %======= @@ -33,19 +43,17 @@ situations it may lie on an edge or coincide with an arrangement vertex. \ccConstructor{ArrangementPointLocation_2();}{default constructor.} -\ccConstructor{ArrangementPointLocation_2 (const Arrangement_2& arr);} +\ccConstructor{ArrangementPointLocation_2(const Arrangement_2& arr);} {constructs a point-location object \ccVar{} attached to the given arrangement \ccc{arr}.} \ccQueryFunctions %================ - -\ccThree{Object}{locate}{} -\ccMethod{Object locate (const Point_2& q) const;} +\ccThree{Arr_point_location_result::Type}{locate}{} +\ccMethod{Arr_point_location_result::Type locate(const Point_2& q) const;} {locates the arrangement cell that contains the query point \ccc{q} - and returns a handle for this cell. - The function returns an \ccc{Object} instance that wraps either of the - following types: + and returns a discriminated union container of the following bounded + types: \begin{itemize} \item \ccc{Arrangement_2::Face_const_handle}, in case \ccc{q} is contained inside an arrangement face; @@ -54,24 +62,31 @@ situations it may lie on an edge or coincide with an arrangement vertex. \item \ccc{Arrangement_2::Vertex_const_handle}, in case \ccc{q} coincides with an arrangement vertex. \end{itemize} - \ccPrecond{\ccVar{} is attached to a valid arrangement instance.}} + \ccPrecond{\ccVar{} is attached to a valid arrangement object.}} \ccOperations %============ - -\ccMethod{void attach (const Arrangement_2& arr);} +\ccMethod{void attach(const Arrangement_2& arr);} {attaches \ccVar{} to the given arrangement \ccc{arr}.} -\ccMethod{void detach ();} +\ccMethod{void detach();} {detaches \ccVar{} from the arrangement it is currently attached to.} \ccHasModels %=========== - \ccc{Arr_naive_point_location}\\ -\ccc{Arr_walk_along_a_line_point_location} \\ +\ccc{Arr_walk_along_line_point_location} \\ \ccc{Arr_trapezoid_ric_point_location}\\ -\ccc{Arr_landmarks_point_location}\\ +\ccc{Arr_landmarks_point_location} + +\ccSeeAlso +%=========== +\ccRefIdfierPage{CGAL::Arr_naive_point_location}\\ +\ccRefIdfierPage{CGAL::Arr_walk_along_line_point_location} \\ +\ccRefIdfierPage{CGAL::Arr_trapezoid_ric_point_location}\\ +\ccRefIdfierPage{CGAL::Arr_landmarks_point_location}\\ +\ccRefIdfierPage{CGAL::Arr_point_location_result}\\ +\ccRefIdfierPage{CGAL_ARR_POINT_LOCATION_VERSION} \end{ccRefConcept} diff --git a/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/Arr_trapezoid_ric_point_location.tex b/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/Arr_trapezoid_ric_point_location.tex index 202e78f0167..b303171abe1 100644 --- a/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/Arr_trapezoid_ric_point_location.tex +++ b/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/Arr_trapezoid_ric_point_location.tex @@ -13,7 +13,6 @@ \ccDefinition %============ - The \ccRefName\ class implements the incremental randomized algorithm introduced by Mulmuley~\cite{m-fppa-90} as presented by Seidel~\cite{s-sfira-91} (see also~\cite[Chapter~6]{bkos-cgaa-00}). @@ -34,8 +33,16 @@ is relatively large. \ccInclude{CGAL/Arr_trapezoid_ric_point_location.h} \ccIsModel - \ccc{ArrangementPointLocation_2} \\ - \ccc{ArrangementVerticalRayShoot_2} +%============ +\ccc{ArrangementPointLocation_2}\\ +\ccc{ArrangementVerticalRayShoot_2} + +\ccSeeAlso +%============ +\ccRefConceptPage{ArrangementPointLocation_2}\\ +\ccRefConceptPage{ArrangementVerticalRayShoot_2}\\ +\ccRefIdfierPage{CGAL::Arr_point_location_result} +\ccRefIdfierPage{CGAL_ARR_POINT_LOCATION_VERSION} \end{ccRefClass} diff --git a/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/Arr_vertical_ray_shoot.tex b/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/Arr_vertical_ray_shoot.tex index 7200eb6b1fc..96e9945aef2 100644 --- a/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/Arr_vertical_ray_shoot.tex +++ b/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/Arr_vertical_ray_shoot.tex @@ -13,19 +13,30 @@ \ccDefinition %============ -A model of the \ccRefName\ concept can be attached to an \ccc{Arrangement_2} -instance and answer vertical ray-shooting queries on this arrangement. -Namely, given a \ccc{Arrangement_2::Point_2} object, representing a point in -the plane, it returns the arrangement feature (edge or vertex) that lies +A model of the \ccRefName{} concept can answer vertical ray-shooting +queries on an arrangement attached to it. Namely, given a +\ccc{Arrangement_2::Point_2} object, representing a point in the plane, +it returns the arrangement feature (edge or vertex) that lies strictly above it (or below it). By ``strictly'' we mean that if the -query point lies on an arrangement edge (or on an arrangement vertex) this -edge will {\em not} be the query result, but the feature lying above or -below it. (An exception to this rule is the degenerate situation where the -query point lies in the interior of a vertical edge.) Note that it may happen -that the query point lies above the upper envelope (or below the lower -envelope) of the arrangement, so that the vertical ray emanating from it -may go to infinity without hitting any arrangement feature on its way. In this -case the unbounded face is returned. +query point lies on an arrangement edge (or on an arrangement vertex) +this edge will \emph{not} be the query result, but the feature lying +above or below it. (An exception to this rule is the degenerate case +where the query point lies in the interior of a vertical edge.) Note +that it may happen that the query point lies above the upper envelope +(or below the lower envelope) of the arrangement, and the vertical ray +emanating from the query point goes to infinity without hitting any +arrangement feature on its way. In this case the unbounded face is +returned. + +\paragraph{A note on Backwards compatibility} +The \ccc{ray_shoot_up} and \ccc{ray_shoot_down} member functions used +to return \ccc{CGAL::Object} up to \cgal{} version~3.9. Starting with +\cal{} version~4.0 the return type is determined by a metafunction. To +preserve backwards compatibility \ccc{CGAL::Object} can be constructed +from the new return types implicitly, but switching to the new style +is recommended. To enable the old style without any overhead, the macro +\ccc{CGAL_ARR_POINT_LOCATION_VERSION} can be defined to 1 before any +\cgal{} header is included. \ccTypes %======= @@ -47,12 +58,12 @@ case the unbounded face is returned. \ccQueryFunctions %================ -\ccMethod{Object ray_shoot_up (const Point_2& q) const;} +\ccThree{Arr_point_location_result::Type}{locate}{} +\ccMethod{Arr_point_location_result::Type ray_shoot_up(const Point_2& q) const;} {locates the arrangement feature that is first hit by an upward-directed vertical ray emanating from the query point \ccc{q}, - and returns a handle for this feature. - The function returns an \ccc{Object} instance that is a wrapper for - one of the following types: + and returns a handle for this feature. The function returns a + discriminated union container of the following bounded types: \begin{itemize} \item \ccc{Arrangement_2::Halfedge_const_handle}, in case the vertical ray hits an arrangement edge; @@ -64,12 +75,11 @@ case the unbounded face is returned. \end{itemize} \ccPrecond{\ccVar{} is attached to a valid arrangement instance.}} -\ccMethod{Object ray_shoot_down (const Point_2& q) const;} +\ccMethod{Arr_point_location_result::Type ray_shoot_down (const Point_2& q) const;} {locates the arrangement feature that is first hit by a downward-directed vertical ray emanating from the query point \ccc{q}, - and returns a handle for this feature. - The function returns an \ccc{Object} instance that is a wrapper for - one of the following types: + and returns a handle for this feature. The function returns a + discriminated union container of the following bounded types: \begin{itemize} \item \ccc{Arrangement_2::Halfedge_const_handle}, in case the vertical ray hits an arrangement edge; @@ -92,11 +102,19 @@ case the unbounded face is returned. \ccHasModels %=========== - \ccc{Arr_naive_point_location}\\ -\ccc{Arr_walk_along_a_line_point_location} \\ +\ccc{Arr_walk_along_line_point_location} \\ \ccc{Arr_trapezoid_ric_point_location}\\ -\ccc{Arr_landmarks_point_location}\\ +\ccc{Arr_landmarks_point_location} + +\ccSeeAlso +%=========== +\ccRefIdfierPage{CGAL::Arr_naive_point_location}\\ +\ccRefIdfierPage{CGAL::Arr_walk_along_line_point_location} \\ +\ccRefIdfierPage{CGAL::Arr_trapezoid_ric_point_location}\\ +\ccRefIdfierPage{CGAL::Arr_landmarks_point_location}\\ +\ccRefIdfierPage{CGAL::Arr_point_location_result}\\ +\ccRefIdfierPage{CGAL_ARR_POINT_LOCATION_VERSION} \end{ccRefConcept} diff --git a/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/Arr_walk_along_a_line_point_location.tex b/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/Arr_walk_along_a_line_point_location.tex index 53b30785ef2..4b63792d7d7 100644 --- a/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/Arr_walk_along_a_line_point_location.tex +++ b/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/Arr_walk_along_a_line_point_location.tex @@ -13,8 +13,7 @@ \ccDefinition %============ - -The \ccRefName\ class implements a very simple point-location (and +The \ccRefName{} class implements a very simple point-location (and vertical ray-shooting) strategy that improves the naive one. The algorithm considers an imaginary vertical ray emanating from the query point, and simulates a walk along the zone of this ray, starting @@ -34,8 +33,16 @@ of issued queries is not large. \ccInclude{CGAL/Arr_walk_along_line_point_location.h} \ccIsModel - \ccc{ArrangementPointLocation_2} \\ - \ccc{ArrangementVerticalRayShoot_2} +%============ +\ccc{ArrangementPointLocation_2}\\ +\ccc{ArrangementVerticalRayShoot_2} + +\ccSeeAlso +%============ +\ccRefConceptPage{ArrangementPointLocation_2}\\ +\ccRefConceptPage{ArrangementVerticalRayShoot_2}\\ +\ccRefIdfierPage{CGAL::Arr_point_location_result}\\ +\ccRefIdfierPage{CGAL_ARR_POINT_LOCATION_VERSION} \end{ccRefClass} diff --git a/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/arr_locate.tex b/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/arr_locate.tex index bbbd0e77960..2210038ee02 100644 --- a/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/arr_locate.tex +++ b/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/arr_locate.tex @@ -7,30 +7,45 @@ The function \ccRefName{} performs a batched point-location operation on a given arrangement. It accepts a range of query points, and locates each point in the arrangement. The query results are returned through the output -iterator. Each result is given as a pair of the query point and an object -representing the arrangement feature that contains it, namely an -\ccc{Object} that may be either \ccc{Face_const_handle}, -\ccc{Halfedge_const_handle}, or \ccc{Vertex_const_hanlde}. The resulting +iterator. Each query result is given as a pair of the query point and an +object representing the arrangement feature that contains it, namely a +discriminated union container of the bounded types\ccc{Face_const_handle}, +\ccc{Halfedge_const_handle}, and \ccc{Vertex_const_hanlde}. The resulting pairs in the output sequence are sorted in increasing $xy$-lexicographical order of the query points. The function returns a past-the-end iterator of the output sequence. +\paragraph{A note on Backwards compatibility} +The function \ccRefName{} used to return \ccc{CGAL::Object} up to +\cgal{} version~3.9. Starting with \cal{} version~4.0 the return type +is determined by a metafunction. To preserve backwards compatibility +\ccc{CGAL::Object} can be constructed from the new return types +implicitly, but switching to the new style is recommended. To enable +the old style without any overhead, the macro +\ccc{CGAL_ARR_POINT_LOCATION_VERSION} can be defined to 1 before any +\cgal{} header is included. + \ccInclude{CGAL/Arr_batched_point_location.h} \ccGlobalFunction{template - OutputIterator locate (const Arrangement_2& arr, - PointsIterator points_begin, - PointsIterator points_end, - OutputIterator oi);} + typename inputIterator, typename OutputIterator> + OutputIterator locate (const Arrangement_2& arr, + inputIterator points_begin, + inputIterator points_end, + OutputIterator oi);} \ccRequirements \begin{itemize} -\item \ccc{InputIterator::value_type} must be \ccc{Traits::Point_2}. -\item \ccc{OutputIterator::value_type} must be - \ccc{std::pair}. +\item \ccc{InputIterator::value_type} must be \ccc{Arrangement_2::Point_2}. +\item \ccc{*OutputIterator} must be convertible to + \ccc{std::pair::Type>}. \end{itemize} +\ccSeeAlso +%============ +\ccRefIdfierPage{CGAL::Arr_point_location_result}\\ +\ccRefIdfierPage{CGAL_ARR_POINT_LOCATION_VERSION} + \end{ccRefFunction} \ccRefPageEnd diff --git a/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/intro.tex b/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/intro.tex index fbdfe854b97..66027bf6837 100644 --- a/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/intro.tex +++ b/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/intro.tex @@ -130,7 +130,8 @@ implemented as peripheral classes or as free (global) functions. \ccRefIdfierPage{CGAL::Arr_naive_point_location}\\ \ccRefIdfierPage{CGAL::Arr_walk_along_line_point_location}\\ \ccRefIdfierPage{CGAL::Arr_trapezoid_ric_point_location}\\ -\ccRefIdfierPage{CGAL::Arr_landmarks_point_location} +\ccRefIdfierPage{CGAL::Arr_landmarks_point_location}\\ +\ccRefIdfierPage{CGAL::Arr_point_location_result}\\ \subsection*{Tags} @@ -161,3 +162,7 @@ implemented as peripheral classes or as free (global) functions. \ccc{CGAL::operator>>} {\lcRawHtml{(go there)} \lcTex{\dotfill page~\pageref{ref_arr_operator_rightshift}}} + +\subsection*{Macros} + +\ccRefIdfierPage{CGAL_ARR_POINT_LOCATION_VERSION} diff --git a/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/main.tex b/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/main.tex index 5b46db53339..d308bc33ff5 100644 --- a/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/main.tex +++ b/Arrangement_on_surface_2/doc_tex/Arrangement_on_surface_2_ref/main.tex @@ -69,6 +69,8 @@ \input{Arrangement_on_surface_2_ref/Arr_extended_dcel_text_formatter.tex} \input{Arrangement_on_surface_2_ref/Arr_point_location.tex} \input{Arrangement_on_surface_2_ref/Arr_vertical_ray_shoot.tex} +\input{Arrangement_on_surface_2_ref/Arr_point_location_version.tex} +\input{Arrangement_on_surface_2_ref/Arr_point_location_result.tex} \input{Arrangement_on_surface_2_ref/Arr_naive_point_location.tex} \input{Arrangement_on_surface_2_ref/Arr_walk_along_a_line_point_location.tex} \input{Arrangement_on_surface_2_ref/Arr_trapezoid_ric_point_location.tex}