BLI_kdtree: add 2D kdtree support
Some users of the 3D versions were storing 2D data in it. Using a 3D tree for 2D data adds a spatially redundant branch every 3rd level, as well as some extra memory use, best avoid this.
This commit is contained in:
@@ -22,6 +22,17 @@
|
||||
* \brief A kd-tree for nearest neighbor search.
|
||||
*/
|
||||
|
||||
/* 2D version */
|
||||
#define KD_DIMS 2
|
||||
#define KDTREE_PREFIX_ID BLI_kdtree_2d
|
||||
#define KDTree KDTree_2d
|
||||
#define KDTreeNearest KDTreeNearest_2d
|
||||
#include "BLI_kdtree_impl.h"
|
||||
#undef KD_DIMS
|
||||
#undef KDTree
|
||||
#undef KDTreeNearest
|
||||
#undef KDTREE_PREFIX_ID
|
||||
|
||||
/* 3D version */
|
||||
#define KD_DIMS 3
|
||||
#define KDTREE_PREFIX_ID BLI_kdtree_3d
|
||||
|
||||
@@ -75,6 +75,7 @@ set(SRC
|
||||
intern/hash_mm2a.c
|
||||
intern/hash_mm3.c
|
||||
intern/jitter_2d.c
|
||||
intern/kdtree_2d.c
|
||||
intern/kdtree_3d.c
|
||||
intern/kdtree_4d.c
|
||||
intern/lasso_2d.c
|
||||
|
||||
25
source/blender/blenlib/intern/kdtree_2d.c
Normal file
25
source/blender/blenlib/intern/kdtree_2d.c
Normal file
@@ -0,0 +1,25 @@
|
||||
/*
|
||||
* 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 2
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
/** \file
|
||||
* \ingroup bli
|
||||
*/
|
||||
|
||||
#define KD_DIMS 2
|
||||
#define KDTREE_PREFIX_ID BLI_kdtree_2d
|
||||
#define KDTree KDTree_2d
|
||||
#define KDTreeNearest KDTreeNearest_2d
|
||||
# include "kdtree_impl.h"
|
||||
Reference in New Issue
Block a user