Finding Quadrant of a Coordinate with respect to a Circle
Last Updated :
20 Oct, 2022
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 the 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 – (Eq. 1)
According to this equation,
If point (x, y) lies outside of circle
If point (x, y) lies on the circle
If 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++
#include <bits/stdc++.h>
using namespace std;
int getQuadrant( int X, int Y, int R, int PX, int PY)
{
if (PX == X && PY == Y)
return 0;
int val = pow ((PX - X), 2) + pow ((PY - Y), 2);
if (val > pow (R, 2))
return -1;
if (PX > X && PY >= Y)
return 1;
if (PX <= X && PY > Y)
return 2;
if (PX < X && PY <= Y)
return 3;
if (PX >= X && PY < Y)
return 4;
}
int main()
{
int X = 0, Y = 3;
int R = 2;
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;
}
|
Java
import java.io.*;
class GFG {
static int getQuadrant( int X, int Y,
int R, int PX,
int PY)
{
if (PX == X && PY == Y)
return 0 ;
int val = ( int )Math.pow((PX - X), 2 ) +
( int )Math.pow((PY - Y), 2 );
if (val > Math.pow(R, 2 ))
return - 1 ;
if (PX > X && PY >= Y)
return 1 ;
if (PX <= X && PY > Y)
return 2 ;
if (PX < X && PY <= Y)
return 3 ;
if (PX >= X && PY < Y)
return 4 ;
return 0 ;
}
public static void main (String[] args)
{
int X = 0 , Y = 3 ;
int R = 2 ;
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" );
}
}
|
Python3
import math
def getQuadrant(X, Y, R, PX, PY):
if (PX = = X and PY = = Y):
return 0 ;
val = (math. pow ((PX - X), 2 ) +
math. pow ((PY - Y), 2 ));
if (val > pow (R, 2 )):
return - 1 ;
if (PX > X and PY > = Y):
return 1 ;
if (PX < = X and PY > Y):
return 2 ;
if (PX < X and PY < = Y):
return 3 ;
if (PX > = X and PY < Y):
return 4 ;
X = 0 ;
Y = 3 ;
R = 2 ;
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" );
|
C#
using System;
class GFG {
static int getQuadrant( int X, int Y,
int R, int PX, int PY)
{
if (PX == X && PY == Y)
return 0;
int val = ( int )Math.Pow((PX - X), 2)
+ ( int )Math.Pow((PY - Y), 2);
if (val > Math.Pow(R, 2))
return -1;
if (PX > X && PY >= Y)
return 1;
if (PX <= X && PY > Y)
return 2;
if (PX < X && PY <= Y)
return 3;
if (PX >= X && PY < Y)
return 4;
return 0;
}
public static void Main ()
{
int X = 0, Y = 3;
int R = 2;
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" );
}
}
|
PHP
<?php
function getQuadrant( $X , $Y , $R ,
$PX , $PY )
{
if ( $PX == $X and $PY == $Y )
return 0;
$val = pow(( $PX - $X ), 2) +
pow(( $PY - $Y ), 2);
if ( $val > pow( $R , 2))
return -1;
if ( $PX > $X and $PY >= $Y )
return 1;
if ( $PX <= $X and $PY > $Y )
return 2;
if ( $PX < $X and $PY <= $Y )
return 3;
if ( $PX >= $X and $PY < $Y )
return 4;
}
$X = 0; $Y = 3;
$R = 2;
$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" ;
?>
|
Javascript
<script>
function getQuadrant( X, Y, R, PX, PY)
{
if (PX == X && PY == Y)
return 0;
let val = Math.pow((PX - X), 2) + Math.pow((PY - Y), 2);
if (val > Math.pow(R, 2))
return -1;
if (PX > X && PY >= Y)
return 1;
if (PX <= X && PY > Y)
return 2;
if (PX < X && PY <= Y)
return 3;
if (PX >= X && PY < Y)
return 4;
}
let X = 0, Y = 3;
let R = 2;
let PX = 1, PY = 4;
let ans = getQuadrant(X, Y, R, PX, PY);
if (ans == -1)
document.write( "Lies Outside the circle" + "</br>" );
else if (ans == 0)
document.write( "Coincides with centre" + "</br>" );
else
document.write(ans + " Quadrant" + "</br>" );
</script>
|
Time complexity: O(1)
Auxiliary space: O(1)
Share your thoughts in the comments
Please Login to comment...