/** * Creates a child by checking to see if it is a leaf or branch. */ protected KdTree.Node computeChild(List<P> points , GrowQueue_I32 indexes ) { if( points.size() == 0 ) return null; if( points.size() == 1 ) { return createLeaf(points,indexes); } else { return computeBranch(points,indexes); } }
/** * Creates a child by checking to see if it is a leaf or branch. */ protected KdTree.Node computeChild(List<P> points , GrowQueue_I32 indexes ) { if( points.size() == 0 ) return null; if( points.size() == 1 ) { return createLeaf(points,indexes); } else { return computeBranch(points,indexes); } }
/** * Creates a new {@link KdTree} from the provided points. * * WARNING: Reference to each point is saved to reduce memory usage.. * * @param points Data points. * @return KdTre */ public KdTree construct(List<P> points , boolean trackIndexes ) { GrowQueue_I32 indexes = null; if( trackIndexes ) { indexes = new GrowQueue_I32(); indexes.resize(points.size()); for (int i = 0; i < indexes.size; i++) { indexes.data[i] = i; } } KdTree tree = memory.requestTree(splitter.getPointLength()); if( points.size() == 1 ) { tree.root = createLeaf(points,indexes); } else if( points.size() > 1 ) { tree.root = computeBranch(points, indexes ); } return tree; }
/** * Creates a new {@link KdTree} from the provided points. * * WARNING: Reference to each point is saved to reduce memory usage.. * * @param points Data points. * @return KdTre */ public KdTree construct(List<P> points , boolean trackIndexes ) { GrowQueue_I32 indexes = null; if( trackIndexes ) { indexes = new GrowQueue_I32(); indexes.resize(points.size()); for (int i = 0; i < indexes.size; i++) { indexes.data[i] = i; } } KdTree tree = memory.requestTree(splitter.getPointLength()); if( points.size() == 1 ) { tree.root = createLeaf(points,indexes); } else if( points.size() > 1 ) { tree.root = computeBranch(points, indexes ); } return tree; }