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

994 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements