Finding Quadrant of a Coordinate with respect to a Circle

Given the radius and coordinates of the centre of a circle. Find the quadrant in which another given coordinate (X, Y) lies with respect to the centre of circle if the point lies inside the circle. Else print an error “Lies outside the circle”.
If the point lies at the centre of circle output 0 or if the point lies on any of the axes and inside the circle output the next quadrant in anti-clock direction.

Examples:

Input : Centre = (0, 0), Radius = 10
(X, Y) = (10, 10)
Output : Lies Outside the Circle

Input : Centre = (0, 3), Radius = 2
(X, Y) = (1, 4)
Output : 1 (I quadrant)

Approach:
Let center be (x’, y’)
Equation of circle is (x-x')^2 + (y-y')^2 - r^2 = 0 – (Eq. 1)
According to this equation,
If  (x-x')^2 + (y-y')^2 > r point (x, y) lies outside of circle
If  (x-x')^2 + (y-y')^2 = 0 point (x, y) lies on the circle
If  (x-x')^2 + (y-y')^2 < r point (x, y) lies inside of circle

To check position of point with respect to circle:-

1. Put given coordinates in equation 1.
2. If it is greater than 0 coordinate lies outside circle.
3. If point lies inside circle find the quadrant within the circle. Check the point 
   with respect to centre of circle.

Below is the implementation of above idea :

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// CPP Program to find the quadrant of
// a given coordinate with respect to the
// centre of a circle
#include <bits/stdc++.h>
  
using namespace std;
  
// Thus function returns the quadrant number
int getQuadrant(int X, int Y, int R, int PX, int PY)
{
    // Coincides with center
    if (PX == X && PY == Y)
        return 0;
  
    int val = pow((PX - X), 2) + pow((PY - Y), 2);
  
    // Outside circle
    if (val > pow(R, 2))
        return -1;
  
    // 1st quadrant
    if (PX > X && PY >= Y)
        return 1;
  
    // 2nd quadrant
    if (PX <= X && PY > Y)
        return 2;
  
    // 3rd quadrant
    if (PX < X && PY <= Y)
        return 3;
  
    // 4th quadrant
    if (PX >= X && PY < Y)
        return 4;
}
  
