Verifique si el círculo dado reside en el límite mantenido por otros dos círculos

Dado el radio del círculo exterior R y el radio del círculo interior r, haciendo círculos desde el mismo centro y formando el límite entre ellos. Ahora, dadas las coordenadas X e Y que denotan el centro del nuevo círculo que se formará con radio rad, su tarea es verificar si el círculo con las coordenadas X e Y como centro puede caber en el límite de los círculos formados o no.
Ejemplos: 
 

Entrada: R = 8, r = 4, x = 5, y = 3, rad = 1
Salida: Se adapta

Entrada: R = 9, r = 4, x = 5, y = 3, rad = 1
Salida: Se adapta

Entrada:  R = 8, r = 4, x = 5, y = 3, rad = 3.
Salida: No encaja

Check whether given circle resides in boundary maintained by two other circles

Aproximación: La idea es calcular la distancia entre el centro (0, 0) y las coordenadas del círculo a comprobar. 

  • Si 
    • distancia + radio (del círculo a comprobar) es menor o igual que el radio exterior y 
    • distancia: el radio (del círculo que se va a comprobar) es mayor o igual que el radio del círculo interior, 
  • encajará

Fit = \left\{\begin{matrix} distance + radius_{CircleToBeChecked} \leq radius_{Outer}  \\ distance - radius_{CircleToBeChecked} \geq radius_{Inner}  \\ \end{matrix}\right.

A continuación se muestra la implementación del enfoque anterior:

C++

// CPP program to check whether circle with given
// co-ordinates reside within the boundary
// of outer circle and inner circle
#include <bits/stdc++.h>
using namespace std;
 
// function to check if given circle fit in
// boundary or not
void fitOrNotFit(int R, int r, int x, int y,
                                 int rad) {
         
    // Distance from the center
    double val = sqrt(pow(x, 2) + pow(y, 2));
     
    // Checking the corners of circle
    if (val + rad <= R && val - rad >= r)   
        cout << "Fits\n";   
    else
        cout << "Doesn't Fit\n";
}
 
// driver program
int main()
{
    // Radius of outer circle and inner circle
    // respectively
    int R = 8, r = 4;
     
    // Co-ordinates and radius of the circle
    // to be checked
    int x = 5, y = 3, rad = 3;
    fitOrNotFit(R, r, x, y, rad);
    return 0;
}

Java

// Java program to check whether circle with given
// co-ordinates reside within the boundary
// of outer circle and inner circle
import java.util.*;
 
class GFG
{
// function to check if given circle fit in
// boundary or not
static void fitOrNotFit(int R, int r, int x, int y,
                                        int rad)
{
    // Distance from the center
    double val = Math.sqrt(Math.pow(x, 2) +
                           Math.pow(y, 2));
     
    // Checking the corners of circle
    if (val + rad <= R && val - rad >= r)
        System.out.println("Fits");
    else
    System.out.println("Doesn't Fit");    
}
 
// driver program
public static void main (String[] args)
{
    // Radius of outer circle and inner circle
    // respectively
    int R = 8, r = 4;
     
    // Co-ordinates and radius of the circle
    // to be checked
    int x = 5, y = 3, rad = 3;
    fitOrNotFit(R, r, x, y, rad);
}
}
/* This Code is contributed by Kriti Shukla */

Python3

# Python3 program to check
# whether circle with given
# co-ordinates reside
# within the boundary
# of outer circle
# and inner circle
 
import math
 
# function to check if
# given circle fit in
# boundary or not
def fitOrNotFit(R, r, x, y, rad) :
         
    # Distance from the center
    val = math.sqrt(math.pow(x, 2) + math.pow(y, 2))
     
    # Checking the corners of circle
    if (val + rad <= R and val - rad >= r) :
        print("Fits\n") 
    else:
        print("Doesn't Fit")
  
 
# driver program
  
# Radius of outer circle and inner circle
# respectively
R = 8
r = 4
     
# Co-ordinates and radius of the circle
# to be checked
x = 5
y = 3
rad = 3
 
fitOrNotFit(R, r, x, y, rad)
 
# This code is contributed by
# Smitha Dinesh Semwal

C#

// C# program to check whether circle with given
// co-ordinates reside within the boundary
// of outer circle and inner circle
using System;
 
class GFG
{
    // function to check if given circle fit in
    // boundary or not
    static void fitOrNotFit(int R, int r, int x, int y,
                                            int rad)
    {
        // Distance from the center
        double val = Math.Sqrt(Math.Pow(x, 2) +
                               Math.Pow(y, 2));
          
        // Checking the corners of circle
        if (val + rad <= R && val - rad >= r)
            Console.WriteLine("Fits");
        else
        Console.WriteLine("Doesn't Fit");    
    }
      
    // Driver program
    public static void Main ()
    {
        // Radius of outer circle and inner circle
        // respectively
        int R = 8, r = 4;
          
        // Co-ordinates and radius of the circle
        // to be checked
        int x = 5, y = 3, rad = 3;
        fitOrNotFit(R, r, x, y, rad);
    }
}
 
// This Code is contributed by Anant Agarwal.

PHP

<?php
// PHP program to check whether
// circle with given co-ordinates
// reside within the boundary
// of outer circle and inner circle
 
// function to check if given 
// circle fit in boundary or not
function fitOrNotFit($R, $r, $x, $y,
                               $rad)
{
         
    // Distance from the center
    $val = sqrt(pow($x, 2) + pow($y, 2));
     
    // Checking the corners of circle
    if ($val + $rad <= $R && $val -
                  $rad >= $r)
        echo"Fits\n";
    else
        echo "Doesn't Fit\n";
}
 
    // Driver Code
 
    // Radius of outer circle and
    // inner circle respectively
    $R = 8; $r = 4;
     
    // Co-ordinates and radius of
    // the circle to be checked
    $x = 5; $y = 3; $rad = 3;
    fitOrNotFit($R, $r, $x, $y, $rad);
     
// This Code is contributed by vt_m.
?>

Javascript

<script>
 
// Javascript program to check whether circle with given
// co-ordinates reside within the boundary
// of outer circle and inner circle
 
// function to check if given circle fit in
// boundary or not
function fitOrNotFit(R, r, x, y, rad) {
         
    // Distance from the center
    var val = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
     
    // Checking the corners of circle
    if (val + rad <= R && val - rad >= r)   
        document.write( "Fits<br>");   
    else
        document.write( "Doesn't Fit<br>");
}
 
// driver program
// Radius of outer circle and inner circle
// respectively
var R = 8, r = 4;
 
// Co-ordinates and radius of the circle
// to be checked
var x = 5, y = 3, rad = 3;
fitOrNotFit(R, r, x, y, rad);
 
 
</script>
Producción

Doesn't Fit

Complejidad temporal: O(log n) 
Espacio auxiliar: O(1)

Este artículo es una contribución de Aarti_Rathi y Rohit Thapliyal . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *