![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 12.01.2010
Сообщений: 17
|
![]()
Найти расстояние между двумя произвольно заданными на плоскости отрезками.
Помогите пожалуйста. |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 12.01.2010
Сообщений: 17
|
![]()
извени забыл написать)
в задание просто нету=( да отрезки заданы координатами концов) |
![]() |
![]() |
![]() |
#3 | |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
![]() Цитата:
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс Последний раз редактировалось ROD; 13.01.2010 в 12:06. |
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 12.01.2010
Сообщений: 17
|
![]()
Спасибо)
очень благодарен за формулу) а ты незнаеш как записать?) если знаеш мож помочь пожалуйста) |
![]() |
![]() |
![]() |
#5 |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
![]()
Записать, может быть и знаю, но писать вместо вас не буду.
Если какие-то конкретные вопросы - спрашивайте, а если за вас делать - это вам дорога в раздел "Фриланс", где за вознаграждение вам сделают превосходную программу.
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 12.01.2010
Сообщений: 17
|
![]()
Спасибо за формулу)
|
![]() |
![]() |
![]() |
#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 - либо пишите сами код (и спрашивайте уже по коду -что непонятно), либо найдите фрилансера. ![]() |
![]() |
![]() |
![]() |
#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. |
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 11.01.2010
Сообщений: 24
|
![]()
Согласен. Для упрощения понимания этого вопроса вставляю картинку с возможным вариантом.
*расстояние. Сорри за опечатку на рисунке. |
![]() |
![]() |
![]() |
#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 |