cgal/Spatial_searching/doc/Spatial_searching/Concepts/Splitter.h

69 lines
1.5 KiB
C++

/*!
\ingroup PkgSpatialSearchingDConcepts
\cgalConcept
\cgalAdvancedConcept
\cgalAdvancedBegin
The concept `Splitter` defines the requirements for a function object class implementing a splitting rule.
\cgalAdvancedEnd
\cgalHasModel `CGAL::Fair<Traits, SpatialSeparator>`
\cgalHasModel `CGAL::Median_of_rectangle<Traits, SpatialSeparator>`
\cgalHasModel `CGAL::Median_of_max_spread<Traits, SpatialSeparator>`
\cgalHasModel `CGAL::Midpoint_of_rectangle<Traits, SpatialSeparator>`
\cgalHasModel `CGAL::Midpoint_of_max_spread<Traits, SpatialSeparator>`
\cgalHasModel `CGAL::Sliding_fair<Traits, SpatialSeparator>`
\cgalHasModel `CGAL::Sliding_midpoint<Traits, SpatialSeparator>`
*/
class Splitter {
public:
/// \name Types
/// The parameters `aspect_ratio` and `bucket_size` define the way in which \f$k\f$ - \f$d\f$ tree is constructed.
/// @{
/*!
Number type.
*/
typedef unspecified_type FT;
/*!
Separator.
*/
typedef unspecified_type Separator;
/*!
Typedef to an instantiation of `CGAL::Point_container<Traits>`.
*/
typedef unspecified_type Container;
/// @}
/// \name Operations
/// @{
/*!
Returns the maximal ratio between the largest and smallest side
of a cell allowed for fair splitting.
*/
FT aspect_ratio() const;
/*!
Returns the bucket size of the leaf nodes.
*/
unsigned int bucket_size() const;
/*!
Sets up `sep` and splits points of `c0` into `c0` and `c1` using `sep`.
Container `c0` should contain at least two points and `c1` must be empty.
*/
void operator()(Separator& sep, Container& c0, Container& c1) const;
/// @}
}; /* end Splitter */