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
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.
C++
// 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 code int main() { int radius = 8, x = 3, y = 4; float percent = 12, startAngle = 0; checkPoint(radius, x, y, percent, startAngle); return 0; } |
Java
// 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 function public 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
# 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 code radius, x, y = 8 , 3 , 4 percent, startAngle = 12 , 0 checkPoint(radius, x, y, percent, startAngle) # This code is contributed by # Smitha Dinesh Semwal |
C#
// 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 |
Javascript
<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)
Auxiliary Space: O(1)
This article is contributed by Aarti_Rathi and Niteesh kumar. If you like neveropen 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 neveropen 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.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!