Поиск:

Ответ в темуСоздание новой темы Создание опроса
> исправление самопересекающихся полигонов 
:(
    Опции темы
vasmt
Дата 9.10.2008, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 8.10.2007

Репутация: нет
Всего: 1



Имеется полигон, заданный набором точек a(1), a(2), ... a(n) (последняя точка не совпадает с первой)
В полигоне имеются самопересечения отрезков (из которых состоит полигон).
Необходимо переставить точки a(i) и добавить новые точки так, чтобы самопересечений не было.
В аттаче находится картинка, поясняющая пример

Присоединённый файл ( Кол-во скачиваний: 16 )
Присоединённый файл  ______.JPG 14,90 Kb
PM MAIL   Вверх
Akina
Дата 9.10.2008, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Ничего более умного, чем определение пересечения отрезков попарно, в голову не приходит. Можно, впрочем, попробовать поиграться с заливкой областей.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Rickert
Дата 10.10.2008, 03:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 1
Всего: 52



Ищем точку пересечения отрезков, удаляем старую, добавляем две новых, немного из "раздвигая" или  "не раздвигая". В чём проблема?


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
vasmt
Дата 10.10.2008, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 8.10.2007

Репутация: нет
Всего: 1



Проблема в том, чтобы верно учесть порядок добавленных точек. И еще больше проблем возникает, когда пересечений становится много - приходится много всего учитывать.
Rickert, я пробовал предложенный способ, но это приводит к большой техническое проблеме (во всяком случае для меня). 

PM MAIL   Вверх
Akina
Дата 10.10.2008, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(vasmt @  10.10.2008,  15:20 Найти цитируемый пост)
Проблема в том, чтобы верно учесть порядок добавленных точек.

Никакой проблемы тут нет. Точки являются односвязным или двусвязным кольцевым списком (как построишь). Введение пары точек, устраняющей пересечение, состоит из разрыва списка на 2 незамкнутых цепи и собсно введения двух новых точек (с одинаковыми координатами!) в список, соединяющих эти цепи обратно в кольцо. Какие пары сцеплять каждой из точек, определяется легко - во-первых, список не должен развалиться на два несвязанных кольца, во-вторых, соединяемые точкой отрезки должны быть соседними при обходе вокруг точки по (или против) часовой стрелки.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Rickert
Дата 10.10.2008, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 1
Всего: 52



vasmt, можно тупо спозиционировать полигон в начало координат и обойти точки почасовой/против часовой стрелки, тем самым размечая.


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Akina
Дата 10.10.2008, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Rickert, ты не забыл, что полигон самопересекающийся?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0461 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.