Package com.io7m.jspatial.implementation
Class QuadTreeD<T>
- java.lang.Object
-
- com.io7m.jspatial.implementation.QuadTreeD<T>
-
- Type Parameters:
T- The precise type of tree objects
- All Implemented Interfaces:
QuadTreeDType<T>,QuadTreeReadableDType<T>,QuadTreeReadableType
public final class QuadTreeD<T> extends java.lang.Object implements QuadTreeDType<T>
Default implementation of theQuadTreeDTypeinterface.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classQuadTreeD.Quadrant
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description com.io7m.jregions.core.unparameterized.areas.AreaDareaFor(T item)com.io7m.jregions.core.unparameterized.areas.AreaDbounds()voidclear()Remove all objects from the tree.voidcontainedBy(com.io7m.jregions.core.unparameterized.areas.AreaD 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> QuadTreeDType<T>create(QuadTreeConfigurationD 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.AreaD item_bounds)Insert the objectiteminto the quadtree.<C> voiditerateQuadrants(C context, QuadTreeQuadrantIterationDType<T,C> f)Iterate over all quadrants within the tree.<U> QuadTreeDType<U>map(java.util.function.BiFunction<T,com.io7m.jregions.core.unparameterized.areas.AreaD,U> f)Applyfto each element of the tree.voidoverlappedBy(com.io7m.jregions.core.unparameterized.areas.AreaD 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<QuadTreeRaycastResultD<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> QuadTreeDType<T> create(QuadTreeConfigurationD 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:QuadTreeDTypeTrim all empty quadrants from the tree.- Specified by:
trimin interfaceQuadTreeDType<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.AreaD bounds()
- Specified by:
boundsin interfaceQuadTreeReadableDType<T>- Returns:
- The tree bounds
-
insert
public boolean insert(T item, com.io7m.jregions.core.unparameterized.areas.AreaD item_bounds)
Description copied from interface:QuadTreeDTypeInsert the object
iteminto the quadtree.The function returns
falseif the object could not be inserted for any reason (perhaps due to being too large).- Specified by:
insertin interfaceQuadTreeDType<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:QuadTreeReadableDTypeDetermine whether or not the object has already been inserted into the tree.- Specified by:
containsin interfaceQuadTreeReadableDType<T>- Parameters:
item- The object- Returns:
trueiff the object is in the tree
-
remove
public boolean remove(T item)
Description copied from interface:QuadTreeDTypeRemove 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 interfaceQuadTreeDType<T>- Parameters:
item- The object to remove- Returns:
trueif the object was removed
-
clear
public void clear()
Description copied from interface:QuadTreeDTypeRemove all objects from the tree.- Specified by:
clearin interfaceQuadTreeDType<T>
-
map
public <U> QuadTreeDType<U> map(java.util.function.BiFunction<T,com.io7m.jregions.core.unparameterized.areas.AreaD,U> f)
Description copied from interface:QuadTreeDTypeApplyfto each element of the tree.- Specified by:
mapin interfaceQuadTreeDType<T>- Specified by:
mapin interfaceQuadTreeReadableDType<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, QuadTreeQuadrantIterationDType<T,C> f)Description copied from interface:QuadTreeReadableDTypeIterate over all quadrants within the tree.- Specified by:
iterateQuadrantsin interfaceQuadTreeReadableDType<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.AreaD areaFor(T item)
- Specified by:
areaForin interfaceQuadTreeReadableDType<T>- Parameters:
item- The item- Returns:
- The bounding area that was specified for
item
-
containedBy
public void containedBy(com.io7m.jregions.core.unparameterized.areas.AreaD area, java.util.Set<T> items)Description copied from interface:QuadTreeReadableDTypeReturns all objects in the tree that are completely contained withinarea, saving the results toitems.- Specified by:
containedByin interfaceQuadTreeReadableDType<T>- Parameters:
area- The area to examineitems- The returned items
-
overlappedBy
public void overlappedBy(com.io7m.jregions.core.unparameterized.areas.AreaD area, java.util.Set<T> items)Description copied from interface:QuadTreeReadableDTypeReturns all objects in the tree that are overlappedarea, saving the results toitems.- Specified by:
overlappedByin interfaceQuadTreeReadableDType<T>- Parameters:
area- The area to examineitems- The returned items
-
raycast
public void raycast(Ray2D ray, java.util.SortedSet<QuadTreeRaycastResultD<T>> items)
Description copied from interface:QuadTreeReadableDTypeReturns 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 interfaceQuadTreeReadableDType<T>- Parameters:
ray- The rayitems- The intersected items
-
-