protected PhKnnQuerySF(PhKnnQuery<T> iter, int dims, PreProcessorRangeF pre) { super(iter, dims, pre); this.q = iter; this.qMIN = new double[dims]; Arrays.fill(qMIN, Double.NEGATIVE_INFINITY); this.qMAX = new double[dims]; Arrays.fill(qMAX, Double.POSITIVE_INFINITY); this.lCenterBuffer = new long[dims*2]; this.dims = dims; this.pre = pre; this.buffer = new PhEntryDistSF<>(new double[dims], new double[dims], null, Double.NaN); }
void setValueDist(T value, double dist) { setValue(value); this.dist = dist; }
@Override public PhEntryDistSF<T> nextEntry() { double[] lower = new double[dims]; double[] upper = new double[dims]; PhEntryDist<T> pvEntry = q.nextEntryReuse(); pre.post(pvEntry.getKey(), lower, upper); return new PhEntryDistSF<>(lower, upper, pvEntry.getValue(), pvEntry.dist()); } @Override
@Override public PhEntryDistSF<T> nextEntryReuse() { PhEntryDist<T> pvEntry = q.nextEntryReuse(); pre.post(pvEntry.getKey(), buffer.lower(), buffer.upper()); buffer.setValueDist( pvEntry.getValue(), pvEntry.dist() ); return buffer; } @Override