Tenemos un círculo centrado en el origen (0, 0). Como entrada, se nos proporciona el ángulo inicial del sector circular y el tamaño del sector circular en porcentaje.
Ejemplos:
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
En esta imagen, el ángulo inicial es de 0 grados, el radio r y suponga que el porcentaje del área coloreada es del 12 %, luego calculamos el ángulo final como 360/porcentaje + ángulo inicial .
Para encontrar si un punto (x, y) existe en un sector circular (centrado en el origen) o no, encontramos las coordenadas polares de ese punto y luego seguimos los siguientes pasos:
- Convierta x, y en coordenadas polares usando este
Ángulo = atan(y/x); Radio = sqrt(x * x + y * y); - Entonces el Ángulo debe estar entre el Ángulo Inicial y el Ángulo Final, y el Radio entre 0 y su Radio.
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>
Producción :
Point(3, 4) exists in the circle sector
Complejidad temporal: O(1)
Espacio auxiliar: O(1)
Este artículo es una contribución de Aarti_Rathi y Niteesh kumar . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA