コード例 #1
0
ファイル: KdTreeBB.hpp プロジェクト: kienpt/urban-data-study
    void searchKdTree(const KdNode *nodes, uint32_t root, int depth, const Query &query, QueryResult &result) const {
        const KdNode *node = nodes + root;
        int rangeIndex = depth%2;

        if (node->child_node==-1) {
            return;
        }
        if (node->child_node==0) {
            if (dimIntersect(node->leftBounds, query.bounds[rangeIndex]))
            {
                //fprintf(stderr, "%d\n", *(*(int**)(node->rightBounds)));
                result.push_back(*(*(int**)(node->rightBounds)));
            }
            //report(*((void**)(node->rightBounds)));
            return;
        }
        if (dimIntersect(node->leftBounds, query.bounds[rangeIndex]))
            searchKdTree(nodes, node->child_node, depth+1, query, result);
        if (dimIntersect(node->rightBounds, query.bounds[rangeIndex]))
            searchKdTree(nodes, node->child_node+1, depth+1, query, result);
    }