[][src]Module dinotree_alg::analyze

Contains code to manipulate the dinotree data structure and some of its query algorithms to help analyze and measure their performance.

Structs

DinoTreeBuilder

Builder pattern for dinotree.

NaiveAlgs
NotSorted

A version of dinotree where the elements are not sorted along each axis, like a KD Tree. For comparison, a normal kd-tree is provided by NotSorted. In this tree, the elements are not sorted along an axis at each level. Construction of NotSorted is faster than DinoTree since it does not have to sort bots that belong to each node along an axis. But most query algorithms can usually take advantage of this extra property.

NotSortedQueryBuilder

Builder for a query on a NotSorted Dinotree.

QueryBuilder

Builder for a query on a DinoTree.

SplitterEmpty

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

Enums

BinStrat

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

Constants

DEFAULT_NUMBER_ELEM_PER_NODE

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 have too many levels. Too much time would be spent recursing. If we had too many bots per node, you would lose the properties of a tree, and end up with plain sweep and prune. Theory would tell you to just make a node per bot, but there is a sweet spot inbetween determined by the real-word properties of your computer.

Traits

ColMulti

Used for the advanced algorithms. Trait that user implements to handling aabb collisions. The user supplies a struct that implements this trait instead of just a closure so that the user may also have the struct implement Splitter.

HasId
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

assert_invariants

Returns false if the tree's invariants are not met.

compute_tree_height_heuristic

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

nodes_left