[][src]Crate dinotree_alg

Goal

To provide useful algorithms that you can perform on a dinotree.

Notes

Checkout the inner demo project to see how all these algorithms can be used.

Testing

A quick way to verify to a good level a lot of these algorithms is visually, so the demo inner project is used to verify correctness of a lot of these algorithms. Some of the algorithms demos additionally have an option to verify the algorithm against the naive algorithm. This is to catch more subtle corner case bugs. The demo projects are not deterministic. Its up to the user to try and trigger corner cases by moving their mouse around. More rigorous automated + visual testing and benchmarking is needed.

Simply testing for correctness doesnt mean the algorithms are working as expected. The dinotree_alg_data inner project measures a lot of these algorithms to give an even better feel that they are working as anticipated.

Analysis

Please see the dinotree_report github project, for a writeup of the design and analysis of the algorithms in this project.

Modules

colfind

Contains aabb broadphase query code

find_element

Contains find element code.

graphics

Provides functionality to draw the dividers of a dinotree.

intersect_with

Allows user to intersect the tree with a seperate group of bots.

k_nearest

Contains all k_nearest code.

multirect

Contains multirect code.

nbody

Contains all nbody code.

raycast

Contains all raycast code.

rect

Contains rect code. Provides two basic functions: for_all_in_rect, for_all_intersect_rect that both have similar api like this: