@Override public Iterable<RealLocalizable> points() { final List<RealLocalizable> pts = new ArrayList<>(); final float[] x = points.getContainedFloatPoints().xpoints; final float[] y = points.getContainedFloatPoints().ypoints; final int numPoints = points.getNCoordinates(); for (int i = 0; i < numPoints; i++) { pts.add(new AbstractRealLocalizable(new double[] { x[i], y[i] }) {}); } return pts; }
@Override public double realMin(final int d) { if (d != 0 && d != 1) throw new IllegalArgumentException( "Invalid dimension " + d); final int numPoints = points.getNCoordinates(); double min = Double.POSITIVE_INFINITY; if (d == 0) { final float[] x = points.getContainedFloatPoints().xpoints; for (int i = 0; i < numPoints; i++) if (x[i] < min) min = x[i]; return min; } final float[] y = points.getContainedFloatPoints().ypoints; for (int i = 0; i < numPoints; i++) if (y[i] < min) min = y[i]; return min; }
@Override public double realMax(final int d) { if (d != 0 && d != 1) throw new IllegalArgumentException( "Invalid dimension " + d); final int numPoints = points.getNCoordinates(); double max = Double.NEGATIVE_INFINITY; if (d == 0) { final float[] x = points.getContainedFloatPoints().xpoints; for (int i = 0; i < numPoints; i++) if (x[i] > max) max = x[i]; return max; } final float[] y = points.getContainedFloatPoints().ypoints; for (int i = 0; i < numPoints; i++) if (y[i] > max) max = y[i]; return max; }
@Override public boolean test(final RealLocalizable t) { // NB: ImageJ 1.x contains(...) is not used due to the limitations of // integer coordinates. final float xt = t.getFloatPosition(0); final float yt = t.getFloatPosition(1); final float[] x = points.getContainedFloatPoints().xpoints; final float[] y = points.getContainedFloatPoints().ypoints; final int numPoints = points.getNCoordinates(); for (int i = 0; i < numPoints; i++) if (xt == x[i] && yt == y[i]) return true; return false; }