Package com.io7m.jspatial.implementation
Class OctTreeI<T>
- java.lang.Object
-
- com.io7m.jspatial.implementation.OctTreeI<T>
-
- Type Parameters:
T- The precise type of tree objects
- All Implemented Interfaces:
OctTreeIType<T>,OctTreeReadableIType<T>,OctTreeReadableType
public final class OctTreeI<T> extends java.lang.Object implements OctTreeIType<T>
Default implementation of theOctTreeITypeinterface.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classOctTreeI.Octant
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description com.io7m.jregions.core.unparameterized.volumes.VolumeIbounds()voidclear()Remove all objects from the tree.voidcontainedBy(com.io7m.jregions.core.unparameterized.volumes.VolumeI volume, java.util.Set<T> items)Returns all objects in the tree that are completely contained withinvolume, saving the results toitems.booleancontains(T item)Determine whether or not the object has already been inserted into the tree.static <T> OctTreeIType<T>create(OctTreeConfigurationI config)Create a new empty tree with the given bounds.booleanequals(java.lang.Object o)inthashCode()booleaninsert(T item, com.io7m.jregions.core.unparameterized.volumes.VolumeI item_bounds)Insert the objectiteminto the octtree.<C> voiditerateOctants(C context, OctTreeOctantIterationIType<T,C> f)Iterate over all octants within the tree.<U> OctTreeIType<U>map(java.util.function.BiFunction<T,com.io7m.jregions.core.unparameterized.volumes.VolumeI,U> f)Applyfto each element of the tree.voidoverlappedBy(com.io7m.jregions.core.unparameterized.volumes.VolumeI volume, java.util.Set<T> items)Returns all objects in the tree that are overlappedvolume, saving the results toitems.voidraycast(Ray3D ray, java.util.SortedSet<OctTreeRaycastResultI<T>> items)Returns all objects that are intersected by the given ray.booleanremove(T item)Remove the objectitemfrom the octtree.longsize()voidtrim()Trim all empty quadrants from the tree.com.io7m.jregions.core.unparameterized.volumes.VolumeIvolumeFor(T item)-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.io7m.jspatial.api.octtrees.OctTreeReadableType
isEmpty
-
-
-
-
Method Detail
-
create
public static <T> OctTreeIType<T> create(OctTreeConfigurationI 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:OctTreeITypeTrim all empty quadrants from the tree.- Specified by:
trimin interfaceOctTreeIType<T>
-
size
public long size()
- Specified by:
sizein interfaceOctTreeReadableType- 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.volumes.VolumeI bounds()
- Specified by:
boundsin interfaceOctTreeReadableIType<T>- Returns:
- The tree bounds
-
insert
public boolean insert(T item, com.io7m.jregions.core.unparameterized.volumes.VolumeI item_bounds)
Description copied from interface:OctTreeITypeInsert the object
iteminto the octtree.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 interfaceOctTreeIType<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:OctTreeReadableITypeDetermine whether or not the object has already been inserted into the tree.- Specified by:
containsin interfaceOctTreeReadableIType<T>- Parameters:
item- The object- Returns:
trueiff the object is in the tree
-
remove
public boolean remove(T item)
Description copied from interface:OctTreeITypeRemove the object
itemfrom the octtree.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 interfaceOctTreeIType<T>- Parameters:
item- The object to remove- Returns:
trueif the object was removed
-
clear
public void clear()
Description copied from interface:OctTreeITypeRemove all objects from the tree.- Specified by:
clearin interfaceOctTreeIType<T>
-
map
public <U> OctTreeIType<U> map(java.util.function.BiFunction<T,com.io7m.jregions.core.unparameterized.volumes.VolumeI,U> f)
Description copied from interface:OctTreeITypeApplyfto each element of the tree.- Specified by:
mapin interfaceOctTreeIType<T>- Specified by:
mapin interfaceOctTreeReadableIType<T>- Type Parameters:
U- The type of result elements- Parameters:
f- A mapping function- Returns:
- A new tree
-
iterateOctants
public <C> void iterateOctants(C context, OctTreeOctantIterationIType<T,C> f)Description copied from interface:OctTreeReadableITypeIterate over all octants within the tree.- Specified by:
iterateOctantsin interfaceOctTreeReadableIType<T>- Type Parameters:
C- The type of context values- Parameters:
context- A contextual value passed toff- An iteration function
-
volumeFor
public com.io7m.jregions.core.unparameterized.volumes.VolumeI volumeFor(T item)
- Specified by:
volumeForin interfaceOctTreeReadableIType<T>- Parameters:
item- The item- Returns:
- The bounding volume that was specified for
item
-
containedBy
public void containedBy(com.io7m.jregions.core.unparameterized.volumes.VolumeI volume, java.util.Set<T> items)Description copied from interface:OctTreeReadableITypeReturns all objects in the tree that are completely contained withinvolume, saving the results toitems.- Specified by:
containedByin interfaceOctTreeReadableIType<T>- Parameters:
volume- The volume to examineitems- The returned items
-
overlappedBy
public void overlappedBy(com.io7m.jregions.core.unparameterized.volumes.VolumeI volume, java.util.Set<T> items)Description copied from interface:OctTreeReadableITypeReturns all objects in the tree that are overlappedvolume, saving the results toitems.- Specified by:
overlappedByin interfaceOctTreeReadableIType<T>- Parameters:
volume- The volume to examineitems- The returned items
-
raycast
public void raycast(Ray3D ray, java.util.SortedSet<OctTreeRaycastResultI<T>> items)
Description copied from interface:OctTreeReadableITypeReturns 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 interfaceOctTreeReadableIType<T>- Parameters:
ray- The rayitems- The intersected items
-
-