Computer >> Máy Tính >  >> Lập trình >> C ++

Kiểm tra xem một vòng kết nối có nằm bên trong một vòng kết nối khác hay không trong C ++

Giả sử chúng ta có hai vòng tròn (điểm tâm và giá trị bán kính), chúng ta phải kiểm tra một vòng tròn có nằm gọn trong một vòng tròn khác hay không. Có ba nguyên nhân có thể xảy ra.

  • Vòng tròn nhỏ hơn nằm hoàn toàn bên trong vòng tròn lớn hơn, không chạm vào nhau. Trong trường hợp này, tổng khoảng cách giữa các tâm và bán kính nhỏ hơn bán kính lớn hơn. Vì vậy, cái nhỏ hơn sẽ ở bên trong cái lớn hơn.

  • Trường hợp thứ hai là hình tròn nhỏ hơn nằm bên trong hình tròn lớn hơn nhưng cũng chạm vào chu vi của hình tròn lớn hơn.

  • Trường hợp thứ ba là, một số phần của hình tròn nhỏ hơn nằm bên trong hình tròn lớn hơn.

Để giải quyết điều này, chúng ta phải tìm khoảng cách giữa hai tâm, sau đó sử dụng giá trị khoảng cách và bán kính, chúng ta sẽ xác định được các trường hợp đó.

Ví dụ

#include <iostream>
#include <cmath>
using namespace std;
void isCircleInside(int x_big, int y_big, int x_small, int y_small, int r_big, int r_small) {
   int distSq = sqrt(((x_big - x_small) * (x_big - x_small)) + ((y_big - y_small) * (y_big - y_small)));
   if (distSq + r_small == r_big)
      cout << "Inside the bigger circle, touching circimferene" << endl;
      else if (distSq + r_small < r_big)
         cout << "Completely inside the bigger circle" << endl;
   else
      cout << "Not inside the bigger circle" << endl;
}
int main() {
   int x1 = 10, y1 = 8;
   int x2 = 1, y2 = 2;
   int r1 = 30, r2 = 10;
   isCircleInside(x1, y1, x2, y2, r1, r2);
}

Đầu ra

Completely inside the bigger circle