Statistics
| Branch: | Revision:

root / rgbdslam / gicp / ann_1.1.1 / src / kd_split.h @ 9240aaa3

History | View | Annotate | Download (3.63 KB)

1
//----------------------------------------------------------------------
2
// File:                        kd_split.h
3
// Programmer:                Sunil Arya and David Mount
4
// Description:                Methods for splitting kd-trees
5
// Last modified:        01/04/05 (Version 1.0)
6
//----------------------------------------------------------------------
7
// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
8
// David Mount.  All Rights Reserved.
9
// 
10
// This software and related documentation is part of the Approximate
11
// Nearest Neighbor Library (ANN).  This software is provided under
12
// the provisions of the Lesser GNU Public License (LGPL).  See the
13
// file ../ReadMe.txt for further information.
14
// 
15
// The University of Maryland (U.M.) and the authors make no
16
// representations about the suitability or fitness of this software for
17
// any purpose.  It is provided "as is" without express or implied
18
// warranty.
19
//----------------------------------------------------------------------
20
// History:
21
//        Revision 0.1  03/04/98
22
//                Initial release
23
//----------------------------------------------------------------------
24

    
25
#ifndef ANN_KD_SPLIT_H
26
#define ANN_KD_SPLIT_H
27

    
28
#include "kd_tree.h"                                        // kd-tree definitions
29

    
30
//----------------------------------------------------------------------
31
//        External entry points
32
//                These are all splitting procedures for kd-trees.
33
//----------------------------------------------------------------------
34

    
35
void kd_split(                                                        // standard (optimized) kd-splitter
36
        ANNpointArray                pa,                                // point array (unaltered)
37
        ANNidxArray                        pidx,                        // point indices (permuted on return)
38
        const ANNorthRect        &bnds,                        // bounding rectangle for cell
39
        int                                        n,                                // number of points
40
        int                                        dim,                        // dimension of space
41
        int                                        &cut_dim,                // cutting dimension (returned)
42
        ANNcoord                        &cut_val,                // cutting value (returned)
43
        int                                        &n_lo);                        // num of points on low side (returned)
44

    
45
void midpt_split(                                                // midpoint kd-splitter
46
        ANNpointArray                pa,                                // point array (unaltered)
47
        ANNidxArray                        pidx,                        // point indices (permuted on return)
48
        const ANNorthRect        &bnds,                        // bounding rectangle for cell
49
        int                                        n,                                // number of points
50
        int                                        dim,                        // dimension of space
51
        int                                        &cut_dim,                // cutting dimension (returned)
52
        ANNcoord                        &cut_val,                // cutting value (returned)
53
        int                                        &n_lo);                        // num of points on low side (returned)
54

    
55
void sl_midpt_split(                                        // sliding midpoint kd-splitter
56
        ANNpointArray                pa,                                // point array (unaltered)
57
        ANNidxArray                        pidx,                        // point indices (permuted on return)
58
        const ANNorthRect        &bnds,                        // bounding rectangle for cell
59
        int                                        n,                                // number of points
60
        int                                        dim,                        // dimension of space
61
        int                                        &cut_dim,                // cutting dimension (returned)
62
        ANNcoord                        &cut_val,                // cutting value (returned)
63
        int                                        &n_lo);                        // num of points on low side (returned)
64

    
65
void fair_split(                                                // fair-split kd-splitter
66
        ANNpointArray                pa,                                // point array (unaltered)
67
        ANNidxArray                        pidx,                        // point indices (permuted on return)
68
        const ANNorthRect        &bnds,                        // bounding rectangle for cell
69
        int                                        n,                                // number of points
70
        int                                        dim,                        // dimension of space
71
        int                                        &cut_dim,                // cutting dimension (returned)
72
        ANNcoord                        &cut_val,                // cutting value (returned)
73
        int                                        &n_lo);                        // num of points on low side (returned)
74

    
75
void sl_fair_split(                                                // sliding fair-split kd-splitter
76
        ANNpointArray                pa,                                // point array (unaltered)
77
        ANNidxArray                        pidx,                        // point indices (permuted on return)
78
        const ANNorthRect        &bnds,                        // bounding rectangle for cell
79
        int                                        n,                                // number of points
80
        int                                        dim,                        // dimension of space
81
        int                                        &cut_dim,                // cutting dimension (returned)
82
        ANNcoord                        &cut_val,                // cutting value (returned)
83
        int                                        &n_lo);                        // num of points on low side (returned)
84

    
85
#endif