field.kit.math.geometry

Octree

class Octree[T <: Vec3] extends AABB

Direct port of Karsten Schmidts PointOctree . java to Scala/ FieldKit

Implements a spatial subdivision tree to work efficiently with large numbers of 3D particles. This octree can only be used for particle type objects and does NOT support 3D mesh geometry as other forms of Octrees do.

    see also:
  1. http://code . google.com/p/toxiclibs/source/browse/trunk/toxiclibs/src.core/toxi/geom/PointOctree.java

Inherited

  1. Hide All
  2. Show all
  1. AABB
  2. BoundingVolume
  3. Vec3
  4. Product
  5. Equals
  6. Vec
  7. AnyRef
  8. Any

Visibility

  1. Public
  2. All

Instance constructors

  1. new Octree(offset: Vec3, size: Vec3)

    Constructs a new Octree root node

    Constructs a new Octree root node

  2. new Octree(parent: Octree[T], offset: Vec3, halfSize: Vec3)

Value Members

  1. def !=(arg0: AnyRef): Boolean

    attributes: final
    definition classes: AnyRef
  2. def !=(arg0: Any): Boolean

    o != arg0 is the same as !(o == (arg0)).

    o != arg0 is the same as !(o == (arg0)).

    arg0

    the object to compare against this object for dis-equality .

    returns

    false if the receiver object is equivalent to the argument; true otherwise.

    attributes: final
    definition classes: Any
  3. def ##(): Int

    attributes: final
    definition classes: AnyRef → Any
  4. def $asInstanceOf[T0](): T0

    attributes: final
    definition classes: AnyRef
  5. def $isInstanceOf[T0](): Boolean

    attributes: final
    definition classes: AnyRef
  6. def *(v: Vec): Vec3

    Multiplies the given Vec3 with this Vec3 and returns the result

    Multiplies the given Vec3 with this Vec3 and returns the result

    returns

    result

    attributes: final
    definition classes: Vec3
  7. def *(s: Float): Vec3

    Multiplies the given float with this vector

    Multiplies the given float with this vector

    returns

    result as new vector

    attributes: final
    definition classes: Vec3
  8. def *=(v: Vec): Vec3

    attributes: final
    definition classes: Vec3
  9. def *=(s: Float): Vec3

    attributes: final
    definition classes: Vec3
  10. def +(v: Vec): Vec3

    Adds the given Vec3 to this Vec3 and returns the result

    Adds the given Vec3 to this Vec3 and returns the result

    returns

    result

    attributes: final
    definition classes: Vec3
  11. def +(s: Float): Vec3

    Adds the given Float to this vector

    Adds the given Float to this vector

    returns

    result as new vector

    attributes: final
    definition classes: Vec3
  12. def +=(v: Vec): Vec3

    attributes: final
    definition classes: Vec3
  13. def +=(s: Float): Vec3

    attributes: final
    definition classes: Vec3
  14. def -(v: Vec): Vec3

    Subtracts the given Vec3 from this Vec3 and returns the result

    Subtracts the given Vec3 from this Vec3 and returns the result

    returns

    result

    attributes: final
    definition classes: Vec3
  15. def -(s: Float): Vec3

    Subtracts the given float from this vector

    Subtracts the given float from this vector

    returns

    result as new vector

    attributes: final
    definition classes: Vec3
  16. def -=(v: Vec): Vec3

    attributes: final
    definition classes: Vec3
  17. def -=(s: Float): Vec3

    attributes: final
    definition classes: Vec3
  18. def /(v: Vec): Vec3

    Divides this Vec3 through the given Vec3 and returns the result

    Divides this Vec3 through the given Vec3 and returns the result

    returns

    result

    attributes: final
    definition classes: Vec3
  19. def /(s: Float): Vec3

    Divides this vector through the given float

    Divides this vector through the given float

    returns

    result as new vector

    attributes: final
    definition classes: Vec3
  20. def /=(v: Vec): Vec3

    attributes: final
    definition classes: Vec3
  21. def /=(s: Float): Vec3

    attributes: final
    definition classes: Vec3
  22. def :=(box: AABB): Unit

    Sets this AABB to be an exact copy of the passed in AABB

    Sets this AABB to be an exact copy of the passed in AABB

    definition classes: AABB
  23. def :=(v: Float): AABB

    Sets all components of this Vector to the given Float

    Sets all components of this Vector to the given Float

    returns

    itself

    definition classes: AABBVec3
  24. def :=(v: Vec): AABB

    Sets this Vectors components to the given Vec3

    Sets this Vectors components to the given Vec3

    returns

    itself

    definition classes: AABBVec3
  25. def :=(s: String): Vec3

    Attempts to parse the given String to set this Vectors components

    Attempts to parse the given String to set this Vectors components

    returns

    itself

    attributes: final
    definition classes: Vec3
  26. def :=(buffer: FloatBuffer, index: Int): Vec3

    Sets the xyz components to the data from a given buffer at a given index

    Sets the xyz components to the data from a given buffer at a given index

    returns

    itself

    attributes: final
    definition classes: Vec3
  27. def ==(arg0: AnyRef): Boolean

    o == arg0 is the same as if (o eq null) arg0 eq null else o.equals(arg0).

    o == arg0 is the same as if (o eq null) arg0 eq null else o.equals(arg0).

    arg0

    the object to compare against this object for equality .

    returns

    true if the receiver object is equivalent to the argument; false otherwise.

    attributes: final
    definition classes: AnyRef
  28. def ==(arg0: Any): Boolean

    o == arg0 is the same as o.equals(arg0).

    o == arg0 is the same as o.equals(arg0).

    arg0

    the object to compare against this object for equality .

    returns

    true if the receiver object is equivalent to the argument; false otherwise.

    attributes: final
    definition classes: Any
  29. val _extent: Vec3

    attributes: protected
    definition classes: AABB
  30. def angleBetween(v: Vec3): Unit

    angleBetween returns (in radians) the angle between two vectors .

    angleBetween returns (in radians) the angle between two vectors . It is assumed that both this vector and the given vector are unit vectors (iow, normalized).

    attributes: final
    definition classes: Vec3
  31. def apply(bounds: BoundingVolume, result: ArrayBuffer[T]): ArrayBuffer[T]

    Alias for find

    Alias for find

  32. def asInstanceOf[T0]: T0

    This method is used to cast the receiver object to be of type T0.

    This method is used to cast the receiver object to be of type T0.

    Note that the success of a cast at runtime is modulo Scala's erasure semantics. Therefore the expression1.asInstanceOf[String] will throw a ClassCastException at runtime, while the expressionList(1).asInstanceOf[List[String]] will not. In the latter example, because the type argument is erased as part of compilation it is not possible to check whether the contents of the list are of the requested typed.

    returns

    the receiver object .

    attributes: final
    definition classes: Any
  33. def canEqual(arg0: Any): Boolean

    definition classes: Vec3 → Equals
  34. var children: Array[Octree[T]]

    Stores the child nodes of this node

    Stores the child nodes of this node

  35. def clamp(max: Float): Vec3

    makes sure this vector does not exceed a certain length

    makes sure this vector does not exceed a certain length

    attributes: final
    definition classes: Vec3
  36. def clear: Unit

    Clears all children and data of this node

    Clears all children and data of this node

  37. def clone(): Vec3

    This method creates and returns a copy of the receiver object .

    This method creates and returns a copy of the receiver object .

    The default implementation of the clone method is platform dependent.

    returns

    a copy of the receiver object .

    definition classes: Vec3 → AnyRef
  38. def contains(p: Vec): Boolean

    no summary matey

    returns

    true, if the given Vec3 lies within this bounding volume

    attributes: final
    definition classes: AABBBoundingVolume
  39. def cross(v: Vec3): Vec3

    Calculates the cross product of this vector with a parameter vector v .

    Calculates the cross product of this vector with a parameter vector v .

    returns

    the cross product as a new vector

    attributes: final
    definition classes: Vec3
  40. def cross(v: Vec3, result: Vec3): Vec3

    Calculates the cross product of this vector with a parameter vector v .

    Calculates the cross product of this vector with a parameter vector v .

    returns

    the cross product vector

    attributes: final
    definition classes: Vec3
  41. var data: ArrayBuffer[T]

    attributes: protected
  42. def depth: Float

    definition classes: AABB
  43. def depth_=(v: Float): Unit

    definition classes: AABB
  44. def distance(v: Vec): Float

    attributes: final
    definition classes: Vec3
  45. def distanceSquared(v: Vec): Float

    attributes: final
    definition classes: Vec3
  46. def dot(v: Vec): Float

    Calculates the dot product of this vector with a provided vector .

    Calculates the dot product of this vector with a provided vector .

    returns

    the resultant dot product of this vector and a given vector .

    attributes: final
    definition classes: Vec3
  47. def eq(arg0: AnyRef): Boolean

    This method is used to test whether the argument (arg0) is a reference to the receiver object (this).

    This method is used to test whether the argument (arg0) is a reference to the receiver object (this).

    The eq method implements an [http://en.wikipedia.org/wiki/Equivalence_relation equivalence relation] on non-null instances of AnyRef: * It is reflexive: for any non-null instance x of type AnyRef, x.eq(x) returns true. * It is symmetric: for any non-null instances x and y of type AnyRef, x.eq(y) returns true if and only if y.eq(x) returns true. * It is transitive: for any non-null instances x, y, and z of type AnyRef if x.eq(y) returns true and y.eq(z) returns true, then x.eq(z) returns true.

    Additionally, the eq method has three other properties. * It is consistent: for any non-null instances x and y of type AnyRef, multiple invocations of x.eq(y) consistently returns true or consistently returns false. * For any non-null instance x of type AnyRef, x.eq(null) and null.eq(x) returns false. * null.eq(null) returns true.

    When overriding the equals or hashCode methods, it is important to ensure that their behavior is consistent with reference equality. Therefore, if two objects are references to each other (o1 eq o2), they should be equal to each other (o1 == o2) and they should hash to the same value (o1.hashCode == o2.hashCode).

    arg0

    the object to compare against this object for reference equality .

    returns

    true if the argument is a reference to the receiver object; false otherwise.

    attributes: final
    definition classes: AnyRef
  48. def equals(arg0: Any): Boolean

    This method is used to compare the receiver object (this) with the argument object (arg0) for equivalence.

    This method is used to compare the receiver object (this) with the argument object (arg0) for equivalence.

    The default implementations of this method is an [http://en.wikipedia.org/wiki/Equivalence_relation equivalence relation]: * It is reflexive: for any instance x of type Any, x.equals(x) should return true. * It is symmetric: for any instances x and y of type Any, x.equals(y) should return true if and only if y.equals(x) returns true. * It is transitive: for any instances x, y, and z of type AnyRef if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.

    If you override this method, you should verify that your implementation remains an equivalence relation. Additionally, when overriding this method it is often necessary to override hashCode to ensure that objects that are "equal" (o1.equals(o2) returns true) hash to the same scala.Int (o1.hashCode.equals(o2.hashCode)).

    arg0

    the object to compare against this object for equality .

    returns

    true if the receiver object is equivalent to the argument; false otherwise.

    definition classes: Vec3 → Equals → AnyRef → Any
  49. def extent: Vec3

    definition classes: AABB
  50. def extent_=(value: Float): Unit

    definition classes: AABB
  51. def extent_=(value: Vec3): Unit

    definition classes: AABB
  52. def finalize(): Unit

    This method is called by the garbage collector on the receiver object when garbage collection determines that there are no more references to the object .

    This method is called by the garbage collector on the receiver object when garbage collection determines that there are no more references to the object .

    The details of when and if the finalize method are invoked, as well as the interaction between finalizeand non-local returns and exceptions, are all platform dependent.

    attributes: protected
    definition classes: AnyRef
  53. def find(bounds: BoundingVolume, result: ArrayBuffer[T]): ArrayBuffer[T]

    Selects all stored points within the given axis-aligned bounding box .

    Selects all stored points within the given axis-aligned bounding box .

    result

    the ArrayBuffer

    returns

    all points with the box volume

  54. def findLeaf(p: T): Octree[T]

    Finds the leaf node which spatially relates to the given point

    Finds the leaf node which spatially relates to the given point

    p

    point to check

    returns

    leaf node or null if point is outside the tree dimensions

  55. def getClass(): java.lang.Class[_]

    Returns a representation that corresponds to the dynamic class of the receiver object .

    Returns a representation that corresponds to the dynamic class of the receiver object .

    The nature of the representation is platform dependent.

    returns

    a representation that corresponds to the dynamic class of the receiver object .

    attributes: final
    definition classes: AnyRef
  56. def halfDepth: Float

    definition classes: AABB
  57. def halfHeight: Float

    definition classes: AABB
  58. def halfWidth: Float

    definition classes: AABB
  59. def hashCode(): Int

    Returns a hash code value for the object .

    Returns a hash code value for the object .

    The default hashing algorithm is platform dependent.

    Note that it is allowed for two objects to have identical hash codes (o1.hashCode.equals(o2.hashCode)) yet not be equal (o1.equals(o2) returns false). A degenerate implementation could always return 0. However, it is required that if two objects are equal (o1.equals(o2) returns true) that they have identical hash codes (o1.hashCode.equals(o2.hashCode)). Therefore, when overriding this method, be sure to verify that the behavior is consistent with the equals method.

    returns

    the hash code value for the object .

    definition classes: Vec3 → AnyRef → Any
  60. def height: Float

    definition classes: AABB
  61. def height_=(v: Float): Unit

    definition classes: AABB
  62. def insert(p: T): Boolean

    Adds a new point/particle to the tree structure .

    Adds a new point/particle to the tree structure . All points are stored within leaf nodes only. The tree implementation is using lazy instantiation for all intermediate tree levels.

    p
    returns

    true, if point has been added successfully

  63. def interpolate(target: Vec3, delta: Float): Vec3

    Interpolates the vector towards the given target vector using linear interpolation .

    Interpolates the vector towards the given target vector using linear interpolation .

    attributes: final
    definition classes: Vec3
  64. def intersects(center: Vec, radius: Float): Boolean

    no summary matey

    returns

    true, when the given Sphere intersects with this AABB

    attributes: final
    definition classes: AABB
  65. def intersects(sphere: Sphere): Boolean

    no summary matey

    returns

    true, when the given Sphere intersects with this AABB

    attributes: final
    definition classes: AABBBoundingVolume
  66. def intersects(box: AABB): Boolean

    no summary matey

    returns

    true, when this and the given AABB intersect with each other

    attributes: final
    definition classes: AABBBoundingVolume
  67. def intersects(v: BoundingVolume): Boolean

    attributes: final
    definition classes: BoundingVolume
  68. val isAutoReducing: Boolean

    Defines wether this node automatically removes branches when a point was removed

    Defines wether this node automatically removes branches when a point was removed

    attributes: protected
  69. def isInstanceOf[T0]: Boolean

    This method is used to test whether the dynamic type of the receiver object is T0.

    This method is used to test whether the dynamic type of the receiver object is T0.

    Note that the test result of the test is modulo Scala's erasure semantics. Therefore the expression1.isInstanceOf[String] will return false, while the expression List(1).isInstanceOf[List[String]] will return true. In the latter example, because the type argument is erased as part of compilation it is not possible to check whether the contents of the list are of the requested typed.

    returns

    true if the receiver object is an instance of erasure of type T0; false otherwise.

    attributes: final
    definition classes: Any
  70. def isValid: Boolean

    checks wether one or several components of this vector are Not a Number or Infinite

    checks wether one or several components of this vector are Not a Number or Infinite

    attributes: final
    definition classes: Vec3
  71. def length: Float

    attributes: final
    definition classes: Vec3
  72. def lengthSquared: Float

    attributes: final
    definition classes: Vec3
  73. var max: Vec3

    definition classes: AABB
  74. var min: Vec3

    definition classes: AABB
  75. var minSize: Float

    Alternative tree recursion limit, number of world units when cells are not subdivided any further

    Alternative tree recursion limit, number of world units when cells are not subdivided any further

  76. def ne(arg0: AnyRef): Boolean

    o.ne(arg0) is the same as !(o.eq(arg0)).

    o.ne(arg0) is the same as !(o.eq(arg0)).

    arg0

    the object to compare against this object for reference dis-equality .

    returns

    false if the argument is not a reference to the receiver object; true otherwise.

    attributes: final
    definition classes: AnyRef
  77. def normalise: Vec3

    Normalises this vector so that its magnitude = 1 .

    Normalises this vector so that its magnitude = 1 .

    returns

    itself

    attributes: final
    definition classes: Vec3
  78. def normaliseTo(len: Float): Vec3

    Normalizes the vector to the given length .

    Normalizes the vector to the given length .

    returns

    itself

    attributes: final
    definition classes: Vec3
  79. def normalize: Vec3

    @deprecated

    @deprecated

    attributes: final
    definition classes: Vec3
  80. def normalizeTo(len: Float): Vec3

    @deprecated

    @deprecated

    attributes: final
    definition classes: Vec3
  81. def notify(): Unit

    Wakes up a single thread that is waiting on the receiver object's monitor .

    Wakes up a single thread that is waiting on the receiver object's monitor .

    attributes: final
    definition classes: AnyRef
  82. def notifyAll(): Unit

    Wakes up all threads that are waiting on the receiver object's monitor .

    Wakes up all threads that are waiting on the receiver object's monitor .

    attributes: final
    definition classes: AnyRef
  83. var numChildren: Int

    the number of child nodes (max .

    the number of child nodes (max . 8)

  84. def octantID(x: Float, y: Float, z: Float): Int

    Computes the local child octant/cube index for the given point

    Computes the local child octant/cube index for the given point

    returns

    octant index

    attributes: protected final
  85. val offset: Vec3

  86. def productArity: Int

    definition classes: Vec3 → Product
  87. def productElement(arg0: Int): Any

    definition classes: Vec3 → Product
  88. def productElementName(n: Int): String

    definition classes: Product
  89. def productElements: Iterator[Any]

    definition classes: Product
      deprecated:
    1. use productIterator instead

  90. def productIterator: Iterator[Any]

    definition classes: Product
  91. def productPrefix: String

    definition classes: Vec3 → Product
  92. def put(buffer: FloatBuffer): Vec3

    Puts this vector into the given FloatBuffer

    Puts this vector into the given FloatBuffer

    attributes: final
    definition classes: Vec3
  93. def put(buffer: FloatBuffer, index: Int): Vec3

    Puts this vector at the given postion into a FloatBuffer

    Puts this vector at the given postion into a FloatBuffer

    attributes: final
    definition classes: Vec3
  94. def randomise: Vec3

    Sets this vector

    Sets this vector

    attributes: final
    definition classes: Vec3
  95. def randomiseTo(len: Float): Vec3

    attributes: final
    definition classes: Vec3
  96. def reduceBranch: Unit

    Tries to release memory by clearing up this branch

    Tries to release memory by clearing up this branch

    attributes: protected
  97. def remove(p: T): Boolean

    Removes a point from the tree and (optionally) tries to release memory by reducing now empty sub-branches .

    Removes a point from the tree and (optionally) tries to release memory by reducing now empty sub-branches .

    p

    point to delete

    returns

    true, if the point was found & removed

  98. def set(s: String): Vec3

    Attempts to parse the given String to set this Vectors components

    Attempts to parse the given String to set this Vectors components

    returns

    itself

    attributes: final
    definition classes: Vec3
  99. def set(buffer: FloatBuffer, index: Int): Vec3

    Sets the xyz components to the data from a given buffer at a given index

    Sets the xyz components to the data from a given buffer at a given index

    returns

    itself

    attributes: final
    definition classes: Vec3
  100. def set(s: Float): Vec3

    Sets all components of this Vector to the given Float

    Sets all components of this Vector to the given Float

    returns

    itself

    attributes: final
    definition classes: Vec3
  101. def set(v: Vec): Vec3

    Sets this Vectors components to the given Vec3

    Sets this Vectors components to the given Vec3

    returns

    itself

    attributes: final
    definition classes: Vec3
  102. def size: Float

    no summary matey

    returns

    the maximum size of this bounding volume in every spatial dimension

    definition classes: AABBBoundingVolume
  103. def size_=(value: Float): Unit

    sets the maximum size of this bounding volume

    sets the maximum size of this bounding volume

    definition classes: AABBBoundingVolume
  104. def slerp(target: Vec3, delta: Float): Vec3

    interpolates towards the given target Vector

    interpolates towards the given target Vector

    attributes: final
    definition classes: Vec3
  105. def synchronized[T0](arg0: T0): T0

    attributes: final
    definition classes: AnyRef
  106. def toLabel: String

    definition classes: Vec3
  107. def toString(): String

    Returns a string representation of the object .

    Returns a string representation of the object .

    The default representation is platform dependent.

    returns

    a string representation of the object .

    definition classes: OctreeVec3 → AnyRef → Any
  108. val treeDepth: Int

  109. def tuple: (Float, Float, Float)

    attributes: final
    definition classes: Vec3
  110. def updateBounds: AABB

    definition classes: AABB
  111. def wait(): Unit

    attributes: final
    definition classes: AnyRef
  112. def wait(arg0: Long, arg1: Int): Unit

    attributes: final
    definition classes: AnyRef
  113. def wait(arg0: Long): Unit

    attributes: final
    definition classes: AnyRef
  114. def width: Float

    definition classes: AABB
  115. def width_=(v: Float): Unit

    definition classes: AABB
  116. var x: Float

    definition classes: Vec3Vec
  117. var y: Float

    definition classes: Vec3Vec
  118. var z: Float

    definition classes: Vec3Vec
  119. def zero: Unit

    Resets this vectors components all to zero

    Resets this vectors components all to zero

    attributes: final
    definition classes: Vec3