Проведение касательной к окружности

Проведение касательной к окружности

Первый способ

Пусть окружность имеет центр в точке `P_0` (`x_0, y_0`) и радиус `r`. Требуется найти уравнение касательных к ней, проходящих через точку `P_1` (`x_1, y_1`). Здесь возможны три случая:

• Если `|\P_0P_1| < r`, то `P_1` лежит внутри окружности и касательных, проходящих через нее, не существует.

• Если `|\P_0P_1| = r`, то `P_1` лежит на окружности. Тогда у искомой касательной нам известны точка `P_1` и нормаль `P_1P_0`, и ее уравнение легко выписывается:

`(x_1 - x)(x_1-x_0) + (y_1 - y_0)(y_1 - y) = 0,`

где `x, y` - координаты произвольной точки касательной.

Наконец, в случае `|\P_0P_1| > r` точек касания две, и, обозначив одну из них `P_2`, мы имеем прямоугольный треугольник `DeltaP_0P_2P_1`.

Можно попытаться найти искомое уравнение «в лоб». Если (`x_2, y_2`) - координаты точки касания `P_2`, то по теореме Пифагора выписывается длина отрезка `P_1P_2` `(P_0P_2 = r, P_0P_1` вычисляется по известным координатам`)`:

`((x_1 - x_0)^2 + (y_1 - y_0)^2) - r^2 = P_1P_2^2`

Другое соотношение на координаты `x_2` и `y_2` – уравнение окружности: `(x-x_0)^2+(y-y_0)^2=r^2`. Оба эти уравнения квадратные и решать их довольно сложно и долго, поэтому попробуем обойтись без квадратных уравнений, используя скалярное и косое произведения векторов.

Второй способ

Мы будем искать координаты `a = x_2 - x_1` и `b = y_2 - y_1` вектора `vec(P_1P_2)`. Как уже было сказано выше, длины сторон прямоугольного треугoльника `DeltaP_0P_2P_1` легко находятся. Выпишем скалярное произведение векторов `vec(P_1P_2)` и `vec(P_1P_0)`: `(vec(P_1P_2), vec(P_1P_0)) = |\P_1P_2| cdot |\P_1P_0| cdot cos varphi = |\P_1P_2|^2`.

Геометрический смысл косого произведения – удвоенная площадь треугольника `DeltaP_0P_2P_1`, взятая со знаком плюс для одной из точек касания и с минусом – для другой:

`[vec(P_1P_0), vec(P_1P_2)] = pm |\P_0P_2| cdot |P_1P_2|`.<\p>

Записывая эти же произведения в координатах, получим систему линейных уравнений относительно a и b:

`{((x_0 - x_1) cdot a + (y_0 - y_1) cdot b = |\P_1P_2|^2),((x_0 - x_1) cdot b - (y_0 - y_1) cdot a = pm |\P_0P_2| cdot |P_1P_2|):}`

Такую систему решить уже несложно. Далее по точке `P_1 (x_1, y_1)` и направляющему вектору выписываются уравнения касательной:

`{(x_2 = x_1 + a cdot t), (y_2 = y_1 + b cdot t):}`, где `t` - какое-то вещественное число.

Задача решена. Если же нам требуется еще найти и координаты точки касания, то это можно сделать, используя координаты точки `P_1` и найденные координаты вектора `vec(P_1P_2)`.

К решению этой же задачи есть подход, при котором не приходится решать даже систему линейных уравнений. Опустим из вершины `P_2` прямого угла высоту `P_2P_3`. Из подобия треугольников `DeltaP_1P_2P_0` и `DeltaP_1P_3P_2` найдем длины отрезков `P_1P_3` и `P_3P_2`:

`|\P_1P_3| = |\P_1P_2|^2/|\P_0P_1|`,

`|\P_2P_3| = |\P_1P_2| cdot |\P_0P_2|/|\P_0P_1|`.

Теперь последовательно находим координаты вектора `P_1P_3`, точки `P_3 (x_3, y_3)` и, наконец, используя известные координаты вектора `n = (y_0 - y_1, x_1 - x_0)`, перпендикулярного прямой `P_1P_3`, координаты точки `P_2`:

`vec(P_1P_3) = vec(P_1P_0) cdot |\P_1P_3|/|\P_1P_0|;`

`x_3 = x_1 + (vec(P_1P_3))x, y_3 = y_1 + (vec(P_1P_3))_y;`

`vec(P_3P_2) = n cdot |\P_3P_2|/|\n|;`

`x_2 = x_3 + (vec(P_3P_2))_x, y_2 = y_3 + (vec(P_3P_2))_y`

Видео

Если у вас остались какие-то вопросы или если вы хотите закрепить материал, ниже можно ознакомиться с видео по этой теме.

Задачи по теме

Даны пять чисел – координаты центра и радиус окружности, координаты точки. Выведите количество точек пересечения касательных с окружностью.

Даны пять чисел – координаты центра и радиус окружности, координаты точки. Выведите в первой строке одно число K, равное количеству точек пересечения касательных к окружности из заданной точки с самой окружностью. Далее в K строках координаты самих точек.