Class BoundingBoxRTree<T>

Object
org.anchoranalysis.spatial.rtree.RTree<T>
org.anchoranalysis.spatial.rtree.BoundingBoxRTree<T>
Type Parameters:
T - object-type stored in structure (the payload).

public class BoundingBoxRTree<T>
extends RTree<T>
An R-Tree that contains items, each with an associated bounding-box in three dimensions.

This is similar to IntervalRTree but uses three-dimensions rather than a single dimension to index the data.

Author:
Owen Feehan
See Also:
R-tree on Wikipedia
  • Constructor Details

    • BoundingBoxRTree

      public BoundingBoxRTree()
      Creates an empty R-Tree.
    • BoundingBoxRTree

      public BoundingBoxRTree​(int maxNumberEntries)
      Creates an empty R-Tree with a specified number of children.
      Parameters:
      maxNumberEntries - maximum number of entries in the r-tree
  • Method Details

    • contains

      public Set<T> contains​(ReadableTuple3i point)
      Which objects contain a particular point?
      Parameters:
      point - the point
      Returns:
      payloads for all objects that contain point.
    • containsStream

      public Stream<T> containsStream​(ReadableTuple3i point)
      Parameters:
      point - the point
      Returns:
      payloads for all objects that contain point.
    • add

      public void add​(BoundingBox box, T payload)
      Adds a bounding-box with a corresponding payload.

      Note that the payload must not be unique, and multiple identical elements can exist with the same bounding-box and payload.

      Parameters:
      box - the box to add
      payload - the payload associated with the bounding-box
    • intersectsWith

      public Set<T> intersectsWith​(BoundingBox toIntersectWith)
      Which bounding-boxes intersect with another specific bounding box?
      Parameters:
      toIntersectWith - the box that must be intersected with
      Returns:
      payloads for all bounding-boxes that intersect with toIntersectWith.
    • intersectsWithStream

      public Stream<T> intersectsWithStream​(BoundingBox toIntersectWith)
      Like intersectsWith(BoundingBox) but returns a Stream instead of a Set.
      Parameters:
      toIntersectWith - the box that must be intersected with
      Returns:
      payloads for all bounding-boxes that intersect with toIntersectWith.
    • remove

      public void remove​(BoundingBox box, T payload)
      Removes a particular item from the r-tree, identified by its bounding-box and payload.

      If no entry can be found matching exactly the box and payload, no change happens to the r-tree. No error is reported.

      If multiple entries exist that match exactly the box and payload, then all entries are removed.

      If box exists but with a different payload, behaviour is undefined. Either box is removed, or no change occurs.

      Parameters:
      box - the bounding-box
      payload - the payload