|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.01.2010, 11:12 | #1 |
Пользователь
Регистрация: 12.01.2010
Сообщений: 17
|
Прямые на плоскости
Найти расстояние между двумя произвольно заданными на плоскости отрезками.
Помогите пожалуйста. |
13.01.2010, 11:49 | #2 |
Пользователь
Регистрация: 12.01.2010
Сообщений: 17
|
извени забыл написать)
в задание просто нету=( да отрезки заданы координатами концов) |
13.01.2010, 12:01 | #3 | |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
Цитата:
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс Последний раз редактировалось ROD; 13.01.2010 в 12:06. |
|
13.01.2010, 12:07 | #4 |
Пользователь
Регистрация: 12.01.2010
Сообщений: 17
|
Спасибо)
очень благодарен за формулу) а ты незнаеш как записать?) если знаеш мож помочь пожалуйста) |
13.01.2010, 12:11 | #5 |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
Записать, может быть и знаю, но писать вместо вас не буду.
Если какие-то конкретные вопросы - спрашивайте, а если за вас делать - это вам дорога в раздел "Фриланс", где за вознаграждение вам сделают превосходную программу.
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс |
13.01.2010, 12:15 | #6 |
Пользователь
Регистрация: 12.01.2010
Сообщений: 17
|
Спасибо за формулу)
|
17.01.2010, 15:29 | #7 |
Пользователь
Регистрация: 11.01.2010
Сообщений: 24
|
По моему все проще... Нужно найти 4 расстояния: А-С, A-D, B-C, B-D. И выбрать из них наименьшее. Расстояние от точки до точки ищется так:
У кажной точки есть координаты Х и Y. Для точки A - пусть будут xa и ya. Для точки B - xb и yb, соответственно. Чтобы найти расстояние от А до B нужно примерно вот что: R = sqrt((pow(xa-xb),2)+(pow(ya-yb),2). Ну а если надо не примерно, а точно - тогда присоединяюсь к ROD - либо пишите сами код (и спрашивайте уже по коду -что непонятно), либо найдите фрилансера. |
17.01.2010, 20:00 | #8 |
Форумчанин
Регистрация: 07.01.2010
Сообщений: 141
|
задание сложнее чем может показаться.
Если отрезки не пересекаются, то расстояние между ними - это кратчайшее расстояние от одной из крайних точек одного отрезка до какой-то точки второго отрезка. Вот нужно найти 4 таких расстояния и определить минимальное из них. Это уже сказали. формула нахождения расстояния между точками уже приведена. Но в нашем случае известны лишь координаты одной из этих двух точек. чтобы найти координаты второй точки, нужно еще поприседать. Итак: у нас есть координаты крайней точки одного отрезка (X,Y); У нас есть координаты точек второго отрезка (X1, Y1) и (X2, Y2). Поэтому мы может задать формулу прямой, на которой лежит данный отрезок. y = kx; где к = (Y2 - Y1) / (X2 - X1); расстояние от точки (X,Y) до любой точки этой прямой определяется формулой: l = кв_корень(X - x)^2 + (Y - y)^2) = кв_корень(X - x)^2 + (Y - kx)^2); чтобы найти минимум этого l, нужно найти экстремум этой ф-ии, т.е. взять от нее производную и определить, при каких х эта производная равна нулю. Т.е. мы найдем X' - это x-координата. Теперь смотрим, находится ли эта координата в пределах проекции на ось x второго отрезка. если да, то Y' находим по формуле Y' = kX'; Если X' выходит за пределы отрезка (X1....X2), значит расстояние между точкой и отрезком - это расстояние между точкой и одним из краев отрезка, координаты которых уже известны. Вот так нужно сделать 4 раза и найти мимимум. PS: про скалярные и векторные произведения уже ничего не помню. так что это тоже может оказаться правильным решением )) Последний раз редактировалось _Ч_; 17.01.2010 в 20:08. |
17.01.2010, 23:12 | #9 |
Пользователь
Регистрация: 11.01.2010
Сообщений: 24
|
Согласен. Для упрощения понимания этого вопроса вставляю картинку с возможным вариантом.
*расстояние. Сорри за опечатку на рисунке. |
18.01.2010, 01:01 | #10 |
Форумчанин
Регистрация: 07.01.2010
Сообщений: 141
|
вообще я забыл что уравнение прямой задается формулой
y = kx + b; Вспоминаем, что означает коэффициент к - это tg(угла наклона прямой к оси х). Кротчайшее расстояние между точкой и прямой - это перпердикуляр, опушенный на прямую из точки. т.е. ее наклон будет равен 'угол' + pi/2; короче, коэфициент угла наклона зеленой прямой к прямой, на которой лежит отрезок AB будет равен -k; т.о. у нас есть уравнение одной прямой и уравнение второй прямой: kx + b = y - первая прямая -kx + b' = y = вторая прямая найти точку пересечения несложно. найти расстояние между точками тоже. Так что если осилите решение всего этого на бумажке, то и остальное тоже сможете. Если же нет, то тогда уже начинает пахнуть денежкой ) |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
как нарисовать прямые | strateg66 | Помощь студентам | 0 | 20.11.2009 00:01 |
Задача про 3 прямые | meds | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 17.11.2008 12:24 |
Написать класс - прямые на плоскости. | Red Devel | Помощь студентам | 7 | 22.01.2008 15:23 |