// Driver Code
int main()
{
    // Coordinates of centre
    int X = 0, Y = 3;
  
    // Radius of circle
    int R = 2;
  
    // Coordinates of the given point
    int PX = 1, PY = 4;
  
    int ans = getQuadrant(X, Y, R, PX, PY);
    if (ans == -1)
        cout << "Lies Outside the circle" << endl;
    else if (ans == 0)
        cout << "Coincides with centre" << endl;
    else
        cout << ans << " Quadrant" << endl;
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java Program to find the quadrant of
// a given coordinate with respect to the
// centre of a circle
import java.io.*;
class GFG {
  
// Thus function returns 
// the quadrant number
static int getQuadrant(int X, int Y,
                       int R, int PX,
                       int PY)
{
      
    // Coincides with center
    if (PX == X && PY == Y)
        return 0;
  
    int val = (int)Math.pow((PX - X), 2) + 
              (int)Math.pow((PY - Y), 2);
  
    // Outside circle
    if (val > Math.pow(R, 2))
        return -1;
  
    // 1st quadrant
    if (PX > X && PY >= Y)
        return 1;
  
    // 2nd quadrant
    if (PX <= X && PY > Y)
        return 2;
  
    // 3rd quadrant
    if (PX < X && PY <= Y)
        return 3;
  
    // 4th quadrant
    if (PX >= X && PY < Y)
        return 4;
        return 0;
}
  
    // Driver Code
    public static void main (String[] args) 
    {
          
        // Coordinates of centre
        int X = 0, Y = 3;
      
        // Radius of circle
        int R = 2;
      
        // Coordinates of the given point
        int PX = 1, PY = 4;
      
        int ans = getQuadrant(X, Y, R, PX, PY);
        if (ans == -1)
            System.out.println( "Lies Outside the circle");
        else if (ans == 0)
            System.out.println( "Coincides with centre");
        else
            System.out.println( ans +" Quadrant");
    }
}
  
// This code is contributed by anuj_67.

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 Program to find the 
# quadrant of a given coordinate 
# w.rt. the centre of a circle
import math
  
# Thus function returns the
# quadrant number
def getQuadrant(X, Y, R, PX, PY):
      
    # Coincides with center
    if (PX == X and PY == Y):
        return 0;
  
    val = (math.pow((PX - X), 2) + 
           math.pow((PY - Y), 2));
  
    # Outside circle
    if (val > pow(R, 2)):
        return -1;
  
    # 1st quadrant
    if (PX > X and PY >= Y):
        return 1;
  
    # 2nd quadrant
    if (PX <= X and PY > Y):
        return 2;
  
    # 3rd quadrant
    if (PX < X and PY <= Y):
        return 3;
  
    # 4th quadrant
    if (PX >= X and PY < Y):
        return 4;
  
# Driver Code
# Coordinates of centre
X = 0
Y = 3;
  
# Radius of circle
R = 2;
  
# Coordinates of the given po
PX = 1;
PY = 4;
  
ans = getQuadrant(X, Y, R, PX, PY);
if (ans == -1) : print("Lies Outside the circle");
elif (ans == 0) : print("Coincides with centre");
else:print(ans, "Quadrant");
  
# This code is contributed by mits

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# Program to find the quadrant of
// a given coordinate with respect to
// the centre of a circle
using System;
  
class GFG {
  
    // Thus function returns 
    // the quadrant number
    static int getQuadrant(int X, int Y,
                  int R, int PX, int PY)
    {
          
        // Coincides with center
        if (PX == X && PY == Y)
            return 0;
      
        int val = (int)Math.Pow((PX - X), 2)
               + (int)Math.Pow((PY - Y), 2);
      
        // Outside circle
        if (val > Math.Pow(R, 2))
            return -1;
      
        // 1st quadrant
        if (PX > X && PY >= Y)
            return 1;
      
        // 2nd quadrant
        if (PX <= X && PY > Y)
            return 2;
      
        // 3rd quadrant
        if (PX < X && PY <= Y)
            return 3;
      
        // 4th quadrant
        if (PX >= X && PY < Y)
            return 4;
            return 0;
    }
  
    // Driver Code
    public static void Main () 
    {
      
        // Coordinates of centre
        int X = 0, Y = 3;
      
        // Radius of circle
        int R = 2;
      
        // Coordinates of the given point
        int PX = 1, PY = 4;
      
        int ans = 
             getQuadrant(X, Y, R, PX, PY);
        if (ans == -1)
            Console.WriteLine( "Lies Outside"
                            + " the circle");
        else if (ans == 0)
            Console.WriteLine( "Coincides "
                          + "with centre");
        else
            Console.WriteLine( ans + 
                               " Quadrant");
    }
}
  
// This code is contributed by anuj_67.

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP Program to find the quadrant of
// a given coordinate with respect to the
// centre of a circle
  
// Thus function returns the
// quadrant number
function getQuadrant($X, $Y, $R,
                      $PX, $PY)
{
      
    // Coincides with center
    if ($PX == $X and $PY == $Y)
        return 0;
  
    $val = pow(($PX - $X), 2) + 
           pow(($PY - $Y), 2);
  
    // Outside circle
    if ($val > pow($R, 2))
        return -1;
  
    // 1st quadrant
    if ($PX > $X and $PY >= $Y)
        return 1;
  
    // 2nd quadrant
    if ($PX <= $X and $PY > $Y)
        return 2;
  
    // 3rd quadrant
    if ($PX < $X and $PY <= $Y)
        return 3;
  
    // 4th quadrant
    if ($PX >= $X and $PY < $Y)
        return 4;
}
  
    // Driver Code
    // Coordinates of centre
    $X = 0; $Y = 3;
  
    // Radius of circle
    $R = 2;
  
    // Coordinates of the given po$
    $PX = 1;
    $PY = 4;
  
    $ans = getQuadrant($X, $Y, $R,
                         $PX, $PY);
    if ($ans == -1)
        echo "Lies Outside the circle" ;
    else if ($ans == 0)
        echo "Coincides with centre" ;
    else
        echo $ans , " Quadrant" ;
  
// This code is contributed by anuj_67.
?>

chevron_right


Output:

1 Quadrant


My Personal Notes arrow_drop_up