Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 선이 원에 닿거나 교차하는지 확인

<시간/>

원과 또 다른 직선이 있다고 가정합니다. 우리의 임무는 선이 원에 닿거나 교차하는지 확인하는 것입니다. 그렇지 않으면 외부를 통과합니다. 따라서 아래와 같이 세 가지 다른 경우가 있습니다 -

C++에서 선이 원에 닿거나 교차하는지 확인

여기서는 다음 단계에 따라 해결합니다. 다음과 같습니다 -

  • 중심과 주어진 선 사이의 수직 P 찾기
  • 반지름 r −
      과 P 비교
    • 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