/** * @param box2 * @throws NoOverlapException */ private float[] calculateIntersection( float[] box1, float[] box2 ) throws NoOverlapException { float interXmin = box1[0]; if ( box2[0] > interXmin ) { interXmin = box2[0]; } float interXmax = box1[2]; if ( box2[2] < interXmax ) { interXmax = box2[2]; } float interYmin = box1[1]; if ( box2[1] > interYmin ) { interYmin = box2[1]; } float interYmax = box1[3]; if ( box2[3] < interYmax ) { interYmax = box2[3]; } if ( interXmin > interXmax || interYmin > interYmax ) { throw new NoOverlapException( "Areas " + Arrays.toString( box1 ) + " and " + Arrays.toString( box2 ) + " do not intersect!" ); } return new float[] { interXmin, interYmin, interXmax, interYmax }; }