[][src]Module dinotree::advanced

Provies some debugging and misc functions.

Structs

LevelTimer

Measure the time each level of a recursive algorithm takes that supports the Splitter trait. Note that the number of elements in the returned Vec could be less than the height of the tree. This can happen if the recursive algorithm does not recurse all the way to the leafs because it deemed it not necessary.

SplitterEmpty

For cases where you don't care about any of the callbacks that Splitter provides, this implements them all to do nothing.

Unique

A Unique that doesnt require rust nightly. See https://doc.rust-lang.org/1.26.2/core/ptr/struct.Unique.html

Enums

BinStrat

Passed to the binning algorithm to determine if the binning algorithm should check for index out of bounds.

Traits

Splitter

A trait that gives the user callbacks at events in a recursive algorithm on the tree. The main motivation behind this trait was to track the time spent taken at each level of the tree during construction.

Functions

compute_default_level_switch_sequential

Returns the height at which the recursive construction algorithm turns to sequential from parallel.

compute_tree_height_heuristic

Returns the height of a dyn tree for a given number of bots. The height is chosen such that the nodes will each have a small amount of bots. If we had a node per bot, the tree would be too big. If we had too many bots per node, you would lose the properties of a tree, and end up with plain sweep and prune. This is provided so that users can allocate enough space for all the nodes before the tree is constructed, perhaps for some graphics buffer.

compute_tree_height_heuristic_debug

Outputs the height given an desirned number of bots per node.

default_level_switch_sequential

Returns the height at which the recursive construction algorithm turns to sequential from parallel.

into_bbox_vec

Converts an iterator and a aabb creating function into a Vec of BBox

sweeper_update

Sorts the bots based on an axis.