TSlackTree

A 2D version of a KDTree for TPoint datatype

Note: For more dimensions, and/or floating point values, along with category or index reference see TKDTree.


TSlackTree.Init

procedure TSlackTree.Init(TPA: TPointArray);

Builds the KDTree.

Time complexity average is O(n log n)


TSlackTree.IndexOf

function TSlackTree.IndexOf(P: TPoint): Integer;

Search and find the index for use in TSlackTree.Data for a given point p

Time complexity average is O(log n)


TSlackTree.Find

function TSlackTree.Find(P: TPoint): PSlackNode;

Search and find the given point p, returns a node, a pointer to the tree node.

Time complexity average is O(log n)


TSlackTree.Hide

procedure TSlackTree.Hide(idx:Integer);

Hide the node (by index) so that queries will not return it.

Time complexity average is O(1)


TSlackTree.Hide

function TSlackTree.Hide(P: TPoint): Boolean; overload;

Hide the node (by TPoint) so that queries will not return it.

Time complexity average is O(log n)


TSlackTree.RawNearest

function TSlackTree.RawNearest(P: TPoint; NotEqual: Boolean = False): PSlackNode;

Returns the closest node to the point given.

Time complexity average is O(log n)


TSlackTree.Nearest

function TSlackTree.Nearest(P: TPoint; NotEqual :Boolean = False): TPoint;

Returns the closest point to the point given.

Time complexity average is O(log n)


TSlackTree.RawKNearest

function TSlackTree.RawKNearest(P: TPoint; k:Integer; NotEqual: Boolean = False): TSlackRefArray;

Returns the k closest node to the point given.

Time complexity average is O(k * log n)


TSlackTree.KNearest

function TSlackTree.KNearest(P: TPoint; k:Integer; NotEqual: Boolean = False): TPointArray;

Returns the k closest points to the point given.

Time complexity average is O(k * log n)


TSlackTree.RawRangeQuery

function TSlackTree.RawRangeQuery(B:TBox): TSlackRefArray;

TSlackTree.RangeQuery

function TSlackTree.RangeQuery(B:TBox; hide:Boolean = False): TPointArray;

Returns all the points that are within the given box.

Time complexity average is O(k * log n) where k is the number of points returned


TSlackTree.RangeQueryEx

function TSlackTree.RangeQueryEx(query:TPoint; xRad,yRad:Double; hide: Boolean = False): TPointArray;

Returns all the points that are within the given range xRad and yRad.

Time complexity average is O(k * log n) where k is the number of points returned


TSlackTree.RangeQueryEx

function TSlackTree.RangeQueryEx(query:TPoint; xmin,ymin,xmax,ymax: Double; hide: Boolean = False): TPointArray;

Returns all the points that are further away than xmin, and ymin, but closer than xmax, and ymax from the query.

Time complexity average is O(k * log n) where k is the number of points returned


TSlackTree.Clusters

function TSlackTree.Clusters(xRad,yRad: Single): T2DPointArray;

Like TPA.Cluster, but acts on the points in the tree, and allows you to use floats for xRad, and yRad. This methods also exists in TKDTree and works in n dimensions.

Time complexity average is between O(n) and O(n log n)

Speedwise, once the tree is built this method is on pair with ClusterTPA.


TSlackTree.RefArray

function TSlackTree.RefArray: TSlackRefArray;