private Crossings getCrossings(double xlo, double ylo, double xhi, double yhi) { Crossings cross = new Crossings.EvenOdd(xlo, ylo, xhi, yhi); int lastx = xpoints[npoints - 1]; int lasty = ypoints[npoints - 1]; int curx, cury; // Walk the edges of the polygon for (int i = 0; i < npoints; i++) { curx = xpoints[i]; cury = ypoints[i]; if (cross.accumulateLine(lastx, lasty, curx, cury)) { return null; } lastx = curx; lasty = cury; } return cross; }
@Nullable private Crossings getCrossings(double xlo, double ylo, double xhi, double yhi) { Crossings cross = new Crossings.EvenOdd(xlo, ylo, xhi, yhi); double lastx = xpoints[npoints - 1]; double lasty = ypoints[npoints - 1]; double curx, cury; // Walk the edges of the polygon for (int i = 0; i < npoints; i++) { curx = xpoints[i]; cury = ypoints[i]; if (cross.accumulateLine(lastx, lasty, curx, cury)) { return null; } lastx = curx; lasty = cury; } return cross; }
@Nullable private Crossings getCrossings(float xlo, float ylo, float xhi, float yhi) { Crossings cross = new Crossings.EvenOdd(xlo, ylo, xhi, yhi); float lastx = xpoints[npoints - 1]; float lasty = ypoints[npoints - 1]; float curx, cury; // Walk the edges of the polygon for (int i = 0; i < npoints; i++) { curx = xpoints[i]; cury = ypoints[i]; if (cross.accumulateLine(lastx, lasty, curx, cury)) { return null; } lastx = curx; lasty = cury; } return cross; }
/** * {@inheritDoc} * @since 1.2 */ public boolean intersects(double x, double y, double w, double h) { if (npoints <= 0 || !getBoundingBox().intersects(x, y, w, h)) { return false; } Crossings cross = getCrossings(x, y, x+w, y+h); return (cross == null || !cross.isEmpty()); }
/** * {@inheritDoc} * @since 1.2 */ public boolean contains(double x, double y, double w, double h) { if (npoints <= 0 || !getBoundingBox().intersects(x, y, w, h)) { return false; } Crossings cross = getCrossings(x, y, x+w, y+h); return (cross != null && cross.covers(y, y+h)); }
/** * {@inheritDoc} * @since 1.2 */ public boolean contains(double x, double y, double w, double h) { if (w < 0 || h < 0) { return false; } if (!getCachedBounds().contains(x, y, w, h)) { return false; } Crossings c = Crossings.findCrossings(curves, x, y, x+w, y+h); return (c != null && c.covers(y, y+h)); }
/** * {@inheritDoc} * @since 1.2 */ public boolean intersects(double x, double y, double w, double h) { if (w < 0 || h < 0) { return false; } if (!getCachedBounds().intersects(x, y, w, h)) { return false; } Crossings c = Crossings.findCrossings(curves, x, y, x+w, y+h); return (c == null || !c.isEmpty()); }