Outdated egg!
This is an egg for CHICKEN 4, the unsupported old release. You're almost certainly looking for the CHICKEN 5 version of this egg, if it exists.
If it does not exist, there may be equivalent functionality provided by another egg; have a look at the egg index. Otherwise, please consider porting this egg to the current version of CHICKEN.
spatial-trees
Various spatial tree implementations.
TOC »
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
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/>.