Hay dos círculos A y B con sus centros C1(x1, y1) y C2(x2, y2) y radio R1 y R2 . La tarea es verificar que ambos círculos A y B se toquen entre sí o no.
Ejemplos:
Entrada: C1 = (3, 4)
C2 = (14, 18)
R1 = 5, R2 = 8
Salida: Los círculos no se tocan entre sí.Entrada: C1 = (2, 3)
C2 = (15, 28)
R1 = 12, R2 = 10
Salida: Los círculos se cruzan entre sí.Entrada: C1 = (-10, 8)
C2 = (14, -24)
R1 = 30, R2 = 10
Aproximación: La
distancia entre los centros C1 y C2 se calcula como
C1C2 = sqrt((x1 – x2) 2 + (y1 – y2) 2 ).
Hay tres condiciones que se presentan.
- Si C1C2 <= R1 – R2: el círculo B está dentro de A.
- Si C1C2 <= R2 – R1: el círculo A está dentro de B.
- Si C1C2 < R1 + R2: Los círculos se cruzan entre sí.
- Si C1C2 == R1 + R2: Los círculos A y B están en contacto entre sí.
- De lo contrario, haga un círculo en A y no se superpongan
A continuación se muestra la implementación del enfoque anterior:
C++
// 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) { double d = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)); if (d <= r1 - r2) { cout << "Circle B is inside A"; } else if (d <= r2 - r1) { cout << "Circle A is inside B"; } else if (d < r1 + r2) { cout << "Circle intersect to each other"; } else if (d == r1 + r2) { cout << "Circle touch to each other"; } else { cout << "Circle not touch to each other"; } } // Driver code int main() { int x1 = -10, y1 = 8; int x2 = 14, y2 = -24; int r1 = 30, r2 = 10; circle(x1, y1, x2, y2, r1, r2); return 0; }
Java
// Java program to check if two // circles touch each other or not. import java.io.*; class GFG { static void circle(int x1, int y1, int x2, int y2, int r1, int r2) { double d = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)); if (d <= r1 - r2) { System.out.println("Circle B is inside A"); } else if (d <= r2 - r1) { System.out.println("Circle A is inside B"); } else if (d < r1 + r2) { System.out.println("Circle intersect" + " to each other"); } else if (d == r1 + r2) { System.out.println("Circle touch to" + " each other"); } else { System.out.println("Circle not touch" + " to each other"); } } // Driver code public static void main(String[] args) { int x1 = -10, y1 = 8; int x2 = 14, y2 = -24; int r1 = 30, r2 = 10; circle(x1, y1, x2, y2, r1, r2); } } // This article is contributed by vt_m.
Circle touch to each other
Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)
Este artículo es una contribución de Aarti_Rathi y Dharmendra kumar . 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