Check whether a given point lies inside a rectangle or not - GeeksforGeeks

07 Nov, 2021
Given four points of a rectangle, and one more point P. Write a function to check whether P lies within the given rectangle or not.Examples:  
Input : R = [(10, 10), (10, -10), 
             (-10, -10), (-10, 10)]
        P = (0, 0)
Output : yes
Illustration : 
Input : R = [(10, 10), (10, -10),
             (-10, -10), (-10, 10)],
        P = (20, 20)
Output : no
Illustration :
 
 
Prerequisite: Check whether a given point lies inside a triangle or notApproach : Let the coordinates of four corners be A(x1, y1), B(x2, y2), C(x3, y3) and D(x4, y4). And coordinates of the given point P be (x, y)1) Calculate area of the given rectangle, i.e., area of the rectangle ABCD as area of triangle ABC + area of triangle ACD. Area A = [ x1(y2 – y3) + x2(y3 – y1) + x3(y1-y2)]/2 + [ x1(y4 – y3) + x4(y3 – y1) + x3(y1-y4)]/2 2) Calculate area of the triangle PAB as A1. 3) Calculate area of the triangle PBC as A2. 4) Calculate area of the triangle PCD as A3. 5) Calculate area of the triangle PAD as A4. 6) If P lies inside the triangle, then A1 + A2 + A3 + A4 must be equal to A. 
 
