@Override public boolean intersects( Geometry other ) { if ( !( other instanceof Envelope ) ) { return super.intersects( other ); } Envelope e = (Envelope) other; double minX1 = this.getMin().get0(); double minY1 = this.getMin().get1(); double maxX1 = this.getMax().get0(); double maxY1 = this.getMax().get1(); double minX2 = e.getMin().get0(); double minY2 = e.getMin().get1(); double maxX2 = e.getMax().get0(); double maxY2 = e.getMax().get1(); return pointInside( minX1, minY1, e ) || pointInside( minX1, maxY1, e ) || pointInside( maxX1, minY1, e ) || pointInside( maxX1, maxY1, e ) || pointInside( minX2, minY2, this ) || pointInside( minX2, maxY2, this ) || pointInside( maxX2, minY2, this ) || pointInside( maxX2, maxY2, this ) || noEdgeOverlap( e, this ) || noEdgeOverlap( this, e ); }