- Timestamp:
- 2024-02-20T18:14:31+01:00 (11 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/tools/Geometry.java
r18871 r18990 694 694 */ 695 695 public static Pair<PolygonIntersection, Area> polygonIntersectionResult(Area a1, Area a2, double eps) { 696 // Simple intersect check (if their bounds don't intersect, don't bother going further; there will be no intersection) 697 // This avoids the more expensive Area#intersect call some of the time (decreases CPU and memory allocation by ~95%) 698 // in Mesa County, CO geometry validator test runs. 699 final Rectangle2D a12d = a1.getBounds2D(); 700 final Rectangle2D a22d = a2.getBounds2D(); 701 if (!a12d.intersects(a22d) || !a1.intersects(a22d) || !a2.intersects(a12d)) { 702 return new Pair<>(PolygonIntersection.OUTSIDE, new Area()); 703 } 696 704 Area inter = new Area(a1); 697 705 inter.intersect(a2); … … 699 707 if (inter.isEmpty() || !checkIntersection(inter, eps)) { 700 708 return new Pair<>(PolygonIntersection.OUTSIDE, inter); 701 } else if (a2 .getBounds2D().contains(a1.getBounds2D()) && inter.equals(a1)) {709 } else if (a22d.contains(a12d) && inter.equals(a1)) { 702 710 return new Pair<>(PolygonIntersection.FIRST_INSIDE_SECOND, inter); 703 } else if (a1 .getBounds2D().contains(a2.getBounds2D()) && inter.equals(a2)) {711 } else if (a12d.contains(a22d) && inter.equals(a2)) { 704 712 return new Pair<>(PolygonIntersection.SECOND_INSIDE_FIRST, inter); 705 713 } else {
Note:
See TracChangeset
for help on using the changeset viewer.