\( \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 - dD Spatial Searching
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
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\).

Attention
The fuzziness of a Fuzzy_sphere is specified by a parameter \( \epsilon\) denoting a maximal allowed distance to the boundary of a sphere. If the distance to the boundary is greater than \( \epsilon\), points inside the object are always reported and points outside the sphere are never reported. Points whose distance to the boundary is less than or equal to \( \epsilon\) may or may not be reported. Subsequently, points on the inner and outer spheres may or may not be reported. Specifically when \( \epsilon = 0\), points on the sphere of radius \( r\) may or may not be reported.
Template Parameters
Traitsmust be a model of the concept SearchTraits, for example CGAL::Cartesian_d<double>.
Is Model Of:
FuzzyQueryItem
See Also
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

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

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\).

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\).

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\).