C++
Java
Python3
C#
PHP
Javascript
#include <bits/stdc++.h>using namespace std;  /* A utility function to calculate area of    triangle formed by (x1, y1), (x2, y2) and  (x3, y3) */float area(int x1, int y1, int x2, int y2,                            int x3, int y3){    return abs((x1 * (y2 - y3) + x2 * (y3 - y1) +                 x3 * (y1 - y2)) / 2.0);}  /* A function to check whether point P(x, y)    lies inside the rectangle formed by A(x1, y1),    B(x2, y2), C(x3, y3) and D(x4, y4) */bool check(int x1, int y1, int x2, int y2, int x3,              int y3, int x4, int y4, int x, int y){    /* Calculate area of rectangle ABCD */    float A = area(x1, y1, x2, y2, x3, y3) +               area(x1, y1, x4, y4, x3, y3);      /* Calculate area of triangle PAB */    float A1 = area(x, y, x1, y1, x2, y2);      /* Calculate area of triangle PBC */    float A2 = area(x, y, x2, y2, x3, y3);      /* Calculate area of triangle PCD */    float A3 = area(x, y, x3, y3, x4, y4);      /* Calculate area of triangle PAD */    float A4 = area(x, y, x1, y1, x4, y4);      /* Check if sum of A1, A2, A3 and A4        is same as A */    return (A == A1 + A2 + A3 + A4);}  /* Driver program to test above function */int main(){    /* Let us check whether the point P(10, 15)      lies inside the rectangle formed by A(0, 10),      B(10, 0) C(0, -10) D(-10, 0) */    if (check(0, 10, 10, 0, 0, -10, -10, 0, 10, 15))        cout << "yes";    else        cout << "no";    return 0;}
class GFG{    /* A utility function to calculate area of     triangle formed by (x1, y1), (x2, y2) and    (x3, y3) */    static float area(int x1, int y1, int x2,                         int y2, int x3, int y3)    {        return (float)Math.abs((x1 * (y2 - y3) +         x2 * (y3 - y1) + x3 * (y1 - y2)) / 2.0);    }              /* A function to check whether point P(x, y)     lies inside the rectangle formed by A(x1, y1),     B(x2, y2), C(x3, y3) and D(x4, y4) */    static boolean check(int x1, int y1, int x2, int y2,    int x3, int y3, int x4, int y4, int x, int y)    {                  /* Calculate area of rectangle ABCD */        float A = area(x1, y1, x2, y2, x3, y3)+                 area(x1, y1, x4, y4, x3, y3);              /* Calculate area of triangle PAB */        float A1 = area(x, y, x1, y1, x2, y2);              /* Calculate area of triangle PBC */        float A2 = area(x, y, x2, y2, x3, y3);              /* Calculate area of triangle PCD */        float A3 = area(x, y, x3, y3, x4, y4);              /* Calculate area of triangle PAD */        float A4 = area(x, y, x1, y1, x4, y4);              /* Check if sum of A1, A2, A3 and A4         is same as A */        return (A == A1 + A2 + A3 + A4);    }          // Driver code    public static void main (String[] args)    {                  /* Let us check whether the point P(10, 15)        lies inside the rectangle formed by A(0, 10),        B(10, 0) C(0, -10) D(-10, 0) */        if (check(0, 10, 10, 0, 0, -10, -10, 0, 10, 15))            System.out.print("yes");        else            System.out.print("no");    }}  // This code is contributed by Anant Agarwal.
# A utility function to calculate # area of triangle formed by (x1, y1), # (x2, y2) and (x3, y3) def area(x1, y1, x2, y2, x3, y3):          return abs((x1 * (y2 - y3) +                 x2 * (y3 - y1) +                 x3 * (y1 - y2)) / 2.0)  # A function to check whether point # P(x, y) lies inside the rectangle # formed by A(x1, y1), B(x2, y2), # C(x3, y3) and D(x4, y4) def check(x1, y1, x2, y2, x3,           y3, x4, y4, x, y):                    # Calculate area of rectangle ABCD     A = (area(x1, y1, x2, y2, x3, y3) +         area(x1, y1, x4, y4, x3, y3))      # Calculate area of triangle PAB     A1 = area(x, y, x1, y1, x2, y2)      # Calculate area of triangle PBC     A2 = area(x, y, x2, y2, x3, y3)      # Calculate area of triangle PCD     A3 = area(x, y, x3, y3, x4, y4)      # Calculate area of triangle PAD     A4 = area(x, y, x1, y1, x4, y4);      # Check if sum of A1, A2, A3     # and A4 is same as A     return (A == A1 + A2 + A3 + A4)  # Driver Codeif __name__ == '__main__':          # Let us check whether the point     # P(10, 15) lies inside the     # rectangle formed by A(0, 10),    # B(10, 0) C(0, -10) D(-10, 0)     if (check(0, 10, 10, 0, 0, -10,                     -10, 0, 10, 15)):        print("yes")    else:        print("no")  # This code is contributed by# Surendra_Gangwar
// C# program to Check whether a given // point lies inside a rectangle or notusing System;  class GFG {          // A utility function to calculate area    // of triangle formed by (x1, y1),     // (x2, y2) and (x3, y3)    static float area(int x1, int y1, int x2,                       int y2, int x3, int y3)    {        return (float)Math.Abs((x1 * (y2 - y3) +                                 x2 * (y3 - y1) +                                 x3 * (y1 - y2)) / 2.0);    }              // A function to check whether point P(x, y)     // lies inside the rectangle formed by A(x1, y1),     // B(x2, y2), C(x3, y3) and D(x4, y4)     static bool check(int x1, int y1, int x2,                      int y2, int x3, int y3,                    int x4, int y4, int x, int y)    {                  // Calculate area of rectangle ABCD         float A = area(x1, y1, x2, y2, x3, y3) +                   area(x1, y1, x4, y4, x3, y3);              // Calculate area of triangle PAB         float A1 = area(x, y, x1, y1, x2, y2);              // Calculate area of triangle PBC         float A2 = area(x, y, x2, y2, x3, y3);              // Calculate area of triangle PCD         float A3 = area(x, y, x3, y3, x4, y4);              // Calculate area of triangle PAD        float A4 = area(x, y, x1, y1, x4, y4);              // Check if sum of A1, A2, A3          // and A4is same as A         return (A == A1 + A2 + A3 + A4);    }          // Driver code    public static void Main ()    {                  // Let us check whether the point         // P(10, 15) lies inside the rectangle        // formed by A(0, 10), B(10, 0),         // C(0, -10), D(-10, 0)        if (check(0, 10, 10, 0, 0, -10, -10, 0, 10, 15))            Console.Write("yes");        else            Console.Write("no");    }}  // This code is contributed by Nitin Mittal.
<?php// PHP program to check whether a // given point lies inside a // rectangle or not  // A utility function to // calculate area of // triangle formed by // (x1, y1), (x2, y2) // and (x3, y3)function area($x1, $y1, $x2,               $y2, $x3, $y3){    return abs(($x1 * ($y2 - $y3) +                 $x2 * ($y3 - $y1) +                 $x3 * ($y1 - $y2)) / 2.0);}  /* A function to check whether point P(x, y) lies inside the rectangleformed by A(x1, y1), B(x2, y2), C(x3, y3)and D(x4, y4) */function check($x1, $y1, $x2, $y2, $x3,                $y3, $x4, $y4, $x, $y){    // Calculate area of rectangle ABCD     $A = area($x1, $y1, $x2, $y2, $x3, $y3) +          area($x1, $y1, $x4, $y4, $x3, $y3);      // Calculate area of triangle PAB     $A1 = area($x, $y, $x1, $y1, $x2, $y2);      // Calculate area of triangle PBC     $A2 = area($x, $y, $x2, $y2, $x3, $y3);      // Calculate area of triangle PCD    $A3 = area($x, $y, $x3, $y3, $x4, $y4);      // Calculate area of triangle PAD     $A4 = area($x, $y, $x1, $y1, $x4, $y4);      // Check if sum of A1, A2,     // A3 and A4  is same as A     return ($A == $A1 + $A2 + $A3 + $A4);}  // Driver Code  // Let us check whether // the point P(10, 15)// lies inside the rectangle// formed by A(0, 10),// B(10, 0) C(0, -10) // D(-10, 0) if (check(0, 10, 10, 0, 0, -10,               -10, 0, 10, 15))    echo "yes";      else    echo "no";      // This code is contributed by vt_m.?>
<script>  /* A utility function to calculate area of triangle formed by (x1, y1), (x2, y2) and (x3, y3) */function area(x1, y1, x2, y2,                             x3, y3) {     return Math.abs((x1 * (y2 - y3) + x2 * (y3 - y1) +                 x3 * (y1 - y2)) / 2.0); }   /* A function to check whether point P(x, y) lies inside the rectangle formed by A(x1, y1), B(x2, y2), C(x3, y3) and D(x4, y4) */function check(x1, y1, x2, y2, x3,             y3, x4, y4, x, y) {     /* Calculate area of rectangle ABCD */    let A = area(x1, y1, x2, y2, x3, y3) +             area(x1, y1, x4, y4, x3, y3);       /* Calculate area of triangle PAB */    let A1 = area(x, y, x1, y1, x2, y2);       /* Calculate area of triangle PBC */    let A2 = area(x, y, x2, y2, x3, y3);       /* Calculate area of triangle PCD */    let A3 = area(x, y, x3, y3, x4, y4);       /* Calculate area of triangle PAD */    let A4 = area(x, y, x1, y1, x4, y4);       /* Check if sum of A1, A2, A3 and A4     is same as A */    return (A == A1 + A2 + A3 + A4); }   /* Driver program to test above function */       /* Let us check whether the point P(10, 15)     lies inside the rectangle formed by A(0, 10),     B(10, 0) C(0, -10) D(-10, 0) */    if (check(0, 10, 10, 0, 0, -10, -10, 0, 10, 15))         document.write("yes");     else        document.write("no");           // This code is contributed by Mayank Tyagi  </script>
Output: 
no
This article is contributed by Shivam Pradhan (anuj_charm). If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 
nitin mittal
vt_m
SURENDRA_GANGWAR
mayanktyagi1709
square-rectangle
Geometric
Geometric
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Program for distance between two points on earth
Line Clipping | Set 1 (Cohen–Sutherland Algorithm)
Optimum location of point to minimize total distance
Closest Pair of Points | O(nlogn) Implementation
Polygon Clipping | Sutherland–Hodgman Algorithm
Given n line segments, find if any two segments intersect
Program for Point of Intersection of Two Lines
Program to find area of a triangle
Window to Viewport Transformation in Computer Graphics with Implementation
Find K Closest Points to the Origin