Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2012, 19:36   #1
Олег23
Новичок
Джуниор
 
Регистрация: 21.11.2012
Сообщений: 2
Восклицание расстояние от точки до фигуры.

задача :
найти расстояние кратчайшее расстояние от произвольной точки на плоскости до фигуры.

с блок схемой желательно.

там как то через уравнения прямой,формулой расстояния решается..
очень надо(
Изображения
Тип файла: jpg ирнфа.jpg (3.8 Кб, 184 просмотров)
Олег23 вне форума Ответить с цитированием
Старый 21.11.2012, 20:06   #2
Aspirisha
Пользователь
 
Регистрация: 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.
Aspirisha вне форума Ответить с цитированием
Старый 21.11.2012, 20:09   #3
Олег23
Новичок
Джуниор
 
Регистрация: 21.11.2012
Сообщений: 2
По умолчанию спасибо.

большое спасибо. я часть понял часть нет. буду разбираться.

если не очень трудно, блок-схему бы.. был бы благодарен от чистого сердца....
Олег23 вне форума Ответить с цитированием
Старый 21.11.2012, 21:50   #4
Aspirisha
Пользователь
 
Регистрация: 12.11.2012
Сообщений: 20
По умолчанию

Не помню как рисуются блок-схемы, но программка же простая совсем. С одним циклом, в цикле вычисляешь t* и проверяешь три возможных случая. Если текущее минимальное расстояние меньше получающегося на данном шаге, перезаписываешь минимальное расстояние.
Aspirisha вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
найти расстояние от произвольной точки до ближайшей стороны треугольника. Неправильно находит расстояние 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