mirror of https://github.com/CGAL/cgal
88 lines
1.5 KiB
C++
88 lines
1.5 KiB
C++
|
|
namespace CGAL {
|
|
|
|
/*!
|
|
\ingroup PkgRangeSegmentTreesD
|
|
|
|
`Tree_anchor` is also derived from `Tree_base`. Therefore, it provides
|
|
the same methods as `Range_tree_d` and `Segment_tree_d`, but does
|
|
nothing; it can be used as a recursion anchor for those
|
|
classes. Therefore, instantiate `Sublayer_type` of `Range_tree_d`
|
|
(`Segment_tree_d` respectively) with `Tree_anchor` and the container
|
|
classes for the data items (`Data` and `Window`).
|
|
|
|
\cgalHeading{Example}
|
|
|
|
The following figures show a number of rectangles and a 2-dimensional
|
|
segment tree built on them.
|
|
|
|
\image html segment_ex2.png "Two dimensional interval data and the corresponding segment tree."
|
|
\image latex segment_ex2.png "Two dimensional interval data and the corresponding segment tree."
|
|
*/
|
|
template< typename Data, typename Window >
|
|
class Tree_anchor : public Tree_base {
|
|
public:
|
|
|
|
/// \name Types
|
|
/// @{
|
|
|
|
/*!
|
|
container `Data`.
|
|
*/
|
|
typedef unspecified_type Data;
|
|
|
|
/*!
|
|
container `Window`.
|
|
*/
|
|
typedef unspecified_type Window;
|
|
|
|
/// @}
|
|
|
|
/// \name Creation
|
|
/// @{
|
|
|
|
/*!
|
|
|
|
*/
|
|
Tree_anchor<Data, Window> a();
|
|
|
|
/// @}
|
|
|
|
/// \name Operations
|
|
/// @{
|
|
|
|
/*!
|
|
|
|
*/
|
|
template<class OutputIterator>
|
|
OutputIterator window_query(Window win, OutputIterator result);
|
|
|
|
/*!
|
|
|
|
*/
|
|
template<class OutputIterator>
|
|
OutputIterator enclosing_query(Window win, OutputIterator result);
|
|
|
|
/*!
|
|
returns true;
|
|
*/
|
|
bool is_valid();
|
|
|
|
protected:
|
|
|
|
/*!
|
|
returns true.
|
|
*/
|
|
bool is_inside(Window win,
|
|
Data object);
|
|
|
|
/*!
|
|
returns true.
|
|
*/
|
|
bool is_anchor();
|
|
|
|
/// @}
|
|
|
|
}; /* end Tree_anchor */
|
|
} /* end namespace CGAL */
|