# Empty

final case class Empty[S, T](bounds: BoundingBox)(using x\$2: SpatialOps[S]) extends QuadTree[S, T]

Represents four quads that may or may not contain values.

## Members list

### Value members

#### Inherited methods

def !==(other: QuadTree[S, T])(using CanEqual[T, T]): Boolean

Compare two trees for inequality.

Compare two trees for inequality.

## Attributes

Inherited from:
def ===(other: QuadTree[S, T])(using CanEqual[T, T]): Boolean

Compare two trees for equality.

Compare two trees for equality.

## Attributes

Inherited from:

Filter's out any matching value in the tree.

Filter's out any matching value in the tree.

## Attributes

Inherited from:

Filters the values at the quad directly under the vertex, if there is any. Note that while this is fast, it only works well for simple cases, or trees of vertices / points. This is because it does not visit the whole tree looking for other quads that might share ownership of this value. For example, if you add a bounding box the size of the whole tree, but then use `filterAt` to filter it's value in just one quad, say the top left quad, the box will continue to exist in all the other quads it touched.

Filters the values at the quad directly under the vertex, if there is any. Note that while this is fast, it only works well for simple cases, or trees of vertices / points. This is because it does not visit the whole tree looking for other quads that might share ownership of this value. For example, if you add a bounding box the size of the whole tree, but then use `filterAt` to filter it's value in just one quad, say the top left quad, the box will continue to exist in all the other quads it touched.

## Attributes

Inherited from:
def filterByBoundingBox(boundingBox: BoundingBox, p: (QuadTreeValue[S, T]) => Boolean)(using CanEqual[T, T]): QuadTree[S, T]

Filters any values who's spatial value interset with the BoundingBox.

Filters any values who's spatial value interset with the BoundingBox.

## Attributes

Inherited from:
def filterByLine(line: LineSegment, p: (QuadTreeValue[S, T]) => Boolean)(using CanEqual[T, T]): QuadTree[S, T]

Filters any values who's spatial value intersect with the LineSegment.

Filters any values who's spatial value intersect with the LineSegment.

## Attributes

Inherited from:
def filterByLine(start: Vertex, end: Vertex, p: (QuadTreeValue[S, T]) => Boolean)(using CanEqual[T, T]): QuadTree[S, T]

Filters any values who's spatial value intersect with the LineSegment.

Filters any values who's spatial value intersect with the LineSegment.

## Attributes

Inherited from:
def findClosestTo(vertex: Vertex)(using CanEqual[T, T], SpatialOps[S]): Option[QuadTreeValue[S, T]]

Traverses the whole tree to find the element that is closest to the vertex specified. Slower than `searchAt`, but it will find a value assuming the tree has values in it.

Traverses the whole tree to find the element that is closest to the vertex specified. Slower than `searchAt`, but it will find a value assuming the tree has values in it.

## Attributes

Inherited from:
def insert(values: Batch[(S, T)], idealCount: Int, minSize: Double, maxDepth: Int): QuadTree[S, T]

Insert a Batch of values of T (e.g. a String) with corresponding spatial values S (e.g. a BoundingBox or a Point) into the QuadTree with explicit option values.

Insert a Batch of values of T (e.g. a String) with corresponding spatial values S (e.g. a BoundingBox or a Point) into the QuadTree with explicit option values.

## Attributes

Inherited from:
def insert(idealCount: Int, minSize: Double, maxDepth: Int)(values: (S, T)*): QuadTree[S, T]

Insert values T (e.g. a String) with corresponding spatial values S (e.g. a BoundingBox or a Point) into the QuadTree with explicit option values.

Insert values T (e.g. a String) with corresponding spatial values S (e.g. a BoundingBox or a Point) into the QuadTree with explicit option values.

## Attributes

Inherited from:
def insert(location: S, value: T, idealCount: Int, minSize: Double, maxDepth: Int): QuadTree[S, T]

Insert value T (e.g. a String) with spatial value S (e.g. a BoundingBox or a Point) into the QuadTree with explicit option values.

Insert value T (e.g. a String) with spatial value S (e.g. a BoundingBox or a Point) into the QuadTree with explicit option values.

## Attributes

Inherited from:
def insert(values: Batch[(S, T)])(using opts: InsertOptions): QuadTree[S, T]

Insert a Batch of values of T (e.g. a String) with corresponding spatial values S (e.g. a BoundingBox or a Point) into the QuadTree. `QuadTree.InsertOptions` are supplied via implicit / given; construct using `given opts = QuadTree.options(..)`.

Insert a Batch of values of T (e.g. a String) with corresponding spatial values S (e.g. a BoundingBox or a Point) into the QuadTree. `QuadTree.InsertOptions` are supplied via implicit / given; construct using `given opts = QuadTree.options(..)`.

## Attributes

Inherited from:
def insert(values: (S, T)*)(using opts: InsertOptions): QuadTree[S, T]

Insert values T (e.g. a String) with corresponding spatial values S (e.g. a BoundingBox or a Point) into the QuadTree. `QuadTree.InsertOptions` are supplied via implicit / given; construct using `given opts = QuadTree.options(..)`.

