logo

주어진 두 원이 서로 닿거나 교차하는지 확인

GfG Practice에서 사용해 보세요. ' title= #practiceLinkDiv { 표시: 없음 !중요; }

중심이 있는 두 개의 원 A와 B가 있습니다. C1(x1y1) 그리고 C2(x2 y2) 반경 R1 그리고 R2 . 이 작업은 원 A와 B가 서로 닿는지 확인하는 것입니다.

예:   

ddl 대 dml

입력 : C1 = (3 4)
        C2 = (14 18)
        R1 = 5 R2 = 8
출력 : 원은 서로 닿지 않습니다.



입력 : C1 = (2 3)
        C2 = (15 28)
        R1 = 12 R2 = 10
출력 : 원은 서로 교차합니다.

입력 : C1 = (-10 8)
        C2 = (14 -24)
        R1 = 30 R2 = 10

추천 연습 주어진 두 원이 서로 닿는지 확인해보세요.

접근하다:
중심 C1과 C2 사이의 거리는 다음과 같이 계산됩니다.

java에는 하위 문자열이 포함되어 있습니다.

 C1C2 = sqrt((x1 - x2) 2 + (y1 - y2) 2 ).

본어게인 쉘

세 가지 조건이 발생합니다.

  1. 만약에 C1C2<= R1 - R2: 원 B는 A 안에 있습니다.
  2. 만약에 C1C2<= R2 - R1: 원 A는 B 안에 있습니다.
  3. 만약에 C1C2< R1 + R2: 원은 서로 교차합니다.
  4. 만약에 C1C2 == R1 + R2: A와 B는 서로 연결되어 있습니다.
  5. 그렇지 않으면 원 A와 B는 겹치지 않습니다.

다음은 위의 접근 방식을 구현한 것입니다. 

C++
// C++ program to check if two // circles touch each other or not. #include    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. 
Python
# Python program to check if two # circles touch each other or not. import math # Function to check if two circles touch each other def circle(x1 y1 x2 y2 r1 r2): d = math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)) if(d <= r1 - r2): print('Circle B is inside A') elif(d <= r2 - r1): print('Circle A is inside B') elif(d < r1 + r2): print('Circle intersect to each other') elif(d == r1 + r2): print('Circle touch to each other') else: print('Circle not touch to each other') # Driver code x1 y1 = -10 8 x2 y2 = 14 -24 r1 r2 = 30 10 # Function call circle(x1 y1 x2 y2 r1 r2) # This code is contributed by Aman Kumar 
C#
// C# program to check if two // circles touch each other or not. using System; 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) {  Console.Write('Circle B is inside A');  }  else if (d <= r2 - r1) {  Console.Write('Circle A is inside B');  }  else if (d < r1 + r2) {  Console.Write('Circle intersect'  + ' to each other');  }  else if (d == r1 + r2) {  Console.Write('Circle touch to'  + ' each other');  }  else {  Console.Write('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 Pushpesh Raj. 
JavaScript
// JavaScript program to check if two circles touch each other or not. function circle(x1 y1 x2 y2 r1 r2) {  var d = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));  if (d <= r1 - r2) {  console.log('Circle B is inside A');  } else if (d <= r2 - r1) {  console.log('Circle A is inside B');  } else if (d < r1 + r2) {  console.log('Circle intersect to each other');  } else if (d === r1 + r2) {  console.log('Circle touch to each other');  } else {  console.log('Circle not touch to each other');  } } // Driver code var x1 = -10 y1 = 8; var x2 = 14 y2 = -24; var r1 = 30 r2 = 10; circle(x1 y1 x2 y2 r1 r2); // this code is contributed by devendra 

산출
Circle touch to each other

시간 복잡도: 내장된 sqrt 함수를 사용하기 때문에 O(log(n)) 
보조 공간: 오(1)


이 기사는 기고자: Aarti_Rathi 그리고 다르멘드라 쿠마르 .

퀴즈 만들기