- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
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.