logo

Tarkista, onko ympyrän sektorissa piste vai ei.

Meillä on ympyrä, jonka keskipiste on origossa (0 0). Syötteenä annetaan ympyräsektorin aloituskulma ja ympyräsektorin koko prosentteina. 

Esimerkkejä: 

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


 



Lähde: Wikibook.org' title= Lähde: Wikibook.org


Tässä kuvassa aloituskulma on 0 asteen säde r ja oletetaan, että värillisen alueen prosenttiosuus on 12%, lasketaan loppukulma seuraavasti 360/prosentti + aloituskulma .

Selvittääksemme, onko piste (x y) ympyrän sektorissa (keskitetty origossa) vai ei, etsimme kyseisen pisteen napakoordinaatit ja käymme sitten läpi seuraavat vaiheet:

  1. Muunna x y napakoordinaateiksi käyttämällä tätä 
    Kulma = poissaolo(y/x); Säde = sqrt(x * x y y y y y y y);
  2. Tällöin kulman on oltava aloituskulman ja loppukulman välillä ja säteen 0 ja säteen välillä.
C++
// C++ program to check if a point lies inside a circle // sector. #include   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 sectorn' x y);  else  printf('Point (%d %d) does not exist in the circle sectorn'  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 sectorn');  else  System.out.print('Point'+'('+x+''+y+')'+  ' exist in the circle sectorn'); } // 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 sectorn');  else  document.write('Point' + '(' + x +   '' + y + ')' +  ' exist in the circle sectorn'); }   // 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> 

Lähtö: 

Point(3 4) exists in the circle sector

Aika monimutkaisuus:  O(1)
Aputila: O(1)


 

Luo tietokilpailu