Перейти до основного вмісту

Перетин двох кіл

Задано два кола на площині, кожне з яких описане координатами свого центра та радіусом. Знайдіть точки їх перетину (можливі випадки: одна або дві точки, кола не перетинаються або збігаються).

Коли підходить цей алгоритм?
  • Обидві фігури — кола, задані центром і радіусом, і потрібні саме координати точок перетину?
  • Одна з фігур насправді пряма, а не коло? (якщо так → Перетин кола і прямої)
  • Готові окремо обробити вироджений випадок зі збіжними центрами (нуль або нескінченно багато спільних точок)?

Розв'язок​

Зведемо цю задачу до задачі про перетин кола та прямої.

Без втрати загальності припустимо, що перше коло має центр у початку координат (якщо це не так, ми можемо перенести початок координат у центр першого кола, а під час виведення відповіді відповідно скоригувати координати точок перетину). Маємо систему з двох рівнянь:

x2+y2=r12x^2+y^2=r_1^2 (x−x2)2+(y−y2)2=r22(x - x_2)^2 + (y - y_2)^2 = r_2^2

Віднімемо перше рівняння від другого, щоб позбутися других степенів змінних:

x2+y2=r12x^2+y^2=r_1^2 x⋅(−2x2)+y⋅(−2y2)+(x22+y22+r12−r22)=0x \cdot (-2x_2) + y \cdot (-2y_2) + (x_2^2+y_2^2+r_1^2-r_2^2) = 0

Отже, ми звели початкову задачу до задачі про знаходження точок перетину першого кола та прямої:

Ax+By+C=0Ax + By + C = 0 A=−2x2B=−2y2C=x22+y22+r12−r22\begin{align} A &= -2x_2 \\ B &= -2y_2 \\ C &= x_2^2+y_2^2+r_1^2-r_2^2 \end{align}

А цю задачу можна розв'язати так, як описано у відповідній статті.

Єдиний вироджений випадок, який нам потрібно розглянути окремо, — це коли центри кіл збігаються. У цьому випадку x2=y2=0x_2=y_2=0, і рівняння прямої набуде вигляду C=r12−r22=0C = r_1^2-r_2^2 = 0. Якщо радіуси кіл однакові, точок перетину нескінченно багато; якщо ж вони різні, перетинів немає.

Задачі для практики​