Total area of two overlapping rectangles

13 Jun, 2022
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++
Java
Python3
C#
Javascript
// 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 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
# Python program to find total area of two# overlapping Rectangles# Returns Total Area  of two overlap#  rectangles  def 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# 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
<script> // Javascript program to find total area of two// overlapping Rectangles// Returns Total Area  of two overlap//  rectangles    function overlappingArea(l1, r1, l2, r2){    let x = 0    let y = 1      // Area of 1st Rectangle    let area1 = Math.abs(l1[x] - r1[x]) * Math.abs(l1[y] - r1[y])      // Area of 2nd Rectangle    let 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    let x_dist = (Math.min(r1[x], r2[x]) -              Math.max(l1[x], l2[x]))      let y_dist = (Math.min(r1[y], r2[y]) -              Math.max(l1[y], l2[y]))    let areaI = 0    if (x_dist > 0 && y_dist > 0)        areaI = x_dist * y_dist      return (area1 + area2 - areaI)}     // Driver Code         let l1 = [2, 2]    let r1 = [5, 7]    let l2 = [3, 4]    let r2 = [6, 9]     // Function call   document.write(overlappingArea(l1, r1, l2, r2))     // This code is contributed by jana_sayantan.       </script>
24
Time complexity: O(1)
Auxiliary Space: O(1)
princiraj1992
manishaediga23
kshtjpatil06
jana_sayantan
hasani
area-volume-programs
Juniper Networks
Geometric
School Programming
Juniper Networks
Geometric
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Optimum location of point to minimize total distance
Check whether a given point lies inside a triangle or not
Program for Point of Intersection of Two Lines
Window to Viewport Transformation in Computer Graphics with Implementation
Find K Closest Points to the Origin
Python Dictionary
Reverse a string in Java
Arrays in C/C++
Introduction To PYTHON
Interfaces in Java