diff --git a/orx-hash-grid/README.md b/orx-hash-grid/README.md index b3f26b68..1257c656 100644 --- a/orx-hash-grid/README.md +++ b/orx-hash-grid/README.md @@ -4,6 +4,8 @@ A 2D space partitioning for points. ## Usage +`orx-hash-grid` provides the classes `HashGrid` and `Cell`, in most cases only `HashGrid` is used. + Create a hash grid for a given radius. ```kotlin val grid = HashGrid(radius) @@ -27,6 +29,42 @@ for (point in grid.points()) { // do something with point } ``` + +## Extensions to standard library + +`orx-hash-grid` provides short-hand extension functions to `List` + +
+ +```kotlin +fun List.filter(radius: Double) : List + ``` + +filters the points in the list such that only points with an inter-distance of `radius` remain. + +```kotlin +val points = (0 until 10_000).map { drawer.bounds.uniform() } +val filtered = points.filter(20.0) +``` + +
+ +```kotlin +fun List.hashGrid(radius: Double) : HashGrid +``` +constructs a (mutable) `HashGrid` containing all points in the list. + +```kotlin +val points = (0 until 10_000).map { drawer.bounds.uniform() } +val hashGrid = points.hashGrid(20.0) +``` + +
+ +## References + + * `orx-noise` uses `HashGrid` to generate Poisson distributed points. [Link](https://github.com/openrndr/orx/blob/master/orx-noise/src/commonMain/kotlin/PoissonDisk.kt) + ## Demos ### DemoFilter01