Generic octree data structure. More...
#include <Core/Geometry/Octree.h>
Public Types | |
| using | ContainerType = std::vector< T > |
| using | Iterator = typename ContainerType::iterator |
| using | ConstIterator = typename ContainerType::const_iterator |
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 > | GetNearestNeighbor (const Vector3D &pt, const NearestNeighborDistanceFunc3< T > &distanceFunc) const override |
| bool | IsIntersects (const BoundingBox3D &box, const BoxIntersectionTestFunc3< T > &testFunc) const override |
Returns true if given box intersects with any of the stored items. More... | |
| bool | IsIntersects (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 > | GetClosestIntersection (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 | GetNumberOfItems () const |
| Returns the number of items. More... | |
| const T & | GetItem (size_t i) const |
Returns the item at i. More... | |
| size_t | GetNumberOfNodes () const |
| Returns the number of octree nodes. More... | |
| const std::vector< size_t > & | GetItemsAtNode (size_t nodeIdx) const |
| Returns the list of the items for given node index. More... | |
| size_t | GetChildIndex (size_t nodeIdx, size_t childIdx) const |
| Returns a child's index for given node. More... | |
| const BoundingBox3D & | GetBoundingBox () const |
| Returns the bounding box of this octree. More... | |
| size_t | GetMaxDepth () const |
| Returns the maximum depth of the tree. More... | |
Detailed Description
template<typename T>
class CubbyFlow::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
-
T Value type.
Member Typedef Documentation
◆ ConstIterator
| using CubbyFlow::Octree< T >::ConstIterator = typename ContainerType::const_iterator |
◆ ContainerType
| using CubbyFlow::Octree< T >::ContainerType = std::vector<T> |
◆ Iterator
| using CubbyFlow::Octree< T >::Iterator = typename ContainerType::iterator |
Constructor & Destructor Documentation
◆ Octree()
| CubbyFlow::Octree< T >::Octree | ( | ) |
Default constructor.
Member Function Documentation
◆ begin() [1/2]
| Octree< T >::Iterator CubbyFlow::Octree< T >::begin | ( | ) |
Returns the begin iterator of the item.
◆ begin() [2/2]
| Octree< T >::ConstIterator CubbyFlow::Octree< T >::begin | ( | ) | const |
Returns the immutable begin iterator of the item.
◆ Build()
| void CubbyFlow::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.
◆ Clear()
| void CubbyFlow::Octree< T >::Clear | ( | ) |
Clears all the contents of this instance.
◆ end() [1/2]
| Octree< T >::Iterator CubbyFlow::Octree< T >::end | ( | ) |
Returns the end iterator of the item.
◆ end() [2/2]
| Octree< T >::ConstIterator CubbyFlow::Octree< T >::end | ( | ) | const |
Returns the immutable end iterator of the item.
◆ ForEachIntersectingItem() [1/2]
|
overridevirtual |
Invokes visitorFunc for every intersecting items.
Implements CubbyFlow::IntersectionQueryEngine3< T >.
◆ ForEachIntersectingItem() [2/2]
|
overridevirtual |
Invokes visitorFunc for every intersecting items.
Implements CubbyFlow::IntersectionQueryEngine3< T >.
◆ GetBoundingBox()
| const BoundingBox3D & CubbyFlow::Octree< T >::GetBoundingBox | ( | ) | const |
Returns the bounding box of this octree.
◆ GetChildIndex()
| size_t CubbyFlow::Octree< T >::GetChildIndex | ( | 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] nodeIdx The node index. [in] childIdx The child index (0 to 7).
- Returns
- Index of the selected child.
◆ GetClosestIntersection()
|
overridevirtual |
Returns the closest intersection for given ray.
Implements CubbyFlow::IntersectionQueryEngine3< T >.
◆ GetItem()
| const T & CubbyFlow::Octree< T >::GetItem | ( | size_t | i | ) | const |
Returns the item at i.
◆ GetItemsAtNode()
| const std::vector< size_t > & CubbyFlow::Octree< T >::GetItemsAtNode | ( | size_t | nodeIdx | ) | const |
Returns the list of the items for given node index.
◆ GetMaxDepth()
| size_t CubbyFlow::Octree< T >::GetMaxDepth | ( | ) | const |
Returns the maximum depth of the tree.
◆ GetNearestNeighbor()
|
overridevirtual |
Returns the nearest neighbor for given point and distance measure function.
Implements CubbyFlow::NearestNeighborQueryEngine3< T >.
◆ GetNumberOfItems()
| size_t CubbyFlow::Octree< T >::GetNumberOfItems | ( | ) | const |
Returns the number of items.
◆ GetNumberOfNodes()
| size_t CubbyFlow::Octree< T >::GetNumberOfNodes | ( | ) | const |
Returns the number of octree nodes.
◆ IsIntersects() [1/2]
|
overridevirtual |
Returns true if given box intersects with any of the stored items.
Implements CubbyFlow::IntersectionQueryEngine3< T >.
◆ IsIntersects() [2/2]
|
overridevirtual |
Returns true if given ray intersects with any of the stored items.
Implements CubbyFlow::IntersectionQueryEngine3< T >.
The documentation for this class was generated from the following files:
- Core/Geometry/Octree.h
- Core/Geometry/Octree-Impl.h
1.8.14