/** * Creates a visitor for checking rectangle intersection * with segments * * @param rectangle the query rectangle */ public RectangleIntersectsSegmentVisitor(Polygon rectangle) { rectEnv = rectangle.getEnvelopeInternal(); rectIntersector = new RectangleLineIntersector(rectEnv); }
public void run(boolean useSegInt, boolean useSideInt) { RectangleLineIntersector rectSegIntersector = new RectangleLineIntersector(rectEnv); SimpleRectangleIntersector rectSideIntersector = new SimpleRectangleIntersector(rectEnv); for (int i = 0; i < pts.length; i++) { for (int j = 0; j < pts.length; j++) { if (i == j) continue; boolean segResult = false; if (useSegInt) segResult = rectSegIntersector.intersects(pts[i], pts[j]); boolean sideResult = false; if (useSideInt) sideResult = rectSideIntersector.intersects(pts[i], pts[j]); if (useSegInt && useSideInt) { if (segResult != sideResult) isValid = false; } } } }
private void checkIntersectionWithSegments(LineString testLine) { CoordinateSequence seq1 = testLine.getCoordinateSequence(); for (int j = 1; j < seq1.size(); j++) { seq1.getCoordinate(j - 1, p0); seq1.getCoordinate(j, p1); if (rectIntersector.intersects(p0, p1)) { hasIntersection = true; return; } } }
System.out.println("# pts: " + pts.length); RectangleLineIntersector rectSegIntersector = new RectangleLineIntersector(rectEnv); SimpleRectangleIntersector rectSideIntersector = new SimpleRectangleIntersector(rectEnv); segResult = rectSegIntersector.intersects(pts[i], pts[j]); boolean sideResult = false; if (useSideInt)