Template Class KDTree

Nested Relationships

Class Documentation

template<typename HullType>
class KDTree

Public Types

using TraversalPredicate = std::function<bool(unsigned int node_index, unsigned int depth)>
using TraversalCallback = std::function<void(unsigned int node_index, unsigned int depth)>
using TraversalPriorityLess = std::function<bool(std::array<int, 2> const &nodes)>
using TraversalQueue = std::queue<QueueItem>

Public Functions

inline KDTree(std::size_t n, unsigned int maxPrimitivesPerLeaf = 1)
inline virtual ~KDTree()
inline Node const &node(unsigned int i) const
inline HullType const &hull(unsigned int i) const
inline unsigned int entity(unsigned int i) const
void construct()
void traverse_depth_first(TraversalPredicate pred, TraversalCallback cb, TraversalPriorityLess const &pless = nullptr) const
void traverse_breadth_first(TraversalPredicate const &pred, TraversalCallback const &cb, unsigned int start_node = 0, TraversalPriorityLess const &pless = nullptr, TraversalQueue &pending = TraversalQueue()) const
void traverse_breadth_first_parallel(TraversalPredicate pred, TraversalCallback cb) const
void update()

Protected Functions

void construct(unsigned int node, AlignedBox3r const &box, unsigned int b, unsigned int n)
void traverse_depth_first(unsigned int node, unsigned int depth, TraversalPredicate pred, TraversalCallback cb, TraversalPriorityLess const &pless) const
void traverse_breadth_first(TraversalQueue &pending, TraversalPredicate const &pred, TraversalCallback const &cb, TraversalPriorityLess const &pless = nullptr) const
unsigned int add_node(unsigned int b, unsigned int n)
virtual Vector3r const &entity_position(unsigned int i) const = 0
virtual void compute_hull(unsigned int b, unsigned int n, HullType &hull) const = 0
inline virtual void compute_hull_approx(unsigned int b, unsigned int n, HullType &hull) const

Protected Attributes

std::vector<unsigned int> m_lst
std::vector<Node> m_nodes
std::vector<HullType> m_hulls
unsigned int m_maxPrimitivesPerLeaf
struct Node

Public Functions

inline Node(unsigned int b_, unsigned int n_)
Node() = default
inline bool is_leaf() const

Public Members

std::array<int, 2> children
unsigned int begin
unsigned int n
struct QueueItem

Public Members

unsigned int n
unsigned int d