Check if a circle lies inside another circle or not - GeeksforGeeks

22 Oct, 2021
Given two circles with radii and centres given. The task is to check whether the smaller circle lies inside the bigger circle or not. 
Examples:  
Input: x1 = 10, y1 = 8, x2 = 1, y2 = 2, r1 = 30, r2 = 10 
Output: The smaller circle lies completely inside
 the bigger circle without touching each other
 at a point of circumference. 


Input :x1 = 7, y1 = 8;x2 = 3, y2 = 5;r1 = 30, r2 = 25
Output :The smaller circle lies completely inside
 the bigger circle with touching each other
 at a point of circumference.
Approach: Here three cases can come,  
The smaller circle lies completely inside the bigger circle without touching each other at a point of circumference. If this case happens, the sum of the distance between the centres and smaller radius is lesser than the bigger radius, then obviously the smaller circle lies completely inside the circle, without touching the circumference.
The smaller circle lies completely inside the bigger circle with touching each other at a point of the circumference. If this case happens, the sum of the distance between the centres and smaller radius is equal to the bigger radius, then obviously the smaller circle lies completely inside the circle, with touching the circumference.
The smaller does not lies inside the bigger circle completely.If this case happens, then sum of the distance between the centers and smaller radius is greater than the bigger radius, then obviously the smaller circle does not lies completely inside the circle.
Below is the implementation of the above approach:  
CPP
Java
Python
C#
Javascript
// C++ program to check if one circle// lies inside another circle or not.  #include <bits/stdc++.h>using namespace std;  void circle(int x1, int y1, int x2,            int y2, int r1, int r2){    int distSq = sqrt(((x1 - x2)                       * (x1 - x2))                      + ((y1 - y2)                         * (y1 - y2)));      if (distSq + r2 == r1)        cout << "The smaller circle lies completely"             << " inside the bigger circle with "             << "touching each other "             << "at a point of circumference. "             << endl;    else if (distSq + r2 < r1)        cout << "The smaller circle lies completely"             << " inside the bigger circle without"             << " touching each other "             << "at a point of circumference. "             << endl;    else        cout << "The smaller does not lies inside"             << " the bigger circle completely."             << endl;}  // Driver codeint main(){    int x1 = 10, y1 = 8;    int x2 = 1, y2 = 2;    int r1 = 30, r2 = 10;    circle(x1, y1, x2, y2, r1, r2);      return 0;}
// Java program to check if one circle // lies inside another circle or not. import java.io.*;  class GFG {              static void circle(int x1, int y1, int x2,                 int y2, int r1, int r2)     {         int distSq = (int)Math.sqrt(((x1 - x2)                                     * (x1 - x2))                                     + ((y1 - y2)                                     * (y1 - y2)));               if (distSq + r2 == r1)         {            System.out.println("The smaller circle lies completely"                + " inside the bigger circle with "                + "touching each other "                + "at a point of circumference. ") ;        }                          else if (distSq + r2 < r1)         {            System.out.println("The smaller circle lies completely"                + " inside the bigger circle without"                + " touching each other "                + "at a point of circumference.") ;        }                          else        {            System.out.println("The smaller does not lies inside"                + " the bigger circle completely.") ;        }                      }           // Driver code     public static void main (String[] args)     {        int x1 = 10, y1 = 8;         int x2 = 1, y2 = 2;         int r1 = 30, r2 = 10;         circle(x1, y1, x2, y2, r1, r2);     }}  // This code is contributed by ajit_00023.
# Python3 program to check if one circle# lies inside another circle or not.  def circle(x1, y1, x2,y2, r1, r2):      distSq = (((x1 - x2)* (x1 - x2))+ ((y1 - y2)* (y1 - y2)))**(.5)      if (distSq + r2 == r1):        print("The smaller circle lies completely"            " inside the bigger circle with "            "touching each other "            "at a point of circumference. ")    elif (distSq + r2 < r1):        print("The smaller circle lies completely"            " inside the bigger circle without"            " touching each other "            "at a point of circumference. ")    else:        print("The smaller does not lies inside"            " the bigger circle completely.")  # Driver codex1 ,y1 = 10,8x2 ,y2 = 1, 2r1 ,r2 = 30,10circle(x1, y1, x2, y2, r1, r2)  # This code is contributed by mohit kumar 29
// C# program to check if one circle // lies inside another circle or not. using System;  class GFG{          static void circle(int x1, int y1, int x2,                 int y2, int r1, int r2)     {         int distSq = (int)Math.Sqrt(((x1 - x2)                         * (x1 - x2))                         + ((y1 - y2)                             * (y1 - y2)));               if (distSq + r2 == r1)         {            Console.WriteLine("The smaller circle lies completely"                + " inside the bigger circle with "                + "touching each other "                + "at a point of circumference. ") ;        }                          else if (distSq + r2 < r1)         {            Console.WriteLine("The smaller circle lies completely"                + " inside the bigger circle without"                + " touching each other "                + "at a point of circumference.") ;        }                          else        {            Console.WriteLine("The smaller does not lies inside"                + " the bigger circle completely.") ;        }                      }           // Driver code     static public void Main ()    {        int x1 = 10, y1 = 8;         int x2 = 1, y2 = 2;         int r1 = 30, r2 = 10;         circle(x1, y1, x2, y2, r1, r2);     }}  // This code is contributed by AnkitRai01
PHP 

