C++ 中判斷一個圓是否在另一個圓內


假設我們有兩個圓(圓心和半徑值),我們需要檢查一個圓是否完全位於另一個圓內。有三種可能的情況。

  • 較小的圓完全位於較大的圓內,且兩者之間沒有接觸。在這種情況下,圓心之間距離加上較小圓的半徑之和小於較大圓的半徑。因此,較小的圓將位於較大的圓內。

  • 第二種情況是較小的圓位於較大的圓內,並且還與較大圓的圓周相切。

  • 第三種情況是,較小圓的一部分位於較大圓內。

為了解決這個問題,我們必須找到兩個圓心的距離,然後使用距離和半徑值來確定這些情況。

示例

#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);
}

輸出

Completely inside the bigger circle

更新於: 2019年10月21日

528 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.