/** * Faster implementation of K-nearest-neighbours. * * @param result * Collection to hold the found coordinates. * @param query * The query coordinate. * @param k * The number of neighbours to find. */ public void fastKNN(Collection<T> result, Coordinate query, int k) { final List<T> tmp = new ArrayList<T>(); final Coord lowerExtreme = new Coord(query); final Coord upperExtreme = new Coord(query); while (tmp.size() < k) { tmp.clear(); for (int i = 0; i < lowerExtreme.getDimensions(); i++) lowerExtreme.coords[i] -= k; for (int i = 0; i < upperExtreme.getDimensions(); i++) upperExtreme.coords[i] += k; rangeSearch(tmp, lowerExtreme, upperExtreme); } final CoordinateBruteForce<T> bf = new CoordinateBruteForce<T>(tmp); bf.kNearestNeighbour(result, query, k); } }
tree.rangeSearch(klist1, minDim, maxDim); tree.rangeSearch(klist, lbound, ubound);
/** * Faster implementation of K-nearest-neighbours. * * @param result * Collection to hold the found coordinates. * @param query * The query coordinate. * @param k * The number of neighbours to find. */ public void fastKNN(Collection<T> result, Coordinate query, int k) { final List<T> tmp = new ArrayList<T>(); final Coord lowerExtreme = new Coord(query); final Coord upperExtreme = new Coord(query); while (tmp.size() < k) { tmp.clear(); for (int i = 0; i < lowerExtreme.getDimensions(); i++) lowerExtreme.coords[i] -= k; for (int i = 0; i < upperExtreme.getDimensions(); i++) upperExtreme.coords[i] += k; rangeSearch(tmp, lowerExtreme, upperExtreme); } final CoordinateBruteForce<T> bf = new CoordinateBruteForce<T>(tmp); bf.kNearestNeighbour(result, query, k); } }
tree.rangeSearch(klist1, minDim, maxDim); tree.rangeSearch(klist, lbound, ubound);
tree.rangeSearch(possible, new ScaleSpaceLocation(left.getX(), left.getY(), radius - scaleRadius), new ScaleSpaceLocation(
tree.rangeSearch(possible, new ScaleSpaceLocation(left.getX(), left.getY(), radius - scaleRadius), new ScaleSpaceLocation(