trait SkipOctree[T <: Exec[T], P, H, A] extends Mutable[T]
A SkipOctree
is a multi-dimensional data structure that
maps coordinates to values. It extends the interface
of Scala's mutable Map
and adds further operations such
as range requires and nearest neighbour search.
- Alphabetic
- By Inheritance
- SkipOctree
- Mutable
- Disposable
- Writable
- Identified
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Abstract Value Members
- abstract def +=(elem: A)(implicit tx: T): SkipOctree.this.type
Adds an element to the tree.
Adds an element to the tree. If there is already an element stored at the point represented by the new element, it will be replaced.
- abstract def -=(elem: A)(implicit tx: T): SkipOctree.this.type
Removes an element from the tree.
Removes an element from the tree. If the element is not found, this operation does nothing.
- abstract def add(elem: A)(implicit tx: T): Boolean
Adds an element to the tree (or replaces a given element with the same point location).
Adds an element to the tree (or replaces a given element with the same point location).
- elem
the element to add
- returns
true
if the element is new in the tree. If a previous entry with the same point view is overwritten, this istrue
if the elements were not equal,false
if they were equal
- abstract def clear()(implicit tx: T): Unit
- abstract def contains(elem: A)(implicit tx: T): Boolean
Tests whether the tree contains an element.
- abstract def debugPrint()(implicit tx: T): String
Returns a string debug representation of the octree.
- abstract def dispose()(implicit tx: T): Unit
- Definition Classes
- Disposable
- abstract def get(point: P)(implicit tx: T): Option[A]
Queries the element at a given point.
Queries the element at a given point.
- point
the point to look up.
- returns
Some
element if found,None
if the point was not present.
- abstract def hyperCube: H
The base square of the tree.
The base square of the tree. No point can lie outside this square (or hyper-cube).
- abstract def id: Ident[T]
- Definition Classes
- Identified
- abstract def isDefinedAt(point: P)(implicit tx: T): Boolean
Queries whether an element is stored at a given point.
Queries whether an element is stored at a given point.
- point
the point to query
- returns
true
if an element is associated with the query point,false
otherwise
- abstract def isEmpty(implicit tx: T): Boolean
Tests whether the tree is empty (
true
) or whether it contains any elements (false
). - abstract def iterator(implicit tx: T): Iterator[A]
An
Iterator
which iterates over the points stored in the octree, using an in-order traversal directed by the orthant indices of the nodes of the tree.An
Iterator
which iterates over the points stored in the octree, using an in-order traversal directed by the orthant indices of the nodes of the tree.Great care has to be taken as the iterator might be corrupted if the tree is successively changed before the iterator is exhausted.
- abstract def nearestNeighbor[M](point: P, metric: DistanceMeasure[M, P, H])(implicit tx: T): A
Reports the nearest neighbor entry with respect to a given point.
Reports the nearest neighbor entry with respect to a given point.
Note: There is a potential numeric overflow if the squared distance of the query point towards the furthest corner of the tree's root hyper-cube exceeds 63 bits. For a root
IntSquare(0x40000000, 0x40000000, 0x40000000)
, this happens for example for any point going more towards north-west thanIntPoint2DLike(-1572067139, -1572067139)
.- point
the point of which the nearest neighbor is to be found
- metric
(description missing)
- Exceptions thrown
NoSuchElementException
if the tree is empty
- abstract def nearestNeighborOption[M](point: P, metric: DistanceMeasure[M, P, H])(implicit tx: T): Option[A]
Same as
nearestNeighbor
but returning anOption
, thus not throwing an exception if no neighbor is found. - abstract def numLevels(implicit tx: T): Int
Reports the number of decimation levels in the tree.
- abstract def numOrthants: Int
The number of orthants in each hyperCube.
The number of orthants in each hyperCube. This is equal to
1 << numDimensions
and gives the upper bound of the index toQNode.child()
. - abstract def pointView: (A, T) => P
A function which maps an element (possibly through transactional access) to a geometric point coordinate.
- abstract def rangeQuery[Area](qs: QueryShape[Area, P, H])(implicit tx: T): Iterator[A]
- abstract def remove(elem: A)(implicit tx: T): Boolean
Removes an element from the tree
Removes an element from the tree
- elem
the element to remove
- returns
true
if the element had been found in the tree and thus been removed.
- abstract def removeAt(point: P)(implicit tx: T): Option[A]
Removes the element stored under a given point view.
Removes the element stored under a given point view.
- point
the location of the element to remove
- returns
the element removed, wrapped as
Some
, orNone
if no element was found for the given point.
- abstract def size(implicit tx: T): Int
Queries the number of leaves in the tree.
Queries the number of leaves in the tree. This may be a very costly action, so it is recommended to only use it for debugging purposes.
- abstract def space: Space[P, H]
The space (i.e., resolution and dimensionality) underlying the tree.
- abstract def toIndexedSeq(implicit tx: T): IndexedSeq[A]
Converts the tree into a linearized indexed sequence.
Converts the tree into a linearized indexed sequence. This is not necessarily a very efficient method, and should usually just be used for debugging.
- abstract def toList(implicit tx: T): List[A]
Converts the tree into a linearized list.
Converts the tree into a linearized list. This is not necessarily a very efficient method, and should usually just be used for debugging.
- abstract def toSeq(implicit tx: T): Seq[A]
Converts the tree into a linearized sequence.
Converts the tree into a linearized sequence. This is not necessarily a very efficient method, and should usually just be used for debugging. To avoid surprises, this does not call
iterator.toSeq
because that would produce aStream
and thus subject to further changes to the tree while traversing. The returned seq instead is 'forced' and thus stable. - abstract def toSet(implicit tx: T): Set[A]
Converts the tree into a non-transactional set.
Converts the tree into a non-transactional set. This is not necessarily a very efficient method, and should usually just be used for debugging.
- abstract def transformAt(point: P)(fun: (Option[A]) => Option[A])(implicit tx: T): Option[A]
Looks up a point and applies a transformation to the entry associated with it.
Looks up a point and applies a transformation to the entry associated with it. This can be used to update an element in-place, or used for maintaining a spatial multi-map.
- point
the location at which to perform the transformation
- fun
a function to transform the element found, or generate a new element. The argument is the element previously stored with the point, or
None
if no element is found. The result is expected to beSome
new element to be stored, orNone
if no element is to be stored (in this case, if an element was previously stored, it is removed)- returns
the previously stored element (if any)
- abstract def update(elem: A)(implicit tx: T): Option[A]
Adds an element to the tree (or replaces a given element with the same point location).
Adds an element to the tree (or replaces a given element with the same point location).
- elem
the element to add to the tree
- returns
the old element stored for the same point view, if it existed
- abstract def write(out: DataOutput): Unit
- Definition Classes
- Writable
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @HotSpotIntrinsicCandidate()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(that: Any): Boolean
- Definition Classes
- Identified → AnyRef → Any
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- def hashCode(): Int
- Definition Classes
- Identified → AnyRef → Any
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated