BAEL-2153 : Check If Rectangles Overlap In Java (#5200)
* BAEL-2153 : Check If Rectangles Overlap In Java * BAEL-2153 : Moving to Algorithms repo
This commit is contained in:
		
							parent
							
								
									0469d6f63f
								
							
						
					
					
						commit
						12124f30cb
					
				| @ -0,0 +1,29 @@ | |||||||
|  | package com.baeldung.algorithms.rectanglesoverlap; | ||||||
|  | 
 | ||||||
|  | public class Point { | ||||||
|  | 
 | ||||||
|  |     private int x; | ||||||
|  |     private int y; | ||||||
|  | 
 | ||||||
|  |     public Point(int x, int y) { | ||||||
|  |         this.x = x; | ||||||
|  |         this.y = y; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public int getX() { | ||||||
|  |         return x; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public void setX(int x) { | ||||||
|  |         this.x = x; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public int getY() { | ||||||
|  |         return y; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public void setY(int y) { | ||||||
|  |         this.y = y; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | } | ||||||
| @ -0,0 +1,40 @@ | |||||||
|  | package com.baeldung.algorithms.rectanglesoverlap; | ||||||
|  | 
 | ||||||
|  | public class Rectangle { | ||||||
|  | 
 | ||||||
|  |     private Point bottomLeft; | ||||||
|  |     private Point topRight; | ||||||
|  | 
 | ||||||
|  |     public Rectangle(Point bottomLeft, Point topRight) { | ||||||
|  |         this.bottomLeft = bottomLeft; | ||||||
|  |         this.topRight = topRight; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public Point getBottomLeft() { | ||||||
|  |         return bottomLeft; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public void setBottomLeft(Point bottomLeft) { | ||||||
|  |         this.bottomLeft = bottomLeft; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public Point getTopRight() { | ||||||
|  |         return topRight; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public void setTopRight(Point topRight) { | ||||||
|  |         this.topRight = topRight; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public boolean isOverlapping(Rectangle other) { | ||||||
|  |         // one rectangle is to the top of the other | ||||||
|  |         if (this.topRight.getY() < other.bottomLeft.getY() || this.bottomLeft.getY() > other.topRight.getY()) { | ||||||
|  |             return false; | ||||||
|  |         } | ||||||
|  |         // one rectangle is to the left of the other | ||||||
|  |         if (this.topRight.getX() < other.bottomLeft.getX() || this.bottomLeft.getX() > other.topRight.getX()) { | ||||||
|  |             return false; | ||||||
|  |         } | ||||||
|  |         return true; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,42 @@ | |||||||
|  | package com.baeldung.algorithms.rectanglesoverlap; | ||||||
|  | 
 | ||||||
|  | import static org.junit.Assert.assertTrue; | ||||||
|  | import static org.junit.Assert.assertFalse; | ||||||
|  | import org.junit.Test; | ||||||
|  | 
 | ||||||
|  | import com.baeldung.algorithms.rectanglesoverlap.Point; | ||||||
|  | import com.baeldung.algorithms.rectanglesoverlap.Rectangle; | ||||||
|  | 
 | ||||||
|  | public class RectangleUnitTest { | ||||||
|  | 
 | ||||||
|  |     @Test | ||||||
|  |     public void givenTwoOverlappingRectangles_whenisOverlappingCalled_shouldReturnTrue() { | ||||||
|  |         Rectangle rectangle1 = new Rectangle(new Point(2, 1), new Point(4, 3)); | ||||||
|  |         Rectangle rectangle2 = new Rectangle(new Point(1, 1), new Point(6, 4)); | ||||||
|  |         assertTrue(rectangle1.isOverlapping(rectangle2)); | ||||||
|  | 
 | ||||||
|  |         rectangle1 = new Rectangle(new Point(-5, -2), new Point(2, 3)); | ||||||
|  |         rectangle2 = new Rectangle(new Point(-2, -1), new Point(5, 2)); | ||||||
|  |         assertTrue(rectangle1.isOverlapping(rectangle2)); | ||||||
|  | 
 | ||||||
|  |         rectangle1 = new Rectangle(new Point(-5, 1), new Point(2, 4)); | ||||||
|  |         rectangle2 = new Rectangle(new Point(-2, -2), new Point(5, 5)); | ||||||
|  |         assertTrue(rectangle1.isOverlapping(rectangle2)); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Test | ||||||
|  |     public void givenTwoNonOverlappingRectangles_whenisOverlappingCalled_shouldReturnFalse() { | ||||||
|  |         Rectangle rectangle1 = new Rectangle(new Point(-5, 1), new Point(-3, 4)); | ||||||
|  |         Rectangle rectangle2 = new Rectangle(new Point(-2, -2), new Point(5, 5)); | ||||||
|  |         assertFalse(rectangle1.isOverlapping(rectangle2)); | ||||||
|  | 
 | ||||||
|  |         rectangle1 = new Rectangle(new Point(-5, 1), new Point(3, 4)); | ||||||
|  |         rectangle2 = new Rectangle(new Point(-2, -2), new Point(5, -1)); | ||||||
|  |         assertFalse(rectangle1.isOverlapping(rectangle2)); | ||||||
|  | 
 | ||||||
|  |         rectangle1 = new Rectangle(new Point(-2, 1), new Point(0, 3)); | ||||||
|  |         rectangle2 = new Rectangle(new Point(3, 1), new Point(5, 4)); | ||||||
|  |         assertFalse(rectangle1.isOverlapping(rectangle2)); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | } | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user