원과 원의 교점¶
2차원 평면 위에 두 원이 주어지며, 각 원은 중심의 좌표와 반지름으로 표현됩니다. 두 원의 교점을 구하십시오(가능한 경우: 교점이 한 개 또는 두 개인 경우, 교점이 없는 경우, 두 원이 일치하는 경우).
풀이¶
이 문제를 원과 직선의 교점 문제로 환원해 봅시다.
일반성을 잃지 않고 첫 번째 원의 중심이 원점에 있다고 가정합니다(그렇지 않다면 원점을 첫 번째 원의 중심으로 옮기고, 출력할 때 교점의 좌표를 그에 맞게 보정하면 됩니다). 다음과 같은 두 방정식으로 이루어진 연립방정식을 얻습니다:
$$x^2+y^2=r_1^2$$
$$(x - x_2)^2 + (y - y_2)^2 = r_2^2$$
변수의 제곱 항을 없애기 위해 두 번째 방정식에서 첫 번째 방정식을 뺍니다:
$$x^2+y^2=r_1^2$$
$$x \cdot (-2x_2) + y \cdot (-2y_2) + (x_2^2+y_2^2+r_1^2-r_2^2) = 0$$
이로써 원래 문제를 첫 번째 원과 직선의 교점을 구하는 문제로 환원하였습니다:
$$Ax + By + C = 0$$
$$\begin{align}
A &= -2x_2 \\
B &= -2y_2 \\
C &= x_2^2+y_2^2+r_1^2-r_2^2
\end{align}$$
그리고 이 문제는 해당 글에서 설명한 방법으로 풀 수 있습니다.
따로 고려해야 하는 유일한 퇴화 경우는 두 원의 중심이 일치하는 경우입니다. 이 경우 $x_2=y_2=0$이므로 $A=B=0$이 되고, 남는 방정식은 $C=r_1^2-r_2^2=0$입니다. 이 방정식은 두 반지름이 같을 때, 그리고 그때에만 성립합니다. 반지름이 같으면 두 원이 일치하여 교점이 무한히 많고, 그렇지 않으면 교점이 없습니다.