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 the 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
Asked in Juniper
We basically add areas of two rectangles. This includes the intersecting part twice, so we subtract the 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)
If the x_distance or y_distance is negative, then the two rectangles do not intersect. In that case, overlapping area is 0.
Below is the implementation of the above approach:
C++
// C++ program to find total area of two// overlapping Rectangles#include <bits/stdc++.h>using namespace std;struct Point { int x, y;};// Returns Total Area of two overlap// rectanglesint 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 x_dist = min(r1.x, r2.x) - max(l1.x, l2.x); int y_dist = (min(r1.y, r2.y) - max(l1.y, l2.y)); int areaI = 0; if( x_dist > 0 && y_dist > 0 ) { areaI = x_dist * y_dist; } return (area1 + area2 - areaI);}// Driver Codeint main(){ Point l1 = { 2, 2 }, r1 = { 5, 7 }; Point l2 = { 3, 4 }, r2 = { 6, 9 }; // Function Call cout << overlappingArea(l1, r1, l2, r2); return 0;} |
Java
// Java program to find total area of two// overlapping Rectanglesclass 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 x_dist = (Math.min(r1.x, r2.x) - Math.max(l1.x, l2.x); int y_dist = (Math.min(r1.y, r2.y) - Math.max(l1.y, l2.y); int areaI = 0; if( x_dist > 0 && y_dist > 0 ) { areaI = x_dist * y_dist; } 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); // Function Call System.out.println(overlappingArea(l1, r1, l2, r2)); }}// This code is contributed by PrinciRaj1992 |
Python3
# Python program to find total area of two# overlapping Rectangles# Returns Total Area of two overlap# rectanglesdef overlappingArea(l1, r1, l2, r2): x = 0 y = 1 # Area of 1st Rectangle area1 = abs(l1[x] - r1[x]) * abs(l1[y] - r1[y]) # Area of 2nd Rectangle 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 ''' x_dist = (min(r1[x], r2[x]) - max(l1[x], l2[x])) y_dist = (min(r1[y], r2[y]) - max(l1[y], l2[y])) areaI = 0 if x_dist > 0 and y_dist > 0: areaI = x_dist * y_dist return (area1 + area2 - areaI)# Driver's Codel1 = [2, 2]r1 = [5, 7]l2 = [3, 4]r2 = [6, 9]# Function callprint(overlappingArea(l1, r1, l2, r2))# This code is contributed by Manisha_Ediga |
C#
// C# program to find total area of two// overlapping Rectanglesusing 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 x_dist = (Math.Min(r1.x, r2.x) - Math.Max(l1.x, l2.x)); int y_dist = (Math.Min(r1.y, r2.y) - Math.Max(l1.y, l2.y)); int areaI = 0; if (x_dist > 0 && y_dist > 0) { areaI = x_dist * y_dist; } 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); // Function Call Console.WriteLine(overlappingArea(l1, r1, l2, r2)); }}// This code is contributed by PrinciRaj1992 |
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

