Package org.djutils.quadtree
Class QuadTree<T extends Envelope>
java.lang.Object
org.djutils.quadtree.QuadTree<T>
- Type Parameters:
T
- Type of object stored in this quad tree
- All Implemented Interfaces:
Serializable
,Iterable<T>
,Collection<T>
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.
Copyright (c) 2019-2024 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
BSD-style license. See DJUTILS License.
- Author:
- Peter Knoppers
- See Also:
-
Nested Class Summary
Modifier and TypeClassDescription(package private) class
QuadTree.SubTree<T extends Envelope>
Sub tree of a quad tree. -
Constructor Summary
ConstructorDescriptionQuadTree
(int maximumLoad, double minimumSize, double left, double bottom, double right, double top) Create a new QuadTree object (or a sub-tree). -
Method Summary
Modifier and TypeMethodDescriptionboolean
boolean
addAll
(Collection<? extends T> c) void
clear()
boolean
boolean
containsAll
(Collection<?> c) Dump a quad tree.int
Return the number of objects at which it is time to try to re-balance.double
Return the minimum sub-tree rectangle size.int
Return the total number of sub trees.(package private) void
Increment the number of sub trees created.boolean
isEmpty()
iterator()
Find all elements intersecting a given bounding box.boolean
boolean
removeAll
(Collection<?> c) boolean
retainAll
(Collection<?> c) int
size()
Object[]
toArray()
<T> T[]
toArray
(T[] a) toString()
toString
(int expandDepth) Make a textual description of this quad tree drilling down to the prescribed depth.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.util.Collection
equals, hashCode, parallelStream, removeIf, spliterator, stream, toArray
-
Constructor Details
-
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-balancedminimumSize
- 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 Details
-
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
-
size
public int size()- Specified by:
size
in interfaceCollection<T extends Envelope>
-
isEmpty
public boolean isEmpty()- Specified by:
isEmpty
in interfaceCollection<T extends Envelope>
-
contains
- Specified by:
contains
in interfaceCollection<T extends Envelope>
-
iterator
-
iterator
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
-
toArray
- Specified by:
toArray
in interfaceCollection<T extends Envelope>
-
toArray
public <T> T[] toArray(T[] a) - Specified by:
toArray
in interfaceCollection<T extends Envelope>
-
add
- Specified by:
add
in interfaceCollection<T extends Envelope>
-
remove
- Specified by:
remove
in interfaceCollection<T extends Envelope>
-
containsAll
- Specified by:
containsAll
in interfaceCollection<T extends Envelope>
-
addAll
- Specified by:
addAll
in interfaceCollection<T extends Envelope>
-
removeAll
- Specified by:
removeAll
in interfaceCollection<T extends Envelope>
-
retainAll
- Specified by:
retainAll
in interfaceCollection<T extends Envelope>
-
clear
public void clear()- Specified by:
clear
in interfaceCollection<T extends Envelope>
-
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
-
toString
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
Dump a quad tree.- Parameters:
indent
- String; prefix for each output line- Returns:
- String; textual description of this quad tree.
-