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

Kiểm tra xem một đường thẳng chạm hoặc cắt một đường tròn trong C ++

Giả sử chúng ta có một đường tròn và một đường thẳng khác. Nhiệm vụ của chúng ta là tìm xem đường thẳng đó có chạm vào đường tròn hoặc cắt nó hay không, nếu không, nó sẽ đi qua bên ngoài. Vì vậy, có ba trường hợp khác nhau như dưới đây -

Kiểm tra xem một đường thẳng chạm hoặc cắt một đường tròn trong C ++

Ở đây chúng tôi sẽ giải quyết nó bằng các bước sau. Những thứ này giống như bên dưới -

  • Tìm P vuông góc giữa tâm và một đường thẳng cho trước
  • So sánh P với bán kính r -
    • nếu P> r, thì bên ngoài
    • nếu P =r, thì chạm vào
    • nếu không thì bên trong

Để có được khoảng cách vuông góc, chúng ta phải sử dụng công thức này (điểm chính giữa là (h, k))

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

Ví dụ

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

Đầu ra

Touching the circle