StatujaLeha
Удален
|
Доброго времени суток! Собственно, даны: координаты точки (Bx,By), через которую проходят прямые, координаты центра окружности (Cx,Cy) и ее радиус r. Очевидно, что прямых будет две. Вот один из моих методов решения. Т.к. прямые касаются окружности, то расстояние от центра окружности до прямой равно r. Далее я делал перенос начала координат в центр окружности. Затем, учитывая, что общее уравнение прямой выглядит Ax+By+C = 0, коэффициенты A и B не изменятся при параллельном переносе осей координат, формулу для расстояния между точкой и прямой внешняя ссылка удалена Теперь осталось найти коэффициенты A и B прямых, которые касаются окружности с центром в начале координат с радиусом r. Т.к. мы в начале координат, то формула, приведенная по ссылке преоразуется в p((0,0),d) = |A*0+b*0+c|/sqrt(A^2+B^2). Т.к. известны координаты точки, через которую проходят эти прямые, то можно поолучить второе уравнение: A(Bx-Cx) + B(By-Cy) + C = 0. А дальше идет запара. Из этих уравнений не получается найти А,В и С. Есть еще один способ. Попробовать составить дифференциальное уравнение семейства прямых, касающихся данной окружности, решить его и потом, пользуясь начальными данными, найти нужные решения, но и тут у меня ничего не вышло. Хотелось бы узнать либо другой метод решения задачи, либо совет по улучшению моего решения (Сообщение отредактировал StatujaLeha 8 июня 2005 20:24)
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 8 июня 2005 20:24 | IP
|
|
Genrih
Удален
|
уравнение кастельной к окружности (x-a)^2+(y-b)^2=r^2в точке (Xo,Yo) имеет вид (Хо-а)(х-а)+(Уо-b)(y-b)=r^2 a,b,r-даны используeм уравнение прямой проходящей через 2 точки (Bx,By) и (Xo,Yo), приравниваем коеффициентъ А,В,С из полученых двух уравнений и решаем систему
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 9 июня 2005 14:46 | IP
|
|
StatujaLeha
Удален
|
Спасибо. Но еще хотелось бы увидеть метод с использованием ДУ, но мне кажет, что он здесь не применим. Может ли кто-нибудь подтвердить это?
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 9 июня 2005 23:21 | IP
|
|
dm
Удален
|
StatujaLeha Зачем дифференциальные уравнения, когда хватает алгебраических...
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 10 июня 2005 0:04 | IP
|
|
StatujaLeha
Удален
|
dm, Я воспользовался формулой приведенной выше, но способ решения у меня другой. Вышеуказанный способ не подходит, т.к. не известна точка (Xo,Yo), как ее найти, я уже придумал, но тогда соственно задача уже решена, т.к. известны две точки прямой. Но у моего метода нахождения точки (Xo,Yo) есть недостаток: там используется функция sqrt, которая при вычислениях на компьютере дает погрешность и точность результатов работы программы перестает быть достаточной. Если эту задачу возможно решить с помощью ДУ, то мне не надо будет вычислять координаты точки (Xo,Yo) -> возможно не придется использовать всякие тригонометрические и степенные функции -> если не придется, то вырастет точность результата. PS да и просто интересно увидеть это решение, т.к. у самого не получается его реализовать, да и кажется, что такое решение здесь не применимо. (Сообщение отредактировал StatujaLeha 10 июня 2005 12:34)
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 10 июня 2005 12:34 | IP
|
|
dm
Удален
|
StatujaLeha
Если эту задачу возможно решить с помощью ДУ...
Для того, чтобы появился дифур, надо увязать какую-то функцию с ее скоростью изменения? Что Вы хотите увязать в данной задаче???
Есть еще один способ. Попробовать составить дифференциальное уравнение семейства прямых, касающихся данной окружности, решить его и потом, пользуясь начальными данными, найти нужные решения, но и тут у меня ничего не вышло.
То есть Ваш вопрос, как по-другому параметризовать семейство касательных к окружности. Т.е не с помощью (x_0,y_0) в уравнении (x_0-а)*(х-а)+(y_0-b)*(y-b)=r^2 или, что то же самое, (x_0-a)*(x-x_0)+(y_0-b)*(y-y_0)=0 (r - радиус окружности, (a,b) - центр окружности, (x_0,y_0) - точка касания). Если уж Вам так хочется начинать с дифференциальных соотношений, то вот. Для кривой f(x,y)=0 уравнение касательной в точке (x_0,y_0) имеет вид: f'_x(x_0,y_0)*(x-x_0)+f'_y(x_0,y_0)*(y-y_0)=0. Легко видеть, что сейчас это то же самое. Еще один способ взять произвольную прямую y=k*x+l и подставить в уравнение (x-a)^2+(y-b)^2=r^2. И потребовать, чтобы в получившемся уравнении (x-a)^2+(k*x+l-b)^2=r^2 дискриминант=0. Вот и не будет (x_0,y_0) ...
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 10 июня 2005 13:11 | IP
|
|
StatujaLeha
Удален
|
Еще один способ взять произвольную прямую y=k*x+l и подставить в уравнение (x-a)^2+(y-b)^2=r^2. И потребовать, чтобы в получившемся уравнении (x-a)^2+(k*x+l-b)^2=r^2 дискриминант=0. Вот и не будет (x_0,y_0) ...
спасибо, попробовал. Но этот способ не дал ничего нового. Получил я квадратное уравнение относительно k, но дискриминант опять выражается через sqrt, у которого недопустимая погрешность.
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 11 июня 2005 15:44 | IP
|
|
dm
Удален
|
По сути дела Вы хотите исключить x_0,y_0 из системы (x_0-a)*(x-x_0)+(y_0-b)*(y-y_0)=0, (x_0-a)^2+(y_0-b)^2=r^2, не используя функцию корня. Не думаю, чтобы это было возможно.
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 11 июня 2005 16:03 | IP
|
|
StatujaLeha
Удален
|
не используя функцию корня. Не думаю, чтобы это было возможно.
жаль, придется искать другое решение. Спасибо за помощь.
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 12 июня 2005 18:16 | IP
|
|
|