Selects all stored points within the given sphere volume
Selects all stored points within the given sphere volume
Selects all stored points within the given axis-aligned bounding box
Selects all stored points within the given axis-aligned bounding box.
AABB
the ArrayBuffer
all points with the box volume
Finds the leaf node which spatially relates to the given point
Finds the leaf node which spatially relates to the given point
point to check
leaf node or null if point is outside the tree dimensions
Stores the child nodes of this node
Stores the child nodes of this node
Clears all children and data of this node
Clears all children and data of this node
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.
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 equivalence relation:
x
of type Any
,
x.equals(x)
should return true
.x
and y
of type
Any
, x.equals(y)
should return true
if and only
if y.equals(x)
returns true
.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 Int
(o1.hashCode.equals(o2.hashCode)
).
the object to compare against this object for equality.
true
if the receiver object is equivalent to the argument; false
otherwise.
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.
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.
true, if point has been added successfully
Alias for apply(p:Vec)
Alias for apply(p:Vec)
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
the number of child nodes (max
the number of child nodes (max. 8)
Alias for apply(box:AABB, result:ArrayBuffer[Vec])
Alias for apply(box:AABB, result:ArrayBuffer[Vec])
Alias for apply(sphere:Sphere, result:ArrayBuffer[Vec])
Alias for apply(sphere:Sphere, result:ArrayBuffer[Vec])
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.
point to delete
true, if the point was found & removed
Returns a string representation of the object
Returns a string representation of the object.
The default representation is platform dependent.
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.