# How to Check if Two Given Circles Touch or Intersect in Java?

A circle is a closed shape formed by tracing a point that moves in a plane such that its distance from a given point is constant. In this article we will check if two given circles touch or intersect each other.

We will be given the two circles with center 1 i.e (x1, y1) and center 2 i.e (x2,y2) and radius R1 and R2. We need to check if the given circle collides with the other circle or not and hence five possible situation arises as mentioned below −

• Circle 2 lie inside circle 1

• Circle 1 lie inside circle 2

• Circle 1 and circle 2 intersects each other

• Circle 1 and circle 2 touch each other

• Circle 1 and circle 2 do not overlap

Now to check the above conditions we will find the distance between Center 1 and Center 2 and name it as “d”.

Now,

• 1. If d <= R1 – R2: Circle 2 lie inside circle 1

• 2. If d <= R2 – R1: Circle 1 lie inside circle 2

• 3. If d < R1 + R2: Circle 1 and circle 2 intersects each other

• 4. If d == R1 + R2: Circle 1 and circle 2 touch each other

• 5. Otherwise, Circle 1 and circle 2 do not overlap

“d” can be found using the formula −

$$\mathrm{d\:=\:sqrt((x1\:–\:x2)^2\:+\:(y1\:–\:y2)^2}$$

Let’s start!

## To show you some instances

### Instance-1

• Given inputs for the “d” are −

• Center 1 = (9, 3), Center 2 = (11, 1), R1 = 5 , R2 = 4 .

• After finding the value of “d” the result will be −

• Circle 1 and 2 intersect each other

### Instance-2

• Given inputs for the “d” are −

• Center 1 = (5, 8), Center 2 = (9, 11), R1 = 20 , R2 = 40 .

• After finding the value of “d” the result will be −

• Circle 1 lie inside 2

## Algorithm

• Step-1 − Declare and initialize the variables.

• Step-2 − Find the distance between center 1 and center 2 of the circle.

• Step-3 − Check for the five conditions of distance.

• Step-4 − Print the result.

## Multiple Approaches

We have provided the solution in different approaches.

• By Using Static Inputs

• By Using User Defined Method

Let’s see the program along with its output one by one.

## Approach-1: By Using Static Input

In this approach, values of radius 1 and radius 2, center 1 and center 2 will be assigned to find “d”. Then as per the algorithm we will find if the line touches, intersects or lies outside the circle.

### Example

public class Main {
//main method
public static void main(String[] args){

//declaring variables
int x1 = 9, y1 = 3;
int x2 = 11, y2 = 1;
int r1 = 5, r2 = 4;

//finding d using the formula
double d = Math.sqrt((x1 - x2) * (x1 - x2)	+ (y1 - y2) * (y1 - y2));
if (d <= r1 - r2) {
//print if Circle 2 lie inside circle 1
System.out.println("Circle 2 lie inside circle 1");
}
else if (d <= r2 - r1) {

//print if Circle 1 lie inside 2
System.out.println("Circle 1 lie inside 2");
}
else if (d < r1 + r2) {

//print if Circle 1 and 2 intersect each other
System.out.println("Circle 1 and 2 intersect each other");
}
else if (d == r1 + r2) {

//print if Circle 1 and 2 touch each other
System.out.println("Circle 1 and 2 touch each other");
} else {

//print if Circle 1 and 2 do not touch each other
System.out.println("Circle 1 and 2 do not touch each other");
}
}
}


### Output

Circle 1 and 2 intersect each other


## Approach-2: By Using User Defined Method

In this approach, values of radius 1 and radius 2, center 1 and center 2 will be assigned to find “d”. Then call a user defined method by passing the given values and as per the algorithm we will find if the line touches, intersects or lies outside the circle.

### Example

public class Main {
//main method
public static void main(String[] args){

//declaring variables
int x1 = 5, y1 = 8;
int x2 = 9, y2 = 11;
int r1 = 20, r2 = 40;

//calling user defined method
func(x1, y1, x2, y2, r1, r2);
}

//user defined method
static void func(int x1, int y1, int x2, int y2, int r1, int r2){

//finding d using the formula
double d = Math.sqrt((x1 - x2) * (x1 - x2)	+ (y1 - y2) * (y1 - y2));
if (d <= r1 - r2) {

//print if Circle 2 lie inside circle 1
System.out.println("Circle 2 lie inside circle 1");
}
else if (d <= r2 - r1) {

//print if Circle 1 lie inside 2
System.out.println("Circle 1 lie inside 2");
}
else if (d < r1 + r2) {

//print if Circle 1 and 2 intersect each other
System.out.println("Circle 1 and 2 intersect each other");
}
else if (d == r1 + r2) {

//print if Circle 1 and 2 touch each other
System.out.println("Circle 1 and 2 touch each other");
}
else {

//print if Circle 1 and 2 do not touch each other
System.out.println("Circle 1 and 2 do not touch each other");
}
}
}


### Output

Circle 1 lie inside 2


In this article, we explored different approaches to find if two given circles touch or intersect each other by using Java programming language.

Updated on: 04-May-2023

487 Views