chickadee » spatial-trees

spatial-trees

Various spatial tree implementations.

Usage

(require-extension kd-tree)

Documentation

The spatial-tree library is intended to contain a collection of spatial tree implementations. A spatial tree is a data structure for organizing and searching points in an n-dimensional space. The present implementation code implements a single spatial tree structure, the k-d tree.

Point

This library currently only supported points in 3D space.

make-point3d:procedure

3D point constructor.

point3d?procedure

3D point predicate.

point3d-xprocedure
point3d-yprocedure
point3d-zprocedure

Accessors for the x,y,z coordinates of a 3D point.

KD-tree

A K-D tree (short for k-dimensional tree) is a space-partitioning data structure for organizing points in a k-dimensional space.

Constructors

  
list->kd-tree:procedure

Given a list of points, constructs and returns a K-D tree object.

Predicates

kd-tree?procedure

Returns #t if the given object is a K-D tree, #f otherwise.

kd-tree-empty?procedure

Returns #t if the given K-D tree object is empty, #f otherwise.

kd-tree-is-valid?procedure

Checks whether the K-D tree property holds for the given tree. Specifically, it tests that all points in the left subtree lie to the left of the plane, p is on the plane, and all points in the right subtree lie to the right.

kd-tree-all-subtrees-are-valid?procedure

Checks whether the K-D tree property holds for the given tree and all subtrees.

Accessors

kd-tree->listprocedure

Returns a list with the points contained in the tree.

kd-tree->list*procedure

Returns a list where every element has the form (i . p), where i is the relative index of this point, and p is the point.

kd-tree-subtreesprocedure
kd-tree-pointprocedure

Combinators

kd-tree-mapprocedure
kd-tree-for-eachprocedure
kd-tree-for-each*procedure
kd-tree-fold-rightprocedure
kd-tree-fold-right*procedure

Query procedures

kd-tree-nearest-neighborprocedure
kd-tree-near-neighborsprocedure
kd-tree-near-neighbors*procedure
kd-tree-k-nearest-neighborsprocedure
kd-tree-sliceprocedure
kd-tree-slice*procedure

Modifiers

kd-tree-removeprocedure

Examples

About this egg

Author

Ivan Raikov

Version history

2.0
Improvements to internal representation
1.0
Initial release

License

Copyright 2012 Ivan Raikov and the Okinawa Institute of Science and Technology.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at
your option) any later version.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

A full copy of the GPL license can be found at
<http://www.gnu.org/licenses/>.

Contents »