Check if two given circles touch or intersect each other
There are two circles A and B with their centres C1(x1, y1) and C2(x2, y2) and radius R1 and R2. The task is to check both circles A and B touch each other or not.
Examples :
Input : C1 = (3, 4)
C2 = (14, 18)
R1 = 5, R2 = 8
Output : Circles do not touch each other.
Input : C1 = (2, 3)
C2 = (15, 28)
R1 = 12, R2 = 10
Output : Circles intersect with each other.
Input : C1 = (-10, 8)
C2 = (14, -24)
R1 = 30, R2 = 10
Approach:
Distance between centres C1 and C2 is calculated as
C1C2 = sqrt((x1 – x2)2 + (y1 – y2)2).
There are three conditions that arise.
- If C1C2 <= R1 – R2: Circle B is inside A.
- If C1C2 <= R2 – R1: Circle A is inside B.
- If C1C2 < R1 + R2: Circle intersects each other.
- If C1C2 == R1 + R2: Circle A and B are in touch with each other.
- Otherwise, Circle A and B do not overlap
Below is the implementation of the above approach:
C++
Java
import java.io.*;
class GFG {
static void circle( int x1, int y1, int x2, int y2,
int r1, int r2)
{
double d = Math.sqrt((x1 - x2) * (x1 - x2)
+ (y1 - y2) * (y1 - y2));
if (d <= r1 - r2) {
System.out.println( "Circle B is inside A" );
}
else if (d <= r2 - r1) {
System.out.println( "Circle A is inside B" );
}
else if (d < r1 + r2) {
System.out.println( "Circle intersect"
+ " to each other" );
}
else if (d == r1 + r2) {
System.out.println( "Circle touch to"
+ " each other" );
}
else {
System.out.println( "Circle not touch"
+ " to each other" );
}
}
public static void main(String[] args)
{
int x1 = - 10 , y1 = 8 ;
int x2 = 14 , y2 = - 24 ;
int r1 = 30 , r2 = 10 ;
circle(x1, y1, x2, y2, r1, r2);
}
}
|
Python3
import math
def circle(x1, y1, x2, y2, r1, r2):
d = math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2))
if (d < = r1 - r2):
print ( "Circle B is inside A" )
elif (d < = r2 - r1):
print ( "Circle A is inside B" )
elif (d < r1 + r2):
print ( "Circle intersect to each other" )
elif (d = = r1 + r2):
print ( "Circle touch to each other" )
else :
print ( "Circle not touch to each other" )
x1, y1 = - 10 , 8
x2, y2 = 14 , - 24
r1, r2 = 30 , 10
circle(x1, y1, x2, y2, r1, r2)
|
C#
using System;
class GFG {
static void circle( int x1, int y1, int x2, int y2,
int r1, int r2)
{
double d = Math.Sqrt((x1 - x2) * (x1 - x2)
+ (y1 - y2) * (y1 - y2));
if (d <= r1 - r2) {
Console.Write( "Circle B is inside A" );
}
else if (d <= r2 - r1) {
Console.Write( "Circle A is inside B" );
}
else if (d < r1 + r2) {
Console.Write( "Circle intersect"
+ " to each other" );
}
else if (d == r1 + r2) {
Console.Write( "Circle touch to"
+ " each other" );
}
else {
Console.Write( "Circle not touch"
+ " to each other" );
}
}
public static void Main(String[] args)
{
int x1 = -10, y1 = 8;
int x2 = 14, y2 = -24;
int r1 = 30, r2 = 10;
circle(x1, y1, x2, y2, r1, r2);
}
}
|
Javascript
function circle(x1, y1, x2, y2, r1, r2) {
var d = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
if (d <= r1 - r2) {
console.log( "Circle B is inside A" );
} else if (d <= r2 - r1) {
console.log( "Circle A is inside B" );
} else if (d < r1 + r2) {
console.log( "Circle intersect to each other" );
} else if (d === r1 + r2) {
console.log( "Circle touch to each other" );
} else {
console.log( "Circle not touch to each other" );
}
}
var x1 = -10, y1 = 8;
var x2 = 14, y2 = -24;
var r1 = 30, r2 = 10;
circle(x1, y1, x2, y2, r1, r2);
|
Output
Circle touch to each other
Time Complexity: O(log(n)) because using inbuilt sqrt function
Auxiliary Space: O(1)
This article is contributed by Aarti_Rathi and Dharmendra kumar.
Last Updated :
14 Jun, 2023
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...