T
- The per cell item data type.public class KDTree<T> extends PartitionTree<T,KDTree<T>>
Modifier and Type | Field and Description |
---|---|
private java.awt.geom.Rectangle2D |
bounds
The axis aligned bounding rectangle defining the
bounds of this kd-tree cell.
|
private KDTree<T> |
high
The high child of this kd-tree.
|
private KDTree<T> |
low
The low child of this kd-tree.
|
private KDTree<T> |
parent
The parent kd-tree this kd-tree is a cell in.
|
private java.awt.geom.Point2D |
point
The point defining the line splitting this kd-tree
cell into a low and high cell.
|
private boolean |
xAxis
The way this kd-tree node is split into a low and
high cell.
|
Modifier | Constructor and Description |
---|---|
private |
KDTree(KDTree<T> parent,
java.util.List<java.awt.geom.Point2D> points,
boolean xAxis)
Constructs a new child kd-tree node with the given parent
node, point set to build a sub tree with and axis to split on.
|
|
KDTree(java.util.List<java.awt.geom.Point2D> points)
Constructs a new kd-tree for the given point set.
|
Modifier and Type | Method and Description |
---|---|
java.awt.geom.Rectangle2D |
getBounds()
Gets the bounding rectangle of this kd-tree node.
|
java.util.List<KDTree<T>> |
getChildren()
Gets the child nodes of this tree node.
|
KDTree<T> |
getHighNode()
Gets the child node containing the high value
points stored in the children of this node.
|
KDTree<T> |
getLowNode()
Gets the child node containing the low value
points stored in the children of this node.
|
KDTree<T> |
getParent()
Gets the parent tree node of this node.
|
java.awt.geom.Point2D |
getPoint()
Gets the point defining the line dividing this kd-tree
node into two child nodes.
|
KDTree<T> |
getSelf()
Gets 'this' partition tree.
|
java.awt.Shape |
getShape()
Gets the shape defining the boundary of this tree cell.
|
boolean |
intersects(java.awt.geom.Line2D line)
Checks if the given line intersects this kd-tree node.
|
boolean |
isLeafCell()
Checks if this tree node is a leaf cell.
|
void |
render(java.awt.Graphics2D g)
Renders this object.
|
addData, getData, getDepth, getHeight, setMarked, streamCells, streamLeafCells
getAnimation, hasAnimation, renderOrAnimate, runAnimation, setAnimation
private KDTree<T> parent
null
if this is the root node of the tree.private KDTree<T> low
null
if this is a leaf cell.private KDTree<T> high
null
if this is a leaf cell.private java.awt.geom.Point2D point
null
if this is a leaf cell.private boolean xAxis
private java.awt.geom.Rectangle2D bounds
public KDTree(java.util.List<java.awt.geom.Point2D> points)
points
- The points to build a kd-tree from.private KDTree(KDTree<T> parent, java.util.List<java.awt.geom.Point2D> points, boolean xAxis)
parent
- The parent node of this kd-tree node.points
- The points to build a kd-subtree from.xAxis
- True if this cell should be split based on the
X coordinate of points, false to split on the Y coordinate.public java.awt.geom.Point2D getPoint()
public KDTree<T> getLowNode()
public KDTree<T> getHighNode()
public boolean intersects(java.awt.geom.Line2D line)
line
- The line to check for intersection.public java.awt.geom.Rectangle2D getBounds()
public void render(java.awt.Graphics2D g)
RenderableObject
render
in class PartitionTree<T,KDTree<T>>
g
- The graphics context to use.public java.awt.Shape getShape()
PartitionTree
getShape
in class PartitionTree<T,KDTree<T>>
public boolean isLeafCell()
PartitionTree
isLeafCell
in class PartitionTree<T,KDTree<T>>
public java.util.List<KDTree<T>> getChildren()
PartitionTree
getChildren
in class PartitionTree<T,KDTree<T>>
public KDTree<T> getParent()
PartitionTree
getParent
in class PartitionTree<T,KDTree<T>>
null
if this is node
is the root node of the tree.public KDTree<T> getSelf()
PartitionTree
getSelf
in class PartitionTree<T,KDTree<T>>