\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)
CGAL 4.13 - dD Spatial Searching
CGAL::Fuzzy_sphere< Traits > Class Template Reference

#include <CGAL/Fuzzy_sphere.h>

Definition

The class Fuzzy_sphere implements fuzzy d-dimensional spheres.

A fuzzy sphere with radius \( r\) and fuzziness value \( \epsilon\) has as inner approximation a sphere with radius \( r-\epsilon\) and as outer approximation a sphere with radius \( r+\epsilon\). Points are returned depending on their location respective to the approximations, as follows:

  • points in the inner approximation (boundary included) are always returned.
  • points in the outer approximation (boundary included) and not in the previous category may or may not be returned.
  • points that do not fit in the two previous categories are never returned.

Note that if the fuzziness value is strictly greater than the radius, there is no inner approximation.

Template Parameters
Traitsmust be a model of the concept SearchTraits, for example CGAL::Cartesian_d<double>.
Is Model Of:
FuzzyQueryItem
Examples:
Spatial_searching/circular_query.cpp, Spatial_searching/fuzzy_range_query.cpp, and Spatial_searching/searching_with_circular_query.cpp.

Types

typedef unspecified_type D
 Dimension Tag.
 
typedef Traits::Point_d Point_d
 Point type.
 
typedef Traits::FT FT
 Number type.
 

Creation

 Fuzzy_sphere (Point_d center, FT radius, FT epsilon=FT(0), Traits t=Traits())
 Construct a fuzzy sphere centered at center with radius radius and fuzziness value epsilon.
 
 Fuzzy_sphere (Traits::Base::Point_d center, FT radius, FT epsilon=FT(0), Traits t=Traits())
 Construct a fuzzy sphere centered at center with radius radius and fuzziness value epsilon. More...
 

Operations

bool contains (const Point_d &p) const
 Test whether the fuzzy sphere contains p. More...
 
bool inner_range_intersects (const Kd_tree_rectangle< FT, D > &rectangle) const
 Test whether the inner sphere intersects the rectangle associated with a node of a tree. More...
 
bool outer_range_contains (const Kd_tree_rectangle< FT, D > &rectangle) const
 Test whether the outer sphere encloses the rectangle associated with a node of a tree. More...
 

Constructor & Destructor Documentation

◆ Fuzzy_sphere()

template<typename Traits >
CGAL::Fuzzy_sphere< Traits >::Fuzzy_sphere ( Traits::Base::Point_d  center,
FT  radius,
FT  epsilon = FT(0),
Traits  t = Traits() 
)

Construct a fuzzy sphere centered at center with radius radius and fuzziness value epsilon.

Attention
Only available in case Traits is Search_traits_adapter<Key,PointPropertyMap,BaseTraits>.

Member Function Documentation

◆ contains()

template<typename Traits >
bool CGAL::Fuzzy_sphere< Traits >::contains ( const Point_d p) const

Test whether the fuzzy sphere contains p.

That is, whether the distance between the center of the fuzzy sphere and p is less than \( r\).

◆ inner_range_intersects()

template<typename Traits >
bool CGAL::Fuzzy_sphere< Traits >::inner_range_intersects ( const Kd_tree_rectangle< FT, D > &  rectangle) const

Test whether the inner sphere intersects the rectangle associated with a node of a tree.

That is, whether the minimal distance between the center of the fuzzy sphere and rectangle is less than \( r-\epsilon\).

◆ outer_range_contains()

template<typename Traits >
bool CGAL::Fuzzy_sphere< Traits >::outer_range_contains ( const Kd_tree_rectangle< FT, D > &  rectangle) const

Test whether the outer sphere encloses the rectangle associated with a node of a tree.

That is, whether the maximal distance between the center of the fuzzy sphere and rectangle is less than \( r+\epsilon\).