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