Package com.io7m.jspatial.implementation
Class QuadTreeL<T>
- java.lang.Object
-
- com.io7m.jspatial.implementation.QuadTreeL<T>
-
- Type Parameters:
T- The precise type of tree objects
- All Implemented Interfaces:
QuadTreeLType<T>,QuadTreeReadableLType<T>,QuadTreeReadableType
public final class QuadTreeL<T> extends java.lang.Object implements QuadTreeLType<T>
Default implementation of theQuadTreeLTypeinterface.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classQuadTreeL.Quadrant
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description com.io7m.jregions.core.unparameterized.areas.AreaLareaFor(T item)com.io7m.jregions.core.unparameterized.areas.AreaLbounds()voidclear()Remove all objects from the tree.voidcontainedBy(com.io7m.jregions.core.unparameterized.areas.AreaL 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> QuadTreeLType<T>create(QuadTreeConfigurationL 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.AreaL item_bounds)Insert the objectiteminto the quadtree.<C> voiditerateQuadrants(C context, QuadTreeQuadrantIterationLType<T,C> f)Iterate over all quadrants within the tree.<U> QuadTreeLType<U>map(java.util.function.BiFunction<T,com.io7m.jregions.core.unparameterized.areas.AreaL,U> f)Applyfto each element of the tree.voidoverlappedBy(com.io7m.jregions.core.unparameterized.areas.AreaL 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<QuadTreeRaycastResultL<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> QuadTreeLType<T> create(QuadTreeConfigurationL 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:QuadTreeLTypeTrim all empty quadrants from the tree.- Specified by:
trimin interfaceQuadTreeLType<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.AreaL bounds()
- Specified by:
boundsin interfaceQuadTreeReadableLType<T>- Returns:
- The tree bounds
-
insert
public boolean insert(T item, com.io7m.jregions.core.unparameterized.areas.AreaL item_bounds)
Description copied from interface:QuadTreeLTypeInsert 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 interfaceQuadTreeLType<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:QuadTreeReadableLTypeDetermine whether or not the object has already been inserted into the tree.- Specified by:
containsin interfaceQuadTreeReadableLType<T>- Parameters:
item- The object- Returns:
trueiff the object is in the tree
-
remove
public boolean remove(T item)
Description copied from interface:QuadTreeLTypeRemove 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 interfaceQuadTreeLType<T>- Parameters:
item- The object to remove- Returns:
trueif the object was removed
-
clear
public void clear()
Description copied from interface:QuadTreeLTypeRemove all objects from the tree.- Specified by:
clearin interfaceQuadTreeLType<T>
-
map
public <U> QuadTreeLType<U> map(java.util.function.BiFunction<T,com.io7m.jregions.core.unparameterized.areas.AreaL,U> f)
Description copied from interface:QuadTreeLTypeApplyfto each element of the tree.- Specified by:
mapin interfaceQuadTreeLType<T>- Specified by:
mapin interfaceQuadTreeReadableLType<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, QuadTreeQuadrantIterationLType<T,C> f)Description copied from interface:QuadTreeReadableLTypeIterate over all quadrants within the tree.- Specified by:
iterateQuadrantsin interfaceQuadTreeReadableLType<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.AreaL areaFor(T item)
- Specified by:
areaForin interfaceQuadTreeReadableLType<T>- Parameters:
item- The item- Returns:
- The bounding area that was specified for
item
-
containedBy
public void containedBy(com.io7m.jregions.core.unparameterized.areas.AreaL area, java.util.Set<T> items)Description copied from interface:QuadTreeReadableLTypeReturns all objects in the tree that are completely contained withinarea, saving the results toitems.- Specified by:
containedByin interfaceQuadTreeReadableLType<T>- Parameters:
area- The area to examineitems- The returned items
-
overlappedBy
public void overlappedBy(com.io7m.jregions.core.unparameterized.areas.AreaL area, java.util.Set<T> items)Description copied from interface:QuadTreeReadableLTypeReturns all objects in the tree that are overlappedarea, saving the results toitems.- Specified by:
overlappedByin interfaceQuadTreeReadableLType<T>- Parameters:
area- The area to examineitems- The returned items
-
raycast
public void raycast(Ray2D ray, java.util.SortedSet<QuadTreeRaycastResultL<T>> items)
Description copied from interface:QuadTreeReadableLTypeReturns 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 interfaceQuadTreeReadableLType<T>- Parameters:
ray- The rayitems- The intersected items
-
-