Class QuadTree<T extends Envelope>

  • Type Parameters:
    T - Type of object stored in this quad tree
    All Implemented Interfaces:
    Serializable, Iterable<T>, Collection<T>

    public class QuadTree<T extends Envelope>
    extends Object
    implements Collection<T>, Serializable
    Quad tree for 2D objects. For now, this implementation needs an ultimate outer bounding box. No part of any 2D string object may exceed that bounding box. A link to each stored 2D object will be stored in each sub-box that it intersects.

    Author:
    Peter Knoppers
    See Also:
    Serialized Form
    • Constructor Detail

      • QuadTree

        public QuadTree​(int maximumLoad,
                        double minimumSize,
                        double left,
                        double bottom,
                        double right,
                        double top)
        Create a new QuadTree object (or a sub-tree).
        Parameters:
        maximumLoad - int; number of elements at any level that warrants investigating if the tree can be re-balanced
        minimumSize - double; minimum width or height of a sub tree Rectangle (smaller sub tree are never created)
        left - double; the lowest X-coordinate that is allowed (inclusive)
        bottom - double; the lowest Y-coordinate that is allowed (inclusive)
        right - double; the highest X-coordinate that is allowed (exclusive)
        top - double; the highest Y-coordinate that is allowed (exclusive)
    • Method Detail

      • getMaxLoad

        public int getMaxLoad()
        Return the number of objects at which it is time to try to re-balance.
        Returns:
        int; the number of objects at which it is time to try to re-balance
      • getMinimumSize

        public double getMinimumSize()
        Return the minimum sub-tree rectangle size.
        Returns:
        double; the minimum sub-tree rectangle size
      • iterator

        public Iterator<T> iterator​(Rectangle searchArea)
        Find all elements intersecting a given bounding box. This iterator cannot be used to remove elements, but the remove method can be safely called while the iterator is active.
        Parameters:
        searchArea - Rectangle; the bounding box
        Returns:
        Iterator<T>; iterator that returns all elements that intersect the given bounding box
      • incrementSubTreeCount

        void incrementSubTreeCount()
        Increment the number of sub trees created.
      • getSubTreeCount

        public int getSubTreeCount()
        Return the total number of sub trees.
        Returns:
        int; the total number of sub trees
      • toString

        public String toString​(int expandDepth)
        Make a textual description of this quad tree drilling down to the prescribed depth.
        Parameters:
        expandDepth - int; maximum depth to descend
        Returns:
        String; textual description of this quad tree
      • dump

        public String dump​(String indent)
        Dump a quad tree.
        Parameters:
        indent - String; prefix for each output line
        Returns:
        String; textual description of this quad tree.