Jet  v1.3.3
Classes | Public Types | Public Member Functions | List of all members
jet::Octree< T > Class Template Referencefinal

Generic octree data structure. More...

#include <jet/octree.h>

Inheritance diagram for jet::Octree< T >:
jet::IntersectionQueryEngine3< T > jet::NearestNeighborQueryEngine3< T >

Public Types

typedef std::vector< T > ContainerType
 
typedef ContainerType::iterator Iterator
 
typedef ContainerType::const_iterator ConstIterator
 

Public Member Functions

 Octree ()
 Default constructor. More...
 
void build (const std::vector< T > &items, const BoundingBox3D &bound, const BoxIntersectionTestFunc3< T > &testFunc, size_t maxDepth)
 
void clear ()
 Clears all the contents of this instance. More...
 
NearestNeighborQueryResult3< T > nearest (const Vector3D &pt, const NearestNeighborDistanceFunc3< T > &distanceFunc) const override
 
bool intersects (const BoundingBox3D &box, const BoxIntersectionTestFunc3< T > &testFunc) const override
 Returns true if given box intersects with any of the stored items. More...
 
bool intersects (const Ray3D &ray, const RayIntersectionTestFunc3< T > &testFunc) const override
 Returns true if given ray intersects with any of the stored items. More...
 
void forEachIntersectingItem (const BoundingBox3D &box, const BoxIntersectionTestFunc3< T > &testFunc, const IntersectionVisitorFunc3< T > &visitorFunc) const override
 Invokes visitorFunc for every intersecting items. More...
 
void forEachIntersectingItem (const Ray3D &ray, const RayIntersectionTestFunc3< T > &testFunc, const IntersectionVisitorFunc3< T > &visitorFunc) const override
 Invokes visitorFunc for every intersecting items. More...
 
ClosestIntersectionQueryResult3< T > closestIntersection (const Ray3D &ray, const GetRayIntersectionFunc3< T > &testFunc) const override
 Returns the closest intersection for given ray. More...
 
Iterator begin ()
 Returns the begin iterator of the item. More...
 
Iterator end ()
 Returns the end iterator of the item. More...
 
ConstIterator begin () const
 Returns the immutable begin iterator of the item. More...
 
ConstIterator end () const
 Returns the immutable end iterator of the item. More...
 
size_t numberOfItems () const
 Returns the number of items. More...
 
const T & item (size_t i) const
 Returns the item at i. More...
 
size_t numberOfNodes () const
 Returns the number of octree nodes. More...
 
const std::vector< size_t > & itemsAtNode (size_t nodeIdx) const
 Returns the list of the items for given noide index. More...
 
size_t childIndex (size_t nodeIdx, size_t childIdx) const
 Returns a child's index for given node. More...
 
const BoundingBox3DboundingBox () const
 Returns the bounding box of this octree. More...
 
size_t maxDepth () const
 Returns the maximum depth of the tree. More...
 

Detailed Description

template<typename T>
class jet::Octree< T >

Generic octree data structure.

This class is a generic octree representation to store arbitrary spatial data. The octree supports closest neighbor search, overlapping test, and ray intersection test.

Template Parameters
TValue type.

Member Typedef Documentation

◆ ConstIterator

template<typename T >
typedef ContainerType::const_iterator jet::Octree< T >::ConstIterator

◆ ContainerType

template<typename T >
typedef std::vector<T> jet::Octree< T >::ContainerType

◆ Iterator

template<typename T >
typedef ContainerType::iterator jet::Octree< T >::Iterator

Constructor & Destructor Documentation

◆ Octree()

template<typename T >
jet::Octree< T >::Octree ( )

Default constructor.

Member Function Documentation

◆ begin() [1/2]

template<typename T >
Iterator jet::Octree< T >::begin ( )

Returns the begin iterator of the item.

◆ begin() [2/2]

template<typename T >
ConstIterator jet::Octree< T >::begin ( ) const

Returns the immutable begin iterator of the item.

◆ boundingBox()

template<typename T >
const BoundingBox3D& jet::Octree< T >::boundingBox ( ) const

Returns the bounding box of this octree.

