檢查線條是否觸及或與 C++ 中的圓相交


假設我們有一個圓和其他直線。我們的任務是找出線條是否觸及圓或與之相交,否則,它將從外面穿過。因此,有三種不同的情況,如下所示-

這裡,我們將按照以下步驟來解決它。它們如下所示-

  • 找出圓心和給定直線之間的垂直線 P
  • 將 P 與半徑 r 進行比較 -
    • 如果 P > r,則在外面
    • 如果 P = r,則相切
    • 否則,在裡面

為了獲得垂直距離,我們必須使用此公式(圓心點為 (h, k))

$$\frac{ah+bk+c}{\sqrt{a^2+b^2}}$$

示例

執行演示

#include <iostream>
#include <cmath>
using namespace std;
void isTouchOrIntersect(int a, int b, int c, int h, int k, int radius) {
   int dist = (abs(a * h + b * k + c)) / sqrt(a * a + b * b);
   if (radius == dist)
      cout << "Touching the circle" << endl;
   else if (radius > dist)
      cout << "Intersecting the circle" << endl;
   else
      cout << "Outside the circle" << endl;
}
int main() {
   int radius = 5;
   int h = 0, k = 0;
   int a = 3, b = 4, c = 25;
   isTouchOrIntersect(a, b, c, h, k, radius);
}

輸出

Touching the circle

更新於: 2019-10-22

580 次瀏覽

Kickstart Your 職業生涯

完成課程獲得認證

開始
廣告