Окружности

Материал из Algocode wiki
Перейти к: навигация, поиск

Как задать окружность?

Центром и радиусом.

Пересечение окружности с прямой

Возможны следующие случаи:

  • Окружность $\omega$ и прямая $L$ не пересекаются $\iff$ расстояние от центра окружности $O$ до $L$ строго больше радиуса окружности
  • $\omega$ и $L$ касаются $\iff$ $\rho(O, L) = R(\omega) = :R$
  • $\omega$ и $L$ имеют 2 точки пересечения $\iff \rho(O, L) < R$

Научимся искать точки пересечения. Обозначим их $A$ и $B$ (пока мы их не умеем искать, но нарисовать картинку нам это не мешает). Опустим перпендикуляр из $O$ на $L ~-$ основание перпендикуляра $H$. В $\Delta AOH \text{ мы знаем} |AO| = R, OH = \rho(O, L) \implies \text{ можем найти по теореме Пифагора } |AH|$. Заметим теперь, что $A$ и $B$ симметричны относительно $OH$, из чего мы получаем следующий алгоритм нахождения $A$ и $B$:

  1. Опускаем перпендикуляр $OH$.
  2. Прибавляем к $H$ $\pm$(направляющий вектор $L$, нормированный и приведённый к длине $AH$).

Пересечение двух окружностей

Возможны следующие варианты взаимного расположения двух окружностей:

  1. Окружности совпадают (тривиально)
  2. Центр $O_2$ одной из окружностей $\omega_2$ лежит внутри другой окружности $\omega_1$ и
    1. окружности не пересекаются $\iff d(=\rho(O_2O_1)) + R_2 < R_1$
    2. окружности касаются $\iff d + R_2 = R_1$
    3. окружности имеют 2 точки пересечения $\iff d + R_2 > R_1$
  3. Центры окружностей не лежат внутри другой окружности и
    1. окружности не пересекаются $\iff d > R_1 + R_2$
    2. окружности касаются $\iff d = R_1 + R_2$
    3. окружности имеют 2 точки пересечения $\iff d < R_2 + R_1$


Все сравнения выше выполняются с точностью до EPS!

Все случаи, кроме 2.3 и 3.3 тривиальны. Разберём 3.3:

Пусть точки пересечения окружностей $~- A$ и $B$. В $\Delta O_1O_2A$ мы знаем все 3 стороны $\implies$ можем по теореме косинусов найти $\angle O_2O_1A = \angle O_2O_1B(= :\alpha)$ по теореме косинусов. Теперь, чтобы найти точки $A$ и $B$ достаточно повернуть $\overline{(O_1O_2)}$ на углы $\pm \alpha$ и привести к длине $|O_1A|$, а результат прибавить к точке $O_1$.

Касательные из точки к окружности

Возможны следующие случаи:

  1. Точка $P$ лежит внутри окружности $\omega ~-$ в этом случае касательных не бывает.
  2. $P$ лежит на $\omega ~-$ в этом случае касательная ровно одна и вектор $\overline{OP}$ нормальный к этой касательной $\implies$ мы уже знаем для этой прямой точку и направляющий вектор, так что дальше дело за малым.
  3. $P$ лежит вне $\omega \implies$ существует 2 касательные из $P$ к $\omega$. Разберём этот случай отдельно.

Обозначим точки касания за $A$ и $B$. Заметим, что в $\Delta POA$ мы знаем гипотенузу и катет $\implies$ можем найти (по теореме Пифагора) $|PA|$. Но тогда $A$ и $B$ можно получить как точки пересечения $\omega$ с окружностью с центром в $P$ и радиусом $|PA|$. А мы это уже умеем делать.



Автор конспекта: Александр Гришутин

По всем вопросам пишите в telegram @rationalex