我正在查看维基百科上的KD树最近邻搜索页面。
维基百科中给出的伪代码适用于二维点(x,y)。
我想知道,当点是三维的(x,y,z)时,应该做出哪些改变。
我进行了大量谷歌搜索,甚至查看了stack overflow中的类似问题链接,但我没有找到任何3D实现,所有以前的问题都以2D点作为输入,而不是我所寻找的3D点。
维基中构建KD树的伪代码如下:
如何在构建KD树后找到最近的邻居?
谢谢!
维基百科中给出的伪代码适用于二维点(x,y)。
我想知道,当点是三维的(x,y,z)时,应该做出哪些改变。
我进行了大量谷歌搜索,甚至查看了stack overflow中的类似问题链接,但我没有找到任何3D实现,所有以前的问题都以2D点作为输入,而不是我所寻找的3D点。
维基中构建KD树的伪代码如下:
function kdtree (list of points pointList, int depth)
{
// Select axis based on depth so that axis cycles through all valid values
var int axis := depth mod k;
// Sort point list and choose median as pivot element
select median by axis from pointList;
// Create node and construct subtrees
var tree_node node;
node.location := median;
node.leftChild := kdtree(points in pointList before median, depth+1);
node.rightChild := kdtree(points in pointList after median, depth+1);
return node;
}
如何在构建KD树后找到最近的邻居?
谢谢!