我读了k-d树Pseudocode并且不知道这条线的含义

时间:2013-12-17 09:18:50

标签: c

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;
}

任何人都可以帮我解释一下“var int axis:= depth mod k;”,

为什么mod k,k是什么?

2 个答案:

答案 0 :(得分:1)

k是多个维度。可变轴将包含一个轴,沿着该轴划分空间。

答案 1 :(得分:1)

k是树的维度。您将不得不一个一个地沿着每个方向重复划分点集。 这里depth表示树的级别。现在,当您沿着每个级别下移时,您必须移动到下一个轴,当您完成最后一个轴(即第k个维度)时,您将从第一个维度开始(或者在这种情况下,从(k-1)到第0维)。因此,下一个轴被选为depth mod k