@Override public PhIteratorNV query(long[] min, long[] max) { return new IteratorProxy<Object>(tree.query(min, max)); }
/** * Query for all bodies that are included in or partially intersect with the query rectangle. * @param lower 'lower left' corner of query rectangle * @param upper 'upper right' corner of query rectangle * @return Iterator over all matching elements. */ public PhQuerySF<T> queryIntersect(double[] lower, double[] upper) { long[] lUpp = new long[lower.length << 1]; long[] lLow = new long[lower.length << 1]; pre.pre(qMIN, lower, lLow); pre.pre(upper, qMAX, lUpp); return new PhQuerySF<>(pht.query(lLow, lUpp), dims, pre, true); }
/** * Query for all bodies that are included in or partially intersect with the query rectangle. * @param lower 'lower left' corner of query rectangle * @param upper 'upper right' corner of query rectangle * @return Iterator over all matching elements. */ public PhQueryS<T> queryIntersect(long[] lower, long[] upper) { long[] lUpp = new long[lower.length << 1]; long[] lLow = new long[lower.length << 1]; pre.pre(qMIN, lower, lLow); pre.pre(upper, qMAX, lUpp); return new PhQueryS<>(pht.query(lLow, lUpp), dims, pre, true); }
/** * Query for all bodies that are fully included in the query rectangle. * @param lower 'lower left' corner of query rectangle * @param upper 'upper right' corner of query rectangle * @return Iterator over all matching elements. */ public PhQuerySF<T> queryInclude(double[] lower, double[] upper) { long[] lUpp = new long[lower.length << 1]; long[] lLow = new long[lower.length << 1]; pre.pre(lower, lower, lLow); pre.pre(upper, upper, lUpp); return new PhQuerySF<>(pht.query(lLow, lUpp), dims, pre, false); }
/** * Query for all bodies that are fully included in the query rectangle. * @param lower 'lower left' corner of query rectangle * @param upper 'upper right' corner of query rectangle * @return Iterator over all matching elements. */ public PhQueryS<T> queryInclude(long[] lower, long[] upper) { long[] lUpp = new long[lower.length << 1]; long[] lLow = new long[lower.length << 1]; pre.pre(lower, lower, lLow); pre.pre(upper, upper, lUpp); return new PhQueryS<>(pht.query(lLow, lUpp), dims, pre, false); }
/** * Performs a rectangular window query. The parameters are the min and max keys which * contain the minimum respectively the maximum keys in every dimension. * @param min Minimum values * @param max Maximum values * @return Result iterator. */ public PhQueryF<T> query(double[] min, double[] max) { long[] lMin = new long[min.length]; long[] lMax = new long[max.length]; pre.pre(min, lMin); pre.pre(max, lMax); return new PhQueryF<>(pht.query(lMin, lMax), pht.getDim(), pre); }