Skip to content

IVoxNodePhc中的KNN查找中PHC索引范围的问题 #119

Description

@wjh-68

KNNPointByCondition()中对搜索距离和PHC索引范围的计算
问题:
为什么const int max_search_idx_th =
8 * max_search_cube_side_length * max_search_cube_side_length * max_search_cube_side_length; ?

按我理解,max_search_cube_side_length是搜索空间边长的一半(以phc立方体个数为单位),而后文max_search_idx_th用于确定双向搜索的边界条件,那么,计算应该如下:
max_search_idx_th=(2*max_search_cube_side_length)^3 /2
= 4 * max_search_cube_side_length * max_search_cube_side_length * max_search_cube_side_length
= 搜索空间phc cubes个数的一半

const int max_search_cube_side_length = std::pow(2, std::ceil(std::log2(max_range * phc_side_length_inv_)));
const int max_search_idx_th = 8 * max_search_cube_side_length * max_search_cube_side_length * max_search_cube_side_length;

auto forward_reach_boundary = [&]() { return forward_it == phc_cubes_.end() || forward_it->idx - cur_idx > max_search_idx_th; };
auto backward_reach_boundary = [&]() { return backward_it == phc_cubes_.rend() || cur_idx - backward_it->idx > max_search_idx_th; };

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions