![]() |
|
|
![]()
|
|
| $tatic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 28.1.2005 Репутация: нет Всего: 22 |
Имеется многоугольник с "дырками" и 2 точки внутри него.
Как построить ломаную наименьшей длины, соединяющую эти точки? Желательно бы в исходнике или в мат. форме. |
|||
|
||||
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Методом извлечения оптимального пути в графе. А на чем тебе сырец надо, на Паскале или на Си?
-------------------- Всем добра |
|||
|
||||
| $tatic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 28.1.2005 Репутация: нет Всего: 22 |
Лучше тогда на Паскале... Только причем здесь граф?
|
|||
|
||||
| vadims |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 8.6.2005 Репутация: нет Всего: 17 |
$tatic А что значит с "дырками" ???
-------------------- Cpu not found ! Press any key for software emulation. |
|||
|
||||
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Так, тогда расскажи как ты решаешь задачи с путями в фигурах?
Сначала пробуем дотянуться напрямую. Если не вышло, тянемся к ближайшей "Дырке". От неё к точке пробуем, итд... -------------------- Всем добра |
|||
|
||||
| Harkonnen |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 22.4.2005 Репутация: нет Всего: нет |
Ищется путь в графе дейкстрой. Вершины - эти две точки плюс вершины многоугольника (включая вершины дыр). Дуги - все отрезки, соединяющие пары вершин, которые (отрезки) при этои остаются внутри многоугольника. Длина дуги - её эвклидова длина (или какая там мера используется).
Метод определение того, что отрезок остаётся внутри многоугольника. Термины: 1) Отрезок - отрезок, который мы проверяем (дуга графа) 2) Сегмент - отрезок, соединяющий две подряд идущие вершины многоугольника/дырки. 3) Внутренность отрезка/сегмента - все точки кроме концов. Т.е. (a;b) в интервальной нотаци ([a;b] - весь отрезок целиком в этой нотации). 4) ДА - отрезок лежит целиком внутри прямоугольника. 5) НЕТ - отрезок не лежит целиком вутри прямоугольника. Критерий: 1) Если отрезок пересекает своей внутренностью внутренность какого-то сегмента, то НЕТ. 2) Если внутренность отрезка содержит концевую вершину какого-то сегмента, то надо идти от этой вершины вдоль многоугольника/дырки в обе стороны, пока каждый из обходов не наткется на вершину, не принадлежащую внутренности отрезка (вершина всё ещё может оставаться на прямой отрезка, но при этом не принадлежать его внутренности). Если эти вершины лежат строго по разные стороны прямой отрезка (т.е. произведение ориентированных расстояний строго отрицательно), то НЕТ. Если по всем сегментам ни разу не сработало НЕТ, то ДА. (В п.2. обход может зациклиться, если отрезок параллелен плоской дырке/многоугольнику (это допустимо?). В этом случае ответа НЕТ по данному сегменту _не_выдается_). Это сообщение отредактировал(а) Harkonnen - 12.7.2005, 14:48 |
|||
|
||||
| $tatic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 28.1.2005 Репутация: нет Всего: 22 |
Спасибо, Harkonnen. Это как раз то что нужно.
|
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |