원과 또 다른 직선이 있다고 가정합니다. 우리의 임무는 선이 원에 닿거나 교차하는지 확인하는 것입니다. 그렇지 않으면 외부를 통과합니다. 따라서 아래와 같이 세 가지 다른 경우가 있습니다 -
여기서는 다음 단계에 따라 해결합니다. 다음과 같습니다 -
- 중심과 주어진 선 사이의 수직 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