Check whether a point exists in circle sector or not. - GeeksforGeeks

31 Mar, 2021
We have a circle centered at origin (0, 0). As input we are given with starting angle of the circle sector and the size of the circle sector in percentage. 
Examples: 
Input :  Radius = 8 
         StartAngle = 0 
         Percentage = 12 
         x = 3 y = 4 
Output : Point (3, 4) exists in the circle 
         sector

Input : Radius = 12 
        Startangle = 45
        Percentage = 25  
        x = 3 y = 4 
Output : Point (3, 4) does not exist in 
         the circle sector
 
Source:wikibooks.org
In this image starting angle is 0 degree, radius r and suppose that percentage of colored area is 12% then we calculate Ending Angle as 360/percentage + starting angle.
To find whether a point (x, y) exists in a circle sector (centered at origin) or not we find polar coordinates of that point and then go through the following steps:
Convert x, y to polar coordinates using this Angle = atan(y/x); Radius = sqrt(x * x + y * y);Then Angle must be between StartingAngle and EndingAngle, and Radius between 0 and your Radius.
Convert x, y to polar coordinates using this Angle = atan(y/x); Radius = sqrt(x * x + y * y);
Then Angle must be between StartingAngle and EndingAngle, and Radius between 0 and your Radius.
C++
Java
Python3
C#
Javascript
// C++ program to check if a point lies inside a circle// sector.#include<bits/stdc++.h>using namespace std; void checkPoint(int radius, int x, int y, float percent,                                         float startAngle){    // calculate endAngle    float endAngle = 360/percent + startAngle;     // Calculate polar co-ordinates    float polarradius = sqrt(x*x+y*y);    float Angle = atan(y/x);     // Check whether polarradius is less then radius of circle    // or not and Angle is between startAngle and endAngle    // or not    if (Angle>=startAngle && Angle<=endAngle && polarradius<radius)        printf("Point (%d, %d) exist in the circle sector\n", x, y);    else        printf("Point (%d, %d) does not exist in the circle sector\n",                                                              x, y);} // Driver codeint main(){    int radius = 8, x = 3, y = 4;    float percent  = 12, startAngle = 0;    checkPoint(radius, x, y, percent, startAngle);    return 0;}
// Java program to check if// a point lies inside a circle// sector. class GFG{static void checkPoint(int radius, int x, int y, float percent,                                         float startAngle){     // calculate endAngle    float endAngle = 360/percent + startAngle;      // Calculate polar co-ordinates    double polarradius = Math.sqrt(x*x+y*y);    double Angle = Math.atan(y/x);      // Check whether polarradius is    // less then radius of circle    // or not and Angle is between    // startAngle and endAngle    // or not    if (Angle>=startAngle && Angle<=endAngle && polarradius<radius)        System.out.print("Point"+"("+x+","+y+")"+        " exist in the circle sector\n");    else        System.out.print("Point"+"("+x+","+y+")"+        " exist in the circle sector\n");} // Driver Program to test above functionpublic static void main(String arg[]){    int radius = 8, x = 3, y = 4;    float percent  = 12, startAngle = 0;    checkPoint(radius, x, y, percent, startAngle);}} // This code is contributed// by Anant Agarwal.
# Python3 program to check if a point# lies inside a circle sector.import math def checkPoint(radius, x, y, percent, startAngle):     # calculate endAngle    endAngle = 360 / percent + startAngle     # Calculate polar co-ordinates    polarradius = math.sqrt(x * x + y * y)    Angle = math.atan(y / x)     # Check whether polarradius is less    # then radius of circle or not and    # Angle is between startAngle and    # endAngle or not    if (Angle >= startAngle and Angle <= endAngle                        and polarradius < radius):        print("Point (", x, ",", y, ") "              "exist in the circle sector")    else:        print("Point (", x, ",", y, ") "              "does not exist in the circle sector") # Driver coderadius, x, y = 8, 3, 4percent, startAngle = 12, 0 checkPoint(radius, x, y, percent, startAngle) # This code is contributed by# Smitha Dinesh Semwal
// C# program to check if a point lies// inside a circle sector.using System.IO;using System; class GFG {         static void checkPoint(int radius, int x, int y,                    float percent, float startAngle)    {                 // calculate endAngle        float endAngle = 360 / percent + startAngle;             // Calculate polar co-ordinates        float polarradius =                    (float)Math.Sqrt(x * x + y * y);                             float Angle = (float)Math.Atan(y / x);             // Check whether polarradius is less then        // radius of circle or not and Angle is        // between startAngle and endAngle or not        if (Angle >= startAngle && Angle <= endAngle                            && polarradius < radius)            Console.Write("Point ({0}, {1}) exist in "                         + "the circle sector", x, y);        else            Console.Write("Point ({0}, {1}) does not "                + "exist in the circle sector", x, y);    }         // Driver code    public static void Main()    {        int radius = 8, x = 3, y = 4;        float percent = 12, startAngle = 0;        checkPoint(radius, x, y, percent, startAngle);    }} // This code is contributed by Smitha Dinesh Semwal
<script> // Javascript program to check if// a point lies inside a circle// sector.function checkPoint(radius, x, y, percent, startAngle){         // Calculate endAngle    let endAngle = 360 / percent + startAngle;        // Calculate polar co-ordinates    let polarradius = Math.sqrt(x * x + y * y);    let Angle = Math.atan(y / x);        // Check whether polarradius is    // less then radius of circle    // or not and Angle is between    // startAngle and endAngle    // or not    if (Angle >= startAngle &&        Angle <= endAngle &&        polarradius < radius)        document.write("Point" + "(" + x +                        "," + y + ")" +        " exist in the circle sector\n");    else        document.write("Point" + "(" + x +                       "," + y + ")" +        " exist in the circle sector\n");}      // Driver code   let radius = 8, x = 3, y = 4;let percent  = 12, startAngle = 0; checkPoint(radius, x, y, percent, startAngle); // This code is contributed by splevel62           </script>
Output : 
Point(3, 4) exists in the circle sector
Time complexity = O(1)
This article is contributed by Niteesh kumar. 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 write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 
Smitha Dinesh Semwal
splevel62
Geometric
Geometric
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Haversine formula to find distance between two points on a sphere
Equation of circle when three points on the circle are given
Program to find slope of a line
Program to find line passing through 2 Points
Maximum Manhattan distance between a distinct pair from N coordinates
Orientation of 3 ordered points
Check if a line touches or intersects a circle
Minimum Cost Polygon Triangulation
Quickhull Algorithm for Convex Hull
Minimum number of Cuboids required to form a Cube