# Total area of two overlapping rectangles

Given two overlapping rectangles on a plane. We are given bottom left and top right points of the two rectangles. We need to find the total area (Green and pink areas in below diagram). Examples:

```Input : Point l1 = {2, 2}, r1 = {5, 7};
Point l2 = {3, 4}, r2 = {6, 9};
Output : Total Area = 24

Input :Point l1 = {2, 1}, r1 = {5, 5};
Point l2 = {3, 2}, r2 = {5, 7};
Output : Total Area = 16
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

We basically add areas of two rectangles. This includes intersecting part twice, so we subtract area of intersecting part.

```Total Area = (Area of 1st rectangle +
Area of 2nd rectangle) -
Area of Intersecting part```

Area of Rectangle = x_distance * y_distance

Where,
x_distance for 1st rectangle = abs(l1.x – r1.x)
y_distance for 1st rectangle = abs(l1.y – r1.y)

Similarly, we can compute area of 2nd rectangle.

For area of intersecting part,
x_distance for intersecting rectangle =
min(r1.x, r2.x) – max(l1.x, l2.x)
y_distance for 1st rectangle =
min(r1.y, r2.y) – max(l1.y, l2.y)

## C++

 `// C++ program to find total area of two  ` `// overlapping Rectangles ` `#include ` `using` `namespace` `std; ` ` `  `struct` `Point { ` `    ``int` `x, y; ` `}; ` ` `  `// Returns Total Area  of two overlap  ` `// rectangles ` `int` `overlappingArea(Point l1, Point r1, ` `                    ``Point l2, Point r2) ` `{ ` `    ``// Area of 1st Rectangle ` `    ``int` `area1 = ``abs``(l1.x - r1.x) * ` `                ``abs``(l1.y - r1.y); ` ` `  `    ``// Area of 2nd Rectangle ` `    ``int` `area2 = ``abs``(l2.x - r2.x) * ` `                ``abs``(l2.y - r2.y); ` ` `  `    ``// Length of intersecting part i.e  ` `    ``// start from max(l1.x, l2.x) of  ` `    ``// x-coordinate and end at min(r1.x, ` `    ``// r2.x) x-coordinate by subtracting  ` `    ``// start from end we get required  ` `    ``// lengths ` `    ``int` `areaI = (min(r1.x, r2.x) -  ` `                 ``max(l1.x, l2.x)) *  ` `                ``(min(r1.y, r2.y) - ` `                 ``max(l1.y, l2.y)); ` ` `  `    ``return` `(area1 + area2 - areaI); ` `} ` ` `  `// Driver's Code ` `int` `main() ` `{ ` `    ``Point l1 = { 2, 2 }, r1 = { 5, 7 }; ` `    ``Point l2 = { 3, 4 }, r2 = { 6, 9 }; ` `    ``cout << overlappingArea(l1, r1, l2, r2); ` `    ``return` `0; ` `} `

## Java

 `// Java program to find total area of two  ` `// overlapping Rectangles ` `class` `GFG ` `{ ` ` `  `static` `class` `Point ` `{ ` `    ``int` `x, y; ` ` `  `    ``public` `Point(``int` `x, ``int` `y)  ` `    ``{ ` `        ``this``.x = x; ` `        ``this``.y = y; ` `    ``} ` `}; ` ` `  `// Returns Total Area of two overlap  ` `// rectangles ` `static` `int` `overlappingArea(Point l1, Point r1, ` `                           ``Point l2, Point r2) ` `{ ` `    ``// Area of 1st Rectangle ` `    ``int` `area1 = Math.abs(l1.x - r1.x) * ` `                ``Math.abs(l1.y - r1.y); ` ` `  `    ``// Area of 2nd Rectangle ` `    ``int` `area2 = Math.abs(l2.x - r2.x) * ` `                ``Math.abs(l2.y - r2.y); ` ` `  `    ``// Length of intersecting part i.e  ` `    ``// start from max(l1.x, l2.x) of  ` `    ``// x-coordinate and end at min(r1.x, ` `    ``// r2.x) x-coordinate by subtracting  ` `    ``// start from end we get required  ` `    ``// lengths ` `    ``int` `areaI = (Math.min(r1.x, r2.x) -  ` `                 ``Math.max(l1.x, l2.x)) *  ` `                ``(Math.min(r1.y, r2.y) - ` `                 ``Math.max(l1.y, l2.y)); ` ` `  `    ``return` `(area1 + area2 - areaI); ` `} ` ` `  `// Driver Code ` `public` `static` `void` `main(String[] args)  ` `{ ` `    ``Point l1 = ``new` `Point( ``2``, ``2` `),  ` `          ``r1 = ``new` `Point( ``5``, ``7` `); ` `    ``Point l2 = ``new` `Point( ``3``, ``4` `),  ` `          ``r2 = ``new` `Point( ``6``, ``9` `); ` `    ``System.out.println(overlappingArea(l1, r1, l2, r2)); ` `} ` `}  ` ` `  `// This code is contributed by PrinciRaj1992 `

## C#

 `// C# program to find total area of two  ` `// overlapping Rectangles ` `using` `System; ` ` `  `class` `GFG ` `{ ` `public` `class` `Point ` `{ ` `    ``public` `int` `x, y; ` ` `  `    ``public` `Point(``int` `x, ``int` `y)  ` `    ``{ ` `        ``this``.x = x; ` `        ``this``.y = y; ` `    ``} ` `}; ` ` `  `// Returns Total Area of two overlap  ` `// rectangles ` `static` `int` `overlappingArea(Point l1, Point r1, ` `                           ``Point l2, Point r2) ` `{ ` `    ``// Area of 1st Rectangle ` `    ``int` `area1 = Math.Abs(l1.x - r1.x) * ` `                ``Math.Abs(l1.y - r1.y); ` ` `  `    ``// Area of 2nd Rectangle ` `    ``int` `area2 = Math.Abs(l2.x - r2.x) * ` `                ``Math.Abs(l2.y - r2.y); ` ` `  `    ``// Length of intersecting part i.e  ` `    ``// start from max(l1.x, l2.x) of  ` `    ``// x-coordinate and end at min(r1.x, ` `    ``// r2.x) x-coordinate by subtracting  ` `    ``// start from end we get required  ` `    ``// lengths ` `    ``int` `areaI = (Math.Min(r1.x, r2.x) -  ` `                 ``Math.Max(l1.x, l2.x)) *  ` `                ``(Math.Min(r1.y, r2.y) - ` `                 ``Math.Max(l1.y, l2.y)); ` ` `  `    ``return` `(area1 + area2 - areaI); ` `} ` ` `  `// Driver Code ` `public` `static` `void` `Main(String[] args)  ` `{ ` `    ``Point l1 = ``new` `Point( 2, 2 ),  ` `          ``r1 = ``new` `Point( 5, 7 ); ` `    ``Point l2 = ``new` `Point( 3, 4 ),  ` `          ``r2 = ``new` `Point( 6, 9 ); ` `    ``Console.WriteLine(overlappingArea(l1, r1, l2, r2)); ` `} ` `}  ` ` `  `// This code is contributed by PrinciRaj1992 `

Output:

```24
```

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Improved By : princiraj1992