Go to the documentation of this file.
7 #ifndef INCLUDE_JET_OCTREE_H_
8 #define INCLUDE_JET_OCTREE_H_
30 typedef typename ContainerType::iterator
Iterator;
89 const T&
item(
size_t i)
const;
120 std::vector<size_t> items;
125 size_t _maxDepth = 1;
127 std::vector<T> _items;
128 std::vector<Node> _nodes;
130 void build(
size_t nodeIdx,
size_t currentDepth,
162 #include "detail/octree-inl.h"
164 #endif // INCLUDE_JET_OCTREE_H_
ConstIterator begin() const
Returns the immutable begin iterator of the item.
std::function< double(const T &, const Ray3D &)> GetRayIntersectionFunc3
Ray-item closest intersection evaluation function.
Definition: intersection_query_engine3.h:40
bool intersects(const BoundingBox3D &box, const BoxIntersectionTestFunc3< T > &testFunc) const override
Returns true if given box intersects with any of the stored items.
std::function< bool(const T &, const BoundingBox3D &)> BoxIntersectionTestFunc3
Box-item intersection test function.
Definition: intersection_query_engine3.h:32
std::function< void(const T &)> IntersectionVisitorFunc3
Visitor function which is invoked for each intersecting item.
Definition: intersection_query_engine3.h:44
Octree()
Default constructor.
bool intersects(const Ray3D &ray, const RayIntersectionTestFunc3< T > &testFunc) const override
Returns true if given ray intersects with any of the stored items.
const T & item(size_t i) const
Returns the item at i.
size_t childIndex(size_t nodeIdx, size_t childIdx) const
Returns a child's index for given node.
3-D axis-aligned bounding box class.
Definition: bounding_box3.h:41
Nearest neighbor query result.
Definition: nearest_neighbor_query_engine3.h:19
constexpr size_t kMaxSize
Max size_t.
Definition: constants.h:79
NearestNeighborQueryResult3< T > nearest(const Vector3D &pt, const NearestNeighborDistanceFunc3< T > &distanceFunc) const override
Definition: advection_solver2.h:18
size_t numberOfNodes() const
Returns the number of octree nodes.
ConstIterator end() const
Returns the immutable end iterator of the item.
std::vector< T > ContainerType
Definition: octree.h:29
std::function< bool(const T &, const Ray3D &)> RayIntersectionTestFunc3
Ray-item intersection test function.
Definition: intersection_query_engine3.h:36
ContainerType::const_iterator ConstIterator
Definition: octree.h:31
const std::vector< size_t > & itemsAtNode(size_t nodeIdx) const
Returns the list of the items for given noide index.
void clear()
Clears all the contents of this instance.
Class for 2-D ray.
Definition: ray3.h:21
ClosestIntersectionQueryResult3< T > closestIntersection(const Ray3D &ray, const GetRayIntersectionFunc3< T > &testFunc) const override
Returns the closest intersection for given ray.
size_t maxDepth() const
Returns the maximum depth of the tree.
const BoundingBox3D & boundingBox() const
Returns the bounding box of this octree.
Iterator begin()
Returns the begin iterator of the item.
Iterator end()
Returns the end iterator of the item.
void forEachIntersectingItem(const BoundingBox3D &box, const BoxIntersectionTestFunc3< T > &testFunc, const IntersectionVisitorFunc3< T > &visitorFunc) const override
Invokes visitorFunc for every intersecting items.
void build(const std::vector< T > &items, const BoundingBox3D &bound, const BoxIntersectionTestFunc3< T > &testFunc, size_t maxDepth)
3-D vector class.
Definition: vector3.h:25
ContainerType::iterator Iterator
Definition: octree.h:30
Generic octree data structure.
Definition: octree.h:27
std::function< double(const T &, const Vector3D &)> NearestNeighborDistanceFunc3
Nearest neighbor distance measure function.
Definition: nearest_neighbor_query_engine3.h:27
Abstract base class for 3-D intersection test query engine.
Definition: intersection_query_engine3.h:48
Abstract base class for 3-D nearest neigbor query engine.
Definition: nearest_neighbor_query_engine3.h:31
size_t numberOfItems() const
Returns the number of items.
Closest intersection query result.
Definition: intersection_query_engine3.h:19
void forEachIntersectingItem(const Ray3D &ray, const RayIntersectionTestFunc3< T > &testFunc, const IntersectionVisitorFunc3< T > &visitorFunc) const override
Invokes visitorFunc for every intersecting items.