Check if two given circles touch or intersect each other

22 Jun, 2022
There are two circle A and B with their centres C1(x1, y1) and C2(x2, y2) and radius R1 and R2. 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
Input : -10 8
        14 -24 
        30 10
Output : Circle touch each other.
Approach: 
Distance between centres C1 and C2 is calculated as
 C1C2 = sqrt((x1 – x2)2 + (y1 – y2)2).
There are three condition arises.
If C1C2 == R1 + R2: Circle A and B are touch to each other.If C1C2 > R1 + R2: Circle A and B are not touch to each other.If C1C2 < R1 + R2: Circle intersects each other.
If C1C2 == R1 + R2: Circle A and B are touch to each other.
If C1C2 > R1 + R2: Circle A and B are not touch to each other.
If C1C2 < R1 + R2: Circle intersects each other.
Below is the implementation of the above approach: 
C++
Java
Python3
C#
PHP
Javascript
// C++ program to check if two// circles touch each other or not.#include <bits/stdc++.h>using namespace std; int circle(int x1, int y1, int x2,           int y2, int r1, int r2){    int distSq = (x1 - x2) * (x1 - x2) +                 (y1 - y2) * (y1 - y2);    int radSumSq = (r1 + r2) * (r1 + r2);    if (distSq == radSumSq)        return 1;    else if (distSq > radSumSq)        return -1;    else        return 0;} // Driver codeint main(){    int x1 = -10, y1 = 8;    int x2 = 14, y2 = -24;    int r1 = 30, r2 = 10;    int t = circle(x1, y1, x2,                   y2, r1, r2);    if (t == 1)        cout << "Circle touch to"             << " each other.";    else if (t < 0)        cout << "Circle not touch"             << " to each other.";    else        cout << "Circle intersect"             << " to each other.";    return 0;}
// Java program to check if two// circles touch each other or not.import java.io.*; class GFG{    static int circle(int x1, int y1, int x2,                      int y2, int r1, int r2)    {        int distSq = (x1 - x2) * (x1 - x2) +                     (y1 - y2) * (y1 - y2);        int radSumSq = (r1 + r2) * (r1 + r2);        if (distSq == radSumSq)            return 1;        else if (distSq > radSumSq)            return -1;        else            return 0;    }     // Driver code    public static void main (String[] args)    {        int x1 = -10, y1 = 8;        int x2 = 14, y2 = -24;        int r1 = 30, r2 = 10;        int t = circle(x1, y1, x2,                       y2, r1, r2);        if (t == 1)            System.out.println ( "Circle touch to" +                                 " each other.");        else if (t < 0)            System.out.println ( "Circle not touch" +                                 " to each other.");        else            System.out.println ( "Circle intersect" +                                 " to each other.");                 }} // This article is contributed by vt_m.
# Python3 program to# check if two circles touch# each other or not. def circle(x1, y1, x2, y2, r1, r2):      distSq = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);    radSumSq = (r1 + r2) * (r1 + r2);    if (distSq == radSumSq):        return 1    else if (distSq > radSumSq):        return -1    else:        return 0   # Driver codex1 = -10y1 = 8x2 = 14y2 = -24r1 = 30r2 = 10 t = circle(x1, y1, x2, y2, r1, r2)if (t == 1):    print("Circle touch to each other.")else if (t < 0):    print("Circle not touch to each other.")else:    print("Circle intersect to each other.") # This code is contributed by# Smitha Dinesh Semwal
// C# program to check if two// circles touch each other or not.using System; class GFG{    static int circle(int x1, int y1, int x2,                      int y2, int r1, int r2)    {        int distSq = (x1 - x2) * (x1 - x2) +                     (y1 - y2) * (y1 - y2);        int radSumSq = (r1 + r2) * (r1 + r2);        if (distSq == radSumSq)            return 1;        else if (distSq > radSumSq)            return -1;        else            return 0;    }     // Driver code    public static void Main ()    {        int x1 = -10, y1 = 8;        int x2 = 14, y2 = -24;        int r1 = 30, r2 = 10;        int t = circle(x1, y1, x2,                       y2, r1, r2);        if (t == 1)            Console.WriteLine ( "Circle touch" +                             " to each other.");        else if (t < 0)            Console.WriteLine( "Circle not touch" +                                " to each other.");        else            Console.WriteLine ( "Circle intersect" +                                 " to each other.");                 }} // This code is contributed by vt_m.
<?php// PHP program to check if two// circles touch each other or not. function circle($x1, $y1, $x2,                $y2, $r1, $r2){    $distSq = ($x1 - $x2) * ($x1 - $x2) +              ($y1 - $y2) * ($y1 - $y2);    $radSumSq = ($r1 + $r2) * ($r1 + $r2);    if ($distSq == $radSumSq)        return 1;    else if ($distSq > $radSumSq)        return -1;    else        return 0;} // Driver code$x1 = -10; $y1 = 8;$x2 = 14; $y2 = -24;$r1 = 30; $r2 = 10;$t = circle($x1, $y1, $x2,            $y2, $r1, $r2);if ($t == 1)    echo "Circle touch to each other.";else if ($t < 0)    echo "Circle not touch to each other.";else    echo "Circle intersect to each other."; // This code is contributed by vt_m.?>
<script> // JavaScript program to check if two// circles touch each other or not. function circle(x1, y1, x2,                      y2, r1, r2)    {        let distSq = (x1 - x2) * (x1 - x2) +                     (y1 - y2) * (y1 - y2);        let radSumSq = (r1 + r2) * (r1 + r2);        if (distSq == radSumSq)            return 1;        else if (distSq > radSumSq)            return -1;        else            return 0;    } // Driver Code        let x1 = -10, y1 = 8;        let x2 = 14, y2 = -24;        let r1 = 30, r2 = 10;        let t = circle(x1, y1, x2,                       y2, r1, r2);        if (t == 1)            document.write ( "Circle touch to" +                                 " each other.");        else if (t < 0)            document.write( "Circle not touch" +                                 " to each other.");        else            document.write ( "Circle intersect" +                                 " to each other.");   // This code is contributed by susmitakundugoaldanga.</script>
Circle touch to each other.
Time Complexity: O(1) Auxiliary Space: O(1)
This article is contributed by Aarti_Rathi and Dharmendra kumar. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 
vt_m
susmitakundugoaldanga
ysachin2314
simranarora5sos
simmytarika5
RishabhPrabhu
adi1212
circle
Geometric
Mathematical
Misc
Misc
Mathematical
Misc
Geometric
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Program for distance between two points on earth
Find if two rectangles overlap
Check whether triangle is valid or not if sides are given
Line Clipping | Set 1 (Cohen–Sutherland Algorithm)
Program for Point of Intersection of Two Lines
Program for Fibonacci numbers
Set in C++ Standard Template Library (STL)
Write a program to print all permutations of a given string
C++ Data Types
Merge two sorted arrays