public LatLonRect intersect ( LatLonRect clip ) { double latMin = Math . max ( getLatMin ( ) , clip . getLatMin ( ) ) ; double latMax = Math . min ( getLatMax ( ) , clip . getLatMax ( ) ) ; double deltaLat = latMax - latMin ; if ( deltaLat < 0 ) return null ; // lon as always is a pain : if not intersection, try +/- 360 double lon1min = getLonMin ( ) ; double lon1max = getLonMax ( ) ; double lon2min = clip . getLonMin ( ) ; double lon2max = clip . getLonMax ( ) ; if ( ! intersect ( lon1min , lon1max , lon2min , lon2max ) ) { lon2min = clip . getLonMin ( ) + 360 ; lon2max = clip . getLonMax ( ) + 360 ; if ( ! intersect ( lon1min , lon1max , lon2min , lon2max ) ) { lon2min = clip . getLonMin ( ) - 360 ; lon2max = clip . getLonMax ( ) - 360 ; } } // we did our best to find an intersection double lonMin = Math . max ( lon1min , lon2min ) ; double lonMax = Math . min ( lon1max , lon2max ) ; double deltaLon = lonMax - lonMin ; if ( deltaLon < 0 ) return null ; return new LatLonRect ( new LatLonPointImpl ( latMin , lonMin ) , deltaLat , deltaLon ) ; }
Create the instersection of this LatLon with the given one