Insert values T (e.g. a String) with corresponding spatial values S (e.g. a BoundingBox or a Point) into the QuadTree. `QuadTree.InsertOptions` are supplied via implicit / given; construct using `given opts = QuadTree.options(..)`.

## Attributes

Inherited from:
def insert(location: S, value: T)(using opts: InsertOptions): QuadTree[S, T]

Insert value T (e.g. a String) with spatial value S (e.g. a BoundingBox or a Point) into the QuadTree. `QuadTree.InsertOptions` are supplied via implicit / given; construct using `given opts = QuadTree.options(..)`.

Insert value T (e.g. a String) with spatial value S (e.g. a BoundingBox or a Point) into the QuadTree. `QuadTree.InsertOptions` are supplied via implicit / given; construct using `given opts = QuadTree.options(..)`.

## Attributes

Inherited from:
def prettyPrint: String

Prints the tree as a string, with the levels indented.

Prints the tree as a string, with the levels indented.

## Attributes

Inherited from:
def productElementNames: Iterator[String]

## Attributes

Inherited from:
Product
def productIterator: Iterator[Any]

## Attributes

Inherited from:
Product

Simplifies the `QuadTree` by removing unused leaves and branches.

Simplifies the `QuadTree` by removing unused leaves and branches.

## Attributes

Inherited from:

Removes the values at the quad directly under the vertex, if there is any. Note that while this is fast, it only works well for simple cases, or trees of vertices / points. This is because it does not visit the whole tree looking for other quads that might share ownership of this value. For example, if you add a bounding box the size of the whole tree, but then use `removeAt` to remove it's value in just one quad, say the top left quad, the box will continue to exist in all the other quads it touched.

Removes the values at the quad directly under the vertex, if there is any. Note that while this is fast, it only works well for simple cases, or trees of vertices / points. This is because it does not visit the whole tree looking for other quads that might share ownership of this value. For example, if you add a bounding box the size of the whole tree, but then use `removeAt` to remove it's value in just one quad, say the top left quad, the box will continue to exist in all the other quads it touched.

## Attributes

Inherited from:
def removeByBoundingBox(boundingBox: BoundingBox)(using CanEqual[T, T]): QuadTree[S, T]

Removes any values who's spatial value interset with the BoundingBox.

Removes any values who's spatial value interset with the BoundingBox.

## Attributes

Inherited from:
def removeByLine(line: LineSegment)(using CanEqual[T, T]): QuadTree[S, T]

Removes any values who's spatial value intersect with the LineSegment.

Removes any values who's spatial value intersect with the LineSegment.

## Attributes

Inherited from:
def removeByLine(start: Vertex, end: Vertex)(using CanEqual[T, T]): QuadTree[S, T]

Removes any values who's spatial value intersect with the LineSegment.

Removes any values who's spatial value intersect with the LineSegment.

## Attributes

Inherited from:
def removeClosestTo(vertex: Vertex)(using CanEqual[T, T], SpatialOps[S]): QuadTree[S, T]

Traverses the whole tree to find the element that is closest to the vertex specified, and removes it. Slower than `removeAt`, but it will find a value to remove, assuming the tree has values in it. On removal, all instances of that value are deleted from the tree.

Traverses the whole tree to find the element that is closest to the vertex specified, and removes it. Slower than `removeAt`, but it will find a value to remove, assuming the tree has values in it. On removal, all instances of that value are deleted from the tree.

## Attributes

Inherited from:

Dives down to the leaf nodes directly under the vertex and returns it's values. Faster than `findClosestTo` as it does not traverse the tree, but only returns what is in the final quad, and won't look outside it for values.

Dives down to the leaf nodes directly under the vertex and returns it's values. Faster than `findClosestTo` as it does not traverse the tree, but only returns what is in the final quad, and won't look outside it for values.

## Attributes

Inherited from:
def searchByBoundingBox(boundingBox: BoundingBox)(using CanEqual[T, T]): Batch[QuadTreeValue[S, T]]

Searches the tree for any values who's spatial value interset with the BoundingBox.

Searches the tree for any values who's spatial value interset with the BoundingBox.

## Attributes

Inherited from:
def searchByLine(line: LineSegment)(using CanEqual[T, T]): Batch[QuadTreeValue[S, T]]

Searches the tree for any values who's spatial value interset with the LineSegment.

Searches the tree for any values who's spatial value interset with the LineSegment.

## Attributes

Inherited from:
def searchByLine(start: Vertex, end: Vertex)(using CanEqual[T, T]): Batch[QuadTreeValue[S, T]]

Searches the tree for any values who's spatial value interset with the LineSegment.

Searches the tree for any values who's spatial value interset with the LineSegment.

## Attributes

Inherited from:
def toBatch(using CanEqual[T, T]): Batch[QuadTreeValue[S, T]]

Return a `Batch` containing all the values in the `QuadTree`, please be aware that there will probably be duplicate entries.

Return a `Batch` containing all the values in the `QuadTree`, please be aware that there will probably be duplicate entries.

Inherited from: