Class BoundingBoxRTree<T>

Object
RTree<T>
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:
  • 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