Check if a given circle lies completely inside the ring formed by two concentric circles - GeeksforGeeks

07 Apr, 2021
Given two circles of radius r and R, both have their centre at the origin. Now, given another circle of radius r1 and centre at (x1, y1). Check, if the third circle(circle of radius r1) lies completely inside the ring formed by two circles of radius r and R.Examples : 
Input : r = 8 R = 4
        r1 = 2 x1 = 6 y1 = 0
Output : yes

Input : r = 8 R = 4 
        r1 = 2 x1 = 5 y1 = 0
Output : no
Important : Concentric circles are those circles which have same centre. The region lying between two concentric circles is called annulus or the circular ring.  
Example : There are two concentric circles with their centre at origin(0, 0) and radius as r = 8 and R = 4. 1.) Circle 1 and 2 lies inside the ring. 2.) Circle 3 and 4 are outside the ring.The complete figure can be visualised as given below :  
Approach : This problem can be solved using Pythagoras Theorem . Compute the distance between the centre of the circle and origin using Pythagoras theorem, suppose it is denoted by ‘dis’. After computing the distance just check that the value of (dis – r1)> = r and (dis + r1)< = R. If both these conditions hold then the circle lies completely inside the ring.
C++
Java
Python3
C#
PHP
Javascript
// CPP code to check if a circle// lies in the ring#include <bits/stdc++.h>using namespace std; // Function to check if circle// lies in the ringbool checkcircle(int r, int R, int r1,                        int x1, int y1){    // distance between center of circle    // center of concentric circles(origin)    // using Pythagoras theorem    int dis = sqrt(x1*x1+y1*y1);         // Condition to check if circle is    // strictly inside the ring    return (dis-r1 >= R && dis+r1 <= r);} // Driver Codeint main(){    // Both circle with radius 'r'    // and 'R' have center (0,0)    int r = 8, R = 4, r1 = 2, x1 = 6, y1 = 0;       if (checkcircle(r, R, r1, x1, y1))       cout << "yes" << endl;    else       cout << "no" << endl;         return 0;}
// Java code to check if a// circle lies in the ringimport java.io.*; class ring{    // Function to check if circle    // lies in the ring    public static boolean checkcircle(int r, int R,                            int r1, int x1, int y1)    {        // distance between center of circle        // center of concentric circles(origin)        // using Pythagoras theorem        int dis = (int)Math.sqrt(x1 * x1 +                                 y1 * y1);                  // Condition to check if circle         // is strictly inside the ring        return (dis - r1 >= R && dis + r1 <= r);    }         // Driver Code    public static void main(String args[])    {        // Both circle with radius 'r'        // and 'R' have center (0,0)        int r = 8, R = 4, r1 = 2, x1 = 6, y1 = 0;                if (checkcircle(r, R, r1, x1, y1))            System.out.println("yes");        else            System.out.println("no");    }}
# Python3 code to check if# a circle  lies in the ringimport math # Function to check if circle# lies in the ringdef checkcircle(r, R, r1, x1, y1):     # distance between center of circle    # center of concentric circles(origin)    # using Pythagoras theorem    dis = int(math.sqrt(x1 * x1 + y1 * y1))         # Condition to check if circle is    # strictly inside the ring    return (dis-r1 >= R and dis+r1 <= r)  # Driver Code # Both circle with radius 'r'# and 'R' have center (0,0)r = 8; R = 4; r1 = 2; x1 = 6; y1 = 0if (checkcircle(r, R, r1, x1, y1)):    print("yes")else:    print("no")     # This code is contributed by Smitha Dinesh Semwal.
// C# code to check if a// circle lies in the ringusing System; class ring {         // Function to check if circle    // lies in the ring    public static bool checkcircle(int r, int R,                         int r1, int x1, int y1)    {        // distance between center of circle        // center of concentric circles(origin)        // using Pythagoras theorem        int dis = (int)Math.Sqrt(x1 * x1 + y1 * y1);         // Condition to check if circle        // is strictly inside the ring        return (dis - r1 >= R && dis + r1 <= r);    }     // Driver Code    public static void Main()    {        // Both circle with radius 'r'        // and 'R' have center (0, 0)        int r = 8, R = 4, r1 = 2, x1 = 6, y1 = 0;         if (checkcircle(r, R, r1, x1, y1))            Console.WriteLine("yes");        else            Console.WriteLine("no");    }} // This code is contributed by vt_m.
<?php// PHP code to check if a circle// lies in the ring // Function to check if circle// lies in the ringfunction checkcircle($r, $R, $r1,                         $x1, $y1){         // distance between center of circle    // center of concentric circles(origin)    // using Pythagoras theorem    $dis = sqrt($x1 * $x1 + $y1 * $y1);         // Condition to check if circle is    // strictly inside the ring    return ($dis-$r1 >= $R && $dis + $r1 <= $r);}     // Driver Code    // Both circle with radius 'r'    // and 'R' have center (0,0)    $r = 8; $R = 4;    $r1 = 2; $x1 = 6;    $y1 = 0;    if (checkcircle($r, $R, $r1, $x1, $y1))         echo "yes" ,"\n";    else    echo "no" ,"\n";     // This code is contributed by ajit.?>
<script>// JavaScript program code to check if a// circle lies in the ring // Function to check if circle    // lies in the ring    function checkcircle(r, R, r1, x1, y1)    {        // distance between center of circle        // center of concentric circles(origin)        // using Pythagoras theorem        let dis = Math.sqrt(x1 * x1 +                                 y1 * y1);                   // Condition to check if circle         // is strictly inside the ring        return (dis - r1 >= R && dis + r1 <= r);    }   // Driver Code         // Both circle with radius 'r'        // and 'R' have center (0,0)        let r = 8, R = 4, r1 = 2, x1 = 6, y1 = 0;                 if (checkcircle(r, R, r1, x1, y1))            document.write("yes");        else            document.write("no"); // This code is contributed by splevel62.</script>
yes
 
Time Complexity: O(1 )
Auxiliary Space: O(1)
jit_t
ujjwalgoel1103
splevel62
circle
Geometric
Mathematical
Mathematical
Geometric
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Program for distance between two points on earth
Closest Pair of Points | O(nlogn) Implementation
Line Clipping | Set 1 (Cohen–Sutherland Algorithm)
Given n line segments, find if any two segments intersect
Sum of Manhattan distances between all pairs of points
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)
Program to find GCD or HCF of two numbers