Support Forum       G3D Web Page     
Public Member Functions | Public Attributes | List of all members
G3D::KDTree< T, BoundsFunc, HashFunc, EqualsFunc >::Handle Class Reference

Wrapper for a value that includes a cache of its bounds. More...

Public Member Functions

 Handle ()
 
 Handle (const T &v)
 
size_t hashCode () const
 
bool operator== (const Handle &other) const
 

Public Attributes

AABox bounds
 The bounds of each object are constrained to AABox::large. More...
 
Vector3 center
 Center of bounds. More...
 
value
 

Detailed Description

template<class T, class BoundsFunc = BoundsTrait<T>, class HashFunc = HashTrait<T>, class EqualsFunc = EqualsTrait<T>>
class G3D::KDTree< T, BoundsFunc, HashFunc, EqualsFunc >::Handle

Wrapper for a value that includes a cache of its bounds.

Except for the test value used in a set-query operation, there is only ever one instance of the handle associated with any value and the memberTable and Nodes maintain pointers to that heap-allocated value.

Constructor & Destructor Documentation

◆ Handle() [1/2]

template<class T , class BoundsFunc = BoundsTrait<T>, class HashFunc = HashTrait<T>, class EqualsFunc = EqualsTrait<T>>
G3D::KDTree< T, BoundsFunc, HashFunc, EqualsFunc >::Handle::Handle ( )
inline

◆ Handle() [2/2]

template<class T , class BoundsFunc = BoundsTrait<T>, class HashFunc = HashTrait<T>, class EqualsFunc = EqualsTrait<T>>
G3D::KDTree< T, BoundsFunc, HashFunc, EqualsFunc >::Handle::Handle ( const T &  v)
inline

Member Function Documentation

◆ hashCode()

template<class T , class BoundsFunc = BoundsTrait<T>, class HashFunc = HashTrait<T>, class EqualsFunc = EqualsTrait<T>>
size_t G3D::KDTree< T, BoundsFunc, HashFunc, EqualsFunc >::Handle::hashCode ( ) const
inline

◆ operator==()

template<class T , class BoundsFunc = BoundsTrait<T>, class HashFunc = HashTrait<T>, class EqualsFunc = EqualsTrait<T>>
bool G3D::KDTree< T, BoundsFunc, HashFunc, EqualsFunc >::Handle::operator== ( const Handle other) const
inline

Member Data Documentation

◆ bounds

template<class T , class BoundsFunc = BoundsTrait<T>, class HashFunc = HashTrait<T>, class EqualsFunc = EqualsTrait<T>>
AABox G3D::KDTree< T, BoundsFunc, HashFunc, EqualsFunc >::Handle::bounds

◆ center

template<class T , class BoundsFunc = BoundsTrait<T>, class HashFunc = HashTrait<T>, class EqualsFunc = EqualsTrait<T>>
Vector3 G3D::KDTree< T, BoundsFunc, HashFunc, EqualsFunc >::Handle::center

Center of bounds.

We cache this value to avoid recomputing it during the median sort, and because MSVC 6 std::sort goes into an infinite loop if we compute the midpoint on the fly (possibly a floating point roundoff issue, where B<A and A<B both are true).

Referenced by G3D::KDTree< T, BoundsFunc, HashFunc, EqualsFunc >::Handle::Handle(), and G3D::KDTree< T, BoundsFunc, HashFunc, EqualsFunc >::CenterComparator::operator()().

◆ value

template<class T , class BoundsFunc = BoundsTrait<T>, class HashFunc = HashTrait<T>, class EqualsFunc = EqualsTrait<T>>
T G3D::KDTree< T, BoundsFunc, HashFunc, EqualsFunc >::Handle::value

documentation generated on Wed Nov 24 2021 08:01:57 using doxygen 1.8.15