![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 21.11.2012
Сообщений: 2
|
![]()
задача :
найти расстояние кратчайшее расстояние от произвольной точки на плоскости до фигуры. с блок схемой желательно. там как то через уравнения прямой,формулой расстояния решается.. очень надо( |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 12.11.2012
Сообщений: 20
|
![]()
Насколько я понимаю, задан произвольный многоугольник координатами своих вершин и точка, до которой считаем расстояние.
Пусть (x1, y1) ... (xn, yn) - координаты n-угольника. (xo, yo) - координаты точки. Очевидно, чтобы найти расстояние от точки до фигуры, надо выбрать наименьшее из расстояний от точки до каждой из n сторон многоугольника. Любая сторона, связывающая две вершины задается системой двух линейных уравнений. Напишем эту систему например для стороны, соединяющей 1 и 2: x(t) = x1 * (1 - t) + x2 y(t) = y1 * (1 - t) + y2 где t - параметр, меняющийся в пределах [0, 1] если точка лежит на отрезке, и в пределах от -inf до +inf если нас интересует вся прямая. Теперь, пишете формулу квадрата расстояния между любой точкой этой прямой и точкой (xo, yo). Далее, ищете значение параметра, при котором производная этой величины по t принимает нуль (такое значение всегда существует и единственно, так как вы получите линейное уравнение относительно t). Пусть это значение t*. Если t* > 1, то ближайшая точка отрезка 1-2 это точка 2. Если t* < 0 то ближайшая точка отрезка 1-2 это точка 1. Если 0 <= t* <= 1 то ближайшая точка это точка с координатами (x(t*), y(t*)). Последний раз редактировалось Aspirisha; 21.11.2012 в 20:11. |
![]() |
![]() |
![]() |
#3 |
Новичок
Джуниор
Регистрация: 21.11.2012
Сообщений: 2
|
![]()
большое спасибо. я часть понял часть нет. буду разбираться.
если не очень трудно, блок-схему бы.. был бы благодарен от чистого сердца.... |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 12.11.2012
Сообщений: 20
|
![]()
Не помню как рисуются блок-схемы, но программка же простая совсем. С одним циклом, в цикле вычисляешь t* и проверяешь три возможных случая. Если текущее минимальное расстояние меньше получающегося на данном шаге, перезаписываешь минимальное расстояние.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
найти расстояние от произвольной точки до ближайшей стороны треугольника. Неправильно находит расстояние | zaira001002 | Помощь студентам | 4 | 05.11.2012 20:55 |
минимальное расстояние от точки до функции С++ | Алинка | Общие вопросы C/C++ | 1 | 20.04.2012 00:43 |
Определить расстояние от точки до центра координат | sektor2011 | Помощь студентам | 3 | 23.01.2011 19:50 |
кратчайшее расстояние от заданной точки до ближайщей стороны треугольника | ddeman666 | Помощь студентам | 1 | 03.05.2010 14:47 |
Расстояние точки до поверхности | Mikhail Bakurov | Общие вопросы Delphi | 9 | 20.01.2009 23:05 |