Add orx-interval-tree README.md

This commit is contained in:
Edwin Jakobs
2019-05-03 15:03:56 +02:00
parent 13e4d9d202
commit 27881dd643
2 changed files with 25 additions and 0 deletions

View File

@@ -10,6 +10,7 @@ A growing library of assorted data structures, algorithms and utilities.
- [`orx-file-watcher`](orx-file-watcher/README.md), `Program` extension method that allows monitoring and hot loading from files.
- [`orx-filter-extension`](orx-filter-extension/README.md), `Program` extension method that provides Filter based `extend()`
- [`orx-integral-image`](orx-integral-image/README.md), CPU-based and GPU-based implementation for integral images (summed area tables)
- [`orx-interval-tree`](orx-interval-tree/README.md), datastructure for accelerating point-in-interval queries.
- `orx-jumpflood`, a filter/shader based implementation of the jump flood algorithm for finding fast approximate (directional) distance fields
- `orx-kdtree`, a kd-tree implementation for fast nearest point searches
- [`orx-mesh-generators`](orx-mesh-generators/README.md), triangular mesh generators

View File

@@ -0,0 +1,24 @@
# orx-interval-tree
Interval trees intend to speed-up point in interval queries. Specifically in cases with a large set of items with a given
fixed start and end time.
For more information on interval trees read the [wikipedia page](https://en.wikipedia.org/wiki/Interval_tree).
## Usage
```
// -- the item class we want to search for
class Item(val start: Double, val end: Double)
// -- the items we want to search in
val items = List(100000) { Item(Math.random(), 1.0 + Math.random()) }
// -- build the interval tree, note how buildIntervalTree accepts a function that returns the start and end of the interval.
val tree = buildIntervalTree(items) {
Pair(it.start, it.end)
}
// -- search for all items that intersect 0.05
val results = tree.queryPoint(0.05)
```