Trait/Object

de.sciss.lucre.data

SkipOctree

Related Docs: object SkipOctree | package data

Permalink

trait SkipOctree[S <: Sys[S], D <: Space[D], A] extends Mutable[data.SkipOctree.S.ID, data.SkipOctree.S.Tx]

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.

Linear Supertypes
Mutable[S.ID, S.Tx], Disposable[S.Tx], Writable, Identifiable[S.ID], AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. SkipOctree
  2. Mutable
  3. Disposable
  4. Writable
  5. Identifiable
  6. AnyRef
  7. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def +=(elem: A)(implicit tx: S.Tx): SkipOctree.this.type

    Permalink

    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.

  2. abstract def -=(elem: A)(implicit tx: S.Tx): SkipOctree.this.type

    Permalink

    Removes an element from the tree.

    Removes an element from the tree. If the element is not found, this operation does nothing.

  3. abstract def add(elem: A)(implicit tx: S.Tx): Boolean

    Permalink

    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 is true if the elements were not equal, false if they were equal

  4. abstract def clear()(implicit tx: S.Tx): Unit

    Permalink
  5. abstract def contains(elem: A)(implicit tx: S.Tx): Boolean

    Permalink

    Tests whether the tree contains an element.

  6. abstract def debugPrint()(implicit tx: S.Tx): String

    Permalink

    Returns a string debug representation of the octree.

  7. abstract def dispose()(implicit tx: S.Tx): Unit

    Permalink
    Definition Classes
    Disposable
  8. abstract def get(point: D.PointLike)(implicit tx: S.Tx): Option[A]

    Permalink

    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.

  9. abstract def hyperCube: D.HyperCube

    Permalink

    The base square of the tree.

    The base square of the tree. No point can lie outside this square (or hyper-cube).

  10. abstract def id: S.ID

    Permalink
    Definition Classes
    Identifiable
  11. abstract def isDefinedAt(point: D.PointLike)(implicit tx: S.Tx): Boolean

    Permalink

    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

  12. abstract def isEmpty(implicit tx: S.Tx): Boolean

    Permalink

    Tests whether the tree is empty (true) or whether it contains any elements (false).

  13. abstract def iterator(implicit tx: S.Tx): Iterator[A]

    Permalink

    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.

  14. abstract def nearestNeighbor[M](point: D.PointLike, metric: DistanceMeasure[M, D])(implicit tx: S.Tx): A

    Permalink

    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 than IntPoint2DLike(-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

  15. abstract def nearestNeighborOption[M](point: D.PointLike, metric: DistanceMeasure[M, D])(implicit tx: S.Tx): Option[A]

    Permalink

    Same as nearestNeighbor but returning an Option, thus not throwing an exception if no neighbor is found.

  16. abstract def numLevels(implicit tx: S.Tx): Int

    Permalink

    Reports the number of decimation levels in the tree.

  17. abstract def numOrthants: Int

    Permalink

    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 to QNode.child().

  18. abstract def pointView: (A, S.Tx) ⇒ D.PointLike

    Permalink

    A function which maps an element (possibly through transactional access) to a geometric point coordinate.

  19. abstract def rangeQuery[Area](qs: QueryShape[Area, D])(implicit tx: S.Tx): Iterator[A]

    Permalink
  20. abstract def remove(elem: A)(implicit tx: S.Tx): Boolean

    Permalink

    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.

  21. abstract def removeAt(point: D.PointLike)(implicit tx: S.Tx): Option[A]

    Permalink

    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, or None if no element was found for the given point.

  22. abstract def size(implicit tx: S.Tx): Int

    Permalink

     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.

  23. abstract def space: D

    Permalink

    The space (i.e., resolution and dimensionality) underlying the tree.

  24. abstract def toIndexedSeq(implicit tx: S.Tx): IndexedSeq[A]

    Permalink

     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.

  25. abstract def toList(implicit tx: S.Tx): List[A]

    Permalink

     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.

  26. abstract def toSeq(implicit tx: S.Tx): Seq[A]

    Permalink

     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 a Stream and thus subject to further changes to the tree while traversing. The returned seq instead is 'forced' and thus stable.

  27. abstract def toSet(implicit tx: S.Tx): Set[A]

    Permalink

    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.

  28. abstract def transformAt(point: D.PointLike)(fun: (Option[A]) ⇒ Option[A])(implicit tx: S.Tx): Option[A]

    Permalink

    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 be Some new element to be stored, or None 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)

  29. abstract def update(elem: A)(implicit tx: S.Tx): Option[A]

    Permalink

    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

  30. abstract def write(out: DataOutput): Unit

    Permalink
    Definition Classes
    Writable

Concrete Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  5. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  6. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  7. def equals(that: Any): Boolean

    Permalink
    Definition Classes
    Identifiable → AnyRef → Any
  8. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  9. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  10. def hashCode(): Int

    Permalink
    Definition Classes
    Identifiable → AnyRef → Any
  11. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  12. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  13. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  14. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  15. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  16. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  17. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  18. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  19. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from Mutable[S.ID, S.Tx]

Inherited from Disposable[S.Tx]

Inherited from Writable

Inherited from Identifiable[S.ID]

Inherited from AnyRef

Inherited from Any

Ungrouped