![]() |
|
|
![]()
|
|
| vasmt |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 8.10.2007 Репутация: нет Всего: 1 |
Имеется полигон, заданный набором точек a(1), a(2), ... a(n) (последняя точка не совпадает с первой)
В полигоне имеются самопересечения отрезков (из которых состоит полигон). Необходимо переставить точки a(i) и добавить новые точки так, чтобы самопересечений не было. В аттаче находится картинка, поясняющая пример Присоединённый файл ( Кол-во скачиваний: 16 )
______.JPG 14,90 Kb |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Ничего более умного, чем определение пересечения отрезков попарно, в голову не приходит. Можно, впрочем, попробовать поиграться с заливкой областей.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 1 Всего: 52 |
Ищем точку пересечения отрезков, удаляем старую, добавляем две новых, немного из "раздвигая" или "не раздвигая". В чём проблема?
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| vasmt |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 8.10.2007 Репутация: нет Всего: 1 |
Проблема в том, чтобы верно учесть порядок добавленных точек. И еще больше проблем возникает, когда пересечений становится много - приходится много всего учитывать.
Rickert, я пробовал предложенный способ, но это приводит к большой техническое проблеме (во всяком случае для меня). |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Никакой проблемы тут нет. Точки являются односвязным или двусвязным кольцевым списком (как построишь). Введение пары точек, устраняющей пересечение, состоит из разрыва списка на 2 незамкнутых цепи и собсно введения двух новых точек (с одинаковыми координатами!) в список, соединяющих эти цепи обратно в кольцо. Какие пары сцеплять каждой из точек, определяется легко - во-первых, список не должен развалиться на два несвязанных кольца, во-вторых, соединяемые точкой отрезки должны быть соседними при обходе вокруг точки по (или против) часовой стрелки. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 1 Всего: 52 |
vasmt, можно тупо спозиционировать полигон в начало координат и обойти точки почасовой/против часовой стрелки, тем самым размечая.
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Rickert, ты не забыл, что полигон самопересекающийся?
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |