Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Математика _ Уравнение касательных к окружности

Автор: Veers 23.01.2010 13:29

Сколько ни гуглил, не искал на форумах (в т.ч. и этом). но так и не нашел, либо не понимаю следующее:

Составить уравнениЯ касательных к окружности, проходящих через заданную точку на плоскости. Причем не одно уравнение, а два, как это следует логически. Исходные данные - радиус окружности ®, точка центра окружности (xa, ya), точка на плоскости (xb, yb). Вообще то задача стоит найти касательные при вводе и т.д. и т.п, но я справился с тем случаем, когда точка лежит на окружности. Хотелось бы получить помощь по вышеизложенному вопросу.

Заранее спасибо.

Автор: TarasBer 23.01.2010 19:17

Касательная проходит через (xb, yb), значит её уравнение такое:
kx(X-xb) + ky(Y-yb) = 0
Мы знаем, что расстояние от точки xa, ya до этой прямой должно быть равно R
Для начала вспомним, что расстояние от нуля до прямой, заданной уравнением (kx*x+ky*y=c) равно
c/sqrt(sqr(kx)+sqr(ky))
(ну площадь треугольника делим на основание)
Если брать расстояние не от нуля, а от (xa, ya), то получим в числителе с-kx*xa-ky*ya
В данном случае с=kx*xb+ky*yb
Таким образом, уравнение будет такое:
kx(xb-xa) + ky(yb-ya)/sqrt(sqr(kx)+sqr(ky)) = R
Умножив обе части на знаменатель и возведя в квадрат получим такое уравнение на kx и ky:
cxx*sqr(kx)+2cxy*kx*ky+cyy*sqr(ky) = 0
Где cxx=sqr(xb-xa)-sqr®; cyy=sqr(yb-ya)-sqr®; cxy = (xb-xa)(yb-ya);
Это однородное квадратное уравнение легко решается.
Подойдут
kx = -cxy+-sqrt(sqr(cxy)-cxx*cyy)
ky = cxx
либо
kx = cyy
ky = -cxy-+sqrt(sqr(cxy)-cxx*cyy)
Выглядит, увы, несимметрично.
Подкоренное выражение положительно, когда точка вне круга, отрицательно, когда точка в круге и нулевое для точки на круге.


Автор: Veers 23.01.2010 21:21

Цитата(TarasBer @ 23.01.2010 15:17) *

Касательная проходит через (xb, yb), значит её уравнение такое:
kx(X-xb) + ky(Y-yb) = 0
Мы знаем, что расстояние от точки xa, ya до этой прямой должно быть равно R
Для начала вспомним, что расстояние от нуля до прямой, заданной уравнением (kx*x+ky*y=c) равно
c/sqrt(sqr(kx)+sqr(ky))
(ну площадь треугольника делим на основание)
Если брать расстояние не от нуля, а от (xa, ya), то получим в числителе с-kx*xa-ky*ya
В данном случае с=kx*xb+ky*yb
Таким образом, уравнение будет такое:
kx(xb-xa) + ky(yb-ya)/sqrt(sqr(kx)+sqr(ky)) = R
Умножив обе части на знаменатель и возведя в квадрат получим такое уравнение на kx и ky:
cxx*sqr(kx)+2cxy*kx*ky+cyy*sqr(ky) = 0
Где cxx=sqr(xb-xa)-sqr®; cyy=sqr(yb-ya)-sqr®; cxy = (xb-xa)(yb-ya);
Это однородное квадратное уравнение легко решается.
Подойдут
kx = -cxy+-sqrt(sqr(cxy)-cxx*cyy)
ky = cxx
либо
kx = cyy
ky = -cxy-+sqrt(sqr(cxy)-cxx*cyy)
Выглядит, увы, несимметрично.
Подкоренное выражение положительно, когда точка вне круга, отрицательно, когда точка в круге и нулевое для точки на круге.

Покорнейше благодарю, только прибыл домой, пока нет времени проверить, но я думаю, что все правильно))

Автор: TarasBer 25.01.2010 23:34

Только сейчас дошло, что надо считать оба варианта ответа и брать тот, в котором числа по модулю больше. Так как может возникнуть пара (0, 0), она не годится.