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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.07.2013, 11:32   #1
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию Пересечение многоугольников

Добрый день. Собственно, из названия темы видно о чем будет идти речь. Вбив сабж в гугле сразу попадаем сюда. Но оформление статьи оставляет желать лучшего. поэтому рекомендую читать тут. На нашем форуме нашел одну "безответную" тему, на других советуют простой перебор. Я не могу сказать, что он меня не устраивает, скорее всего это спортивный интерес. Т.к. мне требуется проверять пересечение квадратов с 4-х, 5-и, 6-и угольниками. Хочется узнать, насколько приведенный мной выше алгоритм улучшит производительность(скажу, что хотелось бы оптимизировать вычисления, используя SSE), в сравнении с простым перебором.

Теперь по алгоритму, я застопорился на формулировке окна полигона. Что это? Данное понятие не дает мне понять смысл действий, зачем перемещать окна? На чем вообще основан этот метод? Дальше задавать вопросы нет смысла так так в общей сути, из-за ступора они будут развернуто спрашивать: как работает алгоритм.

Заранее спасибо.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 15.07.2013, 10:19   #2
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Т.к. мне требуется проверять пересечение квадратов с 4-х, 5-и, 6-и угольниками.
Сформулируйте задачу точнее - требуется подтвердить факт пересечения или найти координаты точек?
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 15.07.2013, 10:59   #3
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

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

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог

Последний раз редактировалось _PROGRAMM_; 15.07.2013 в 11:23.
_PROGRAMM_ вне форума Ответить с цитированием
Старый 15.07.2013, 11:58   #4
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Самый простой вариант - искать пересечение сторон. Если присутствует, то и фигуры пересекаются. Можно через перебор проверять (что нерационально при большом количестве сторон) или через сканирование относительно оси.

Т.е. при сканировании создаем сортированный относительно оси список всех вершин обоих многоугольников.
1. для минимальной вершины определяем уравнения двух исходящих сторон.
2. для следующей вершины определяем значения Y прямых в данной точке
3. если второй многоугольник начался, то определяем количество прямых, лежащих выше верхней точки второго многоугольника
4. Если четность этого количества изменилась, то есть к п.7.
5. Если не последняя вершина то к п.2
6. пересечений нет
7. пересечения есть.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 15.07.2013, 12:30   #5
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Цитата:
2. для следующей вершины определяем значения Y прямых в данной точке
Немного не пойму. Y для прямых, которые исходят из минимальной вершины?

Пока не могу определить насколько этот алгоритм эффективнее.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 15.07.2013, 13:28   #6
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Сообщение от _PROGRAMM_ Посмотреть сообщение
Немного не пойму. Y для прямых, которые исходят из минимальной вершины?
сначала из минимальной, а при достижении второй точки отрезка уравнение прямой пересчитывается для него.

Цитата:
Пока не могу определить насколько этот алгоритм эффективнее.
есть подозрение, что прирост будет при n>50... хотя многое зависит от конкретной реализации..
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 15.07.2013, 16:14   #7
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Цитата:
есть подозрение, что прирост будет при n>50... хотя многое зависит от конкретной реализации..
Ну вершин у меня больше 10 не будет, да и, мне кажется, я больше выиграю за счет SSE(где-то в 2-4 раза).

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пересечение двух многоугольников Fantom.as Помощь студентам 0 30.10.2011 14:54
Исходник проверки пересечения многоугольников GoodDA Gamedev - cоздание игр: Unity, OpenGL, DirectX 0 23.03.2011 22:46
Отсечение многоугольников Kovy Фриланс 7 26.02.2011 12:36
OpenGl рисование многоугольников. CWD Помощь студентам 2 21.09.2010 02:56
пересечение выпуклых многоугольников fint_ushami Помощь студентам 0 05.12.2009 18:19