kd_split.h
上传用户:chinafayin
上传日期:2022-04-05
资源大小:153k
文件大小:4k
源码类别:

并行计算

开发平台:

Visual C++

  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. #ifndef ANN_KD_SPLIT_H
  25. #define ANN_KD_SPLIT_H
  26. #include "kd_tree.h" // kd-tree definitions
  27. //----------------------------------------------------------------------
  28. // External entry points
  29. // These are all splitting procedures for kd-trees.
  30. //----------------------------------------------------------------------
  31. void kd_split( // standard (optimized) kd-splitter
  32. ANNpointArray pa, // point array (unaltered)
  33. ANNidxArray pidx, // point indices (permuted on return)
  34. const ANNorthRect &bnds, // bounding rectangle for cell
  35. int n, // number of points
  36. int dim, // dimension of space
  37. int &cut_dim, // cutting dimension (returned)
  38. ANNcoord &cut_val, // cutting value (returned)
  39. int &n_lo); // num of points on low side (returned)
  40. void midpt_split( // midpoint kd-splitter
  41. ANNpointArray pa, // point array (unaltered)
  42. ANNidxArray pidx, // point indices (permuted on return)
  43. const ANNorthRect &bnds, // bounding rectangle for cell
  44. int n, // number of points
  45. int dim, // dimension of space
  46. int &cut_dim, // cutting dimension (returned)
  47. ANNcoord &cut_val, // cutting value (returned)
  48. int &n_lo); // num of points on low side (returned)
  49. void sl_midpt_split( // sliding midpoint kd-splitter
  50. ANNpointArray pa, // point array (unaltered)
  51. ANNidxArray pidx, // point indices (permuted on return)
  52. const ANNorthRect &bnds, // bounding rectangle for cell
  53. int n, // number of points
  54. int dim, // dimension of space
  55. int &cut_dim, // cutting dimension (returned)
  56. ANNcoord &cut_val, // cutting value (returned)
  57. int &n_lo); // num of points on low side (returned)
  58. void fair_split( // fair-split kd-splitter
  59. ANNpointArray pa, // point array (unaltered)
  60. ANNidxArray pidx, // point indices (permuted on return)
  61. const ANNorthRect &bnds, // bounding rectangle for cell
  62. int n, // number of points
  63. int dim, // dimension of space
  64. int &cut_dim, // cutting dimension (returned)
  65. ANNcoord &cut_val, // cutting value (returned)
  66. int &n_lo); // num of points on low side (returned)
  67. void sl_fair_split( // sliding fair-split kd-splitter
  68. ANNpointArray pa, // point array (unaltered)
  69. ANNidxArray pidx, // point indices (permuted on return)
  70. const ANNorthRect &bnds, // bounding rectangle for cell
  71. int n, // number of points
  72. int dim, // dimension of space
  73. int &cut_dim, // cutting dimension (returned)
  74. ANNcoord &cut_val, // cutting value (returned)
  75. int &n_lo); // num of points on low side (returned)
  76. #endif