◆ build()

template<typename T >
void jet::Octree< T >::build ( const std::vector< T > &  items,
const BoundingBox3D bound,
const BoxIntersectionTestFunc3< T > &  testFunc,
size_t  maxDepth 
)

Builds an octree with given list of items, bounding box of the items, overlapping test function, and max depth of the tree.

◆ childIndex()

template<typename T >
size_t jet::Octree< T >::childIndex ( size_t  nodeIdx,
size_t  childIdx 
) const

Returns a child's index for given node.

For a given node, its children is stored continuously, such that if the node's first child's index is i, then i + 1, i + 2, ... , i + 7 are the indices for its children. The order of octant is x-major.

Parameters
[in]nodeIdxThe node index.
[in]childIdxThe child index (0 to 7).
Returns
Index of the selected child.

◆ clear()

template<typename T >
void jet::Octree< T >::clear ( )

Clears all the contents of this instance.

◆ closestIntersection()

template<typename T >
ClosestIntersectionQueryResult3<T> jet::Octree< T >::closestIntersection ( const Ray3D ray,
const GetRayIntersectionFunc3< T > &  testFunc 
) const
overridevirtual

Returns the closest intersection for given ray.

Implements jet::IntersectionQueryEngine3< T >.

◆ end() [1/2]

template<typename T >
Iterator jet::Octree< T >::end ( )

Returns the end iterator of the item.

◆ end() [2/2]

template<typename T >
ConstIterator jet::Octree< T >::end ( ) const

Returns the immutable end iterator of the item.

◆ forEachIntersectingItem() [1/2]

template<typename T >
void jet::Octree< T >::forEachIntersectingItem ( const BoundingBox3D box,
const BoxIntersectionTestFunc3< T > &  testFunc,
const IntersectionVisitorFunc3< T > &  visitorFunc 
) const
overridevirtual

Invokes visitorFunc for every intersecting items.

Implements jet::IntersectionQueryEngine3< T >.

◆ forEachIntersectingItem() [2/2]

template<typename T >
void jet::Octree< T >::forEachIntersectingItem ( const Ray3D ray,
const RayIntersectionTestFunc3< T > &  testFunc,
const IntersectionVisitorFunc3< T > &  visitorFunc 
) const
overridevirtual

Invokes visitorFunc for every intersecting items.

Implements jet::IntersectionQueryEngine3< T >.

◆ intersects() [1/2]

template<typename T >
bool jet::Octree< T >::intersects ( const BoundingBox3D box,
const BoxIntersectionTestFunc3< T > &  testFunc 
) const
overridevirtual

Returns true if given box intersects with any of the stored items.

Implements jet::IntersectionQueryEngine3< T >.

◆ intersects() [2/2]

template<typename T >
bool jet::Octree< T >::intersects ( const Ray3D ray,
const RayIntersectionTestFunc3< T > &  testFunc 
) const
overridevirtual

Returns true if given ray intersects with any of the stored items.

Implements jet::IntersectionQueryEngine3< T >.

◆ item()

template<typename T >
const T& jet::Octree< T >::item ( size_t  i) const

Returns the item at i.

◆ itemsAtNode()

template<typename T >
const std::vector<size_t>& jet::Octree< T >::itemsAtNode ( size_t  nodeIdx) const

Returns the list of the items for given noide index.

◆ maxDepth()

template<typename T >
size_t jet::Octree< T >::maxDepth ( ) const

Returns the maximum depth of the tree.

◆ nearest()

template<typename T >
NearestNeighborQueryResult3<T> jet::Octree< T >::nearest ( const Vector3D pt,
const NearestNeighborDistanceFunc3< T > &  distanceFunc 
) const
overridevirtual

Returns the nearest neighbor for given point and distance measure function.

Implements jet::NearestNeighborQueryEngine3< T >.

◆ numberOfItems()

template<typename T >
size_t jet::Octree< T >::numberOfItems ( ) const

Returns the number of items.

◆ numberOfNodes()

template<typename T >
size_t jet::Octree< T >::numberOfNodes ( ) const

Returns the number of octree nodes.


The documentation for this class was generated from the following file: