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