<?php
// PHP program to check if one circle
// lies inside another circle or not.

function circle($x1, $y1, $x2,
            $y2, $r1, $r2)
{
    $distSq = sqrt((($x1 - $x2)
                    * ($x1 - $x2))
                    + (($y1 - $y2)
                        * ($y1 - $y2)));

    if ($distSq + $r2 == $r1)
        echo "The smaller circle lies completely ", 
            "inside the bigger circle with ", 
            "touching each other ", 
            "at a point of circumference. \n";
        
    else if ($distSq + $r2 < $r1)
        echo "The smaller circle lies completely ",
            "inside the bigger circle without ",
            "touching each other ", 
            "at a point of circumference. \n";
            
    else
        echo "The smaller does not lies inside ",
            "the bigger circle completely. \n";
            
}

// Driver code

$x1 = 10;
$y1 = 8;
$x2 = 1; 
$y2 = 2;
$r1 = 30; 
$r2 = 10;
circle($x1, $y1, $x2, $y2, $r1, $r2);


// This code is contributed by ihritik
?>



<script>// javascript program to check if one circle // lies inside another circle or not. function circle(x1 , y1 , x2,             y2 , r1 , r2) {     var distSq = parseInt(Math.sqrt(((x1 - x2)                                 * (x1 - x2))                                 + ((y1 - y2)                                 * (y1 - y2))));       if (distSq + r2 == r1)     {        document.write("The smaller circle lies completely"            + " inside the bigger circle with "            + "touching each other "            + "at a point of circumference. ") ;    }                  else if (distSq + r2 < r1)     {        document.write("The smaller circle lies completely"            + " inside the bigger circle without"            + " touching each other "            + "at a point of circumference.") ;    }                  else    {        document.write("The smaller does not lies inside"            + " the bigger circle completely.") ;    }              }       // Driver code var x1 = 10, y1 = 8; var x2 = 1, y2 = 2; var r1 = 30, r2 = 10; circle(x1, y1, x2, y2, r1, r2);   // This code is contributed by Princi Singh </script>
mohit kumar 29
ankthon
jit_t
ihritik
princi singh
anikaseth98
arorakashish0911
circle
Geometric
Mathematical
Mathematical
Geometric
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Line Clipping | Set 1 (Cohen–Sutherland Algorithm)
Check whether a given point lies inside a triangle or not
Optimum location of point to minimize total distance
Closest Pair of Points | O(nlogn) Implementation
Polygon Clipping | Sutherland–Hodgman Algorithm
Program for Fibonacci numbers
Write a program to print all permutations of a given string
C++ Data Types
Set in C++ Standard Template Library (STL)
Coin Change | DP-7