/** * 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); }
System.out.println("# pts: " + pts.length); RectangleLineIntersector rectSegIntersector = new RectangleLineIntersector(rectEnv); SimpleRectangleIntersector rectSideIntersector = new SimpleRectangleIntersector(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; } } } }