Package com.io7m.jspatial.implementation
Class QuadTreeI<T>
- java.lang.Object
-
- com.io7m.jspatial.implementation.QuadTreeI<T>
-
- Type Parameters:
T- The precise type of tree objects
- All Implemented Interfaces:
QuadTreeIType<T>,QuadTreeReadableIType<T>,QuadTreeReadableType
public final class QuadTreeI<T> extends java.lang.Object implements QuadTreeIType<T>
Default implementation of theQuadTreeITypeinterface.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classQuadTreeI.Quadrant
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description com.io7m.jregions.core.unparameterized.areas.AreaIareaFor(T item)com.io7m.jregions.core.unparameterized.areas.AreaIbounds()voidclear()Remove all objects from the tree.voidcontainedBy(com.io7m.jregions.core.unparameterized.areas.AreaI area, java.util.Set<T> items)Returns all objects in the tree that are completely contained withinarea, saving the results toitems.booleancontains(T item)Determine whether or not the object has already been inserted into the tree.static <T> QuadTreeIType<T>create(QuadTreeConfigurationI config)Create a new empty tree with the given bounds.booleanequals(java.lang.Object o)inthashCode()booleaninsert(T item, com.io7m.jregions.core.unparameterized.areas.AreaI item_bounds)Insert the objectiteminto the quadtree.<C> voiditerateQuadrants(C context, QuadTreeQuadrantIterationIType<T,C> f)Iterate over all quadrants within the tree.<U> QuadTreeIType<U>map(java.util.function.BiFunction<T,com.io7m.jregions.core.unparameterized.areas.AreaI,U> f)Applyfto each element of the tree.voidoverlappedBy(com.io7m.jregions.core.unparameterized.areas.AreaI area, java.util.Set<T> items)Returns all objects in the tree that are overlappedarea, saving the results toitems.voidraycast(Ray2D ray, java.util.SortedSet<QuadTreeRaycastResultI<T>> items)Returns all objects that are intersected by the given ray.booleanremove(T item)Remove the objectitemfrom the quadtree.longsize()voidtrim()Trim all empty quadrants from the tree.-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.io7m.jspatial.api.quadtrees.QuadTreeReadableType
isEmpty
-
-
-
-
Method Detail
-
create
public static <T> QuadTreeIType<T> create(QuadTreeConfigurationI config)
Create a new empty tree with the given bounds.- Type Parameters:
T- The type of objects contained within the tree- Parameters:
config- The tree configuration- Returns:
- A new tree
-
trim
public void trim()
Description copied from interface:QuadTreeITypeTrim all empty quadrants from the tree.- Specified by:
trimin interfaceQuadTreeIType<T>
-
size
public long size()
- Specified by:
sizein interfaceQuadTreeReadableType- Returns:
- The number of elements in the tree
-
equals
public boolean equals(java.lang.Object o)
- Overrides:
equalsin classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCodein classjava.lang.Object
-
bounds
public com.io7m.jregions.core.unparameterized.areas.AreaI bounds()
- Specified by:
boundsin interfaceQuadTreeReadableIType<T>- Returns:
- The tree bounds
-
insert
public boolean insert(T item, com.io7m.jregions.core.unparameterized.areas.AreaI item_bounds)
Description copied from interface:QuadTreeITypeInsert the object
iteminto the quadtree.The function returns
falseif the object could not be inserted for any reason (perhaps due to being too large).If the object is already in the tree, it is replaced. This can be used to update the bounds of an object within the tree.
- Specified by:
insertin interfaceQuadTreeIType<T>- Parameters:
item- The object to insertitem_bounds- The object's bounds- Returns:
trueif the object was inserted
-
contains
public boolean contains(T item)
Description copied from interface:QuadTreeReadableITypeDetermine whether or not the object has already been inserted into the tree.- Specified by:
containsin interfaceQuadTreeReadableIType<T>- Parameters:
item- The object- Returns:
trueiff the object is in the tree
-
remove
public boolean remove(T item)
Description copied from interface:QuadTreeITypeRemove the object
itemfrom the quadtree.The function returns
falseif the object could not be removed for any reason (perhaps due to not being in the tree in the first place).- Specified by:
removein interfaceQuadTreeIType<T>- Parameters:
item- The object to remove- Returns:
trueif the object was removed
-
clear
public void clear()
Description copied from interface:QuadTreeITypeRemove all objects from the tree.- Specified by:
clearin interfaceQuadTreeIType<T>
-
map
public <U> QuadTreeIType<U> map(java.util.function.BiFunction<T,com.io7m.jregions.core.unparameterized.areas.AreaI,U> f)
Description copied from interface:QuadTreeITypeApplyfto each element of the tree.- Specified by:
mapin interfaceQuadTreeIType<T>- Specified by:
mapin interfaceQuadTreeReadableIType<T>- Type Parameters:
U- The type of result elements- Parameters:
f- A mapping function- Returns:
- A new tree
-
iterateQuadrants
public <C> void iterateQuadrants(C context, QuadTreeQuadrantIterationIType<T,C> f)Description copied from interface:QuadTreeReadableITypeIterate over all quadrants within the tree.- Specified by:
iterateQuadrantsin interfaceQuadTreeReadableIType<T>- Type Parameters:
C- The type of context values- Parameters:
context- A contextual value passed toff- An iteration function
-
areaFor
public com.io7m.jregions.core.unparameterized.areas.AreaI areaFor(T item)
- Specified by:
areaForin interfaceQuadTreeReadableIType<T>- Parameters:
item- The item- Returns:
- The bounding area that was specified for
item
-
containedBy
public void containedBy(com.io7m.jregions.core.unparameterized.areas.AreaI area, java.util.Set<T> items)Description copied from interface:QuadTreeReadableITypeReturns all objects in the tree that are completely contained withinarea, saving the results toitems.- Specified by:
containedByin interfaceQuadTreeReadableIType<T>- Parameters:
area- The area to examineitems- The returned items
-
overlappedBy
public void overlappedBy(com.io7m.jregions.core.unparameterized.areas.AreaI area, java.util.Set<T> items)Description copied from interface:QuadTreeReadableITypeReturns all objects in the tree that are overlappedarea, saving the results toitems.- Specified by:
overlappedByin interfaceQuadTreeReadableIType<T>- Parameters:
area- The area to examineitems- The returned items
-
raycast
public void raycast(Ray2D ray, java.util.SortedSet<QuadTreeRaycastResultI<T>> items)
Description copied from interface:QuadTreeReadableITypeReturns all objects that are intersected by the given ray. The objects are returned in order of distance from the origin of the ray: The first object returned will be the object nearest to the origin.- Specified by:
raycastin interfaceQuadTreeReadableIType<T>- Parameters:
ray- The rayitems- The intersected items
-
-