Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование в широком смысле слова > Алгоритмика

Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения

Ответ
 
Опции темы
Старый 16.02.2009, 18:11   #1
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Булевые операции с многоугольниками

Интересуют способы реализации булевых операций с многоугольниками на плоскости.
Где многоугольники определены последовательным набором точек {x, y}, многоугольники не выпуклые хотя в частном случае могут ими быть.

Интересны алгоритмы реализации чисто математически на любом языке (лучше алгоритм) сложения и вычитания многоугольников.

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

Буду рад ссылкам по теме или конкретным алгоритмам.
__________________
(Offline)
 
Ответить с цитированием
Старый 19.02.2009, 00:53   #2
Dzirt
Элита
 
Аватар для Dzirt
 
Регистрация: 16.01.2008
Сообщений: 1,800
Написано 958 полезных сообщений
(для 3,833 пользователей)
Ответ: Булевые операции с многоугольниками

Крайне заинтересовало написать самому на блитце....уже есть маленькие успехи.Завтра к вечору выложу пример.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
SBJoker (19.02.2009)
Старый 20.02.2009, 00:54   #3
Dzirt
Элита
 
Аватар для Dzirt
 
Регистрация: 16.01.2008
Сообщений: 1,800
Написано 958 полезных сообщений
(для 3,833 пользователей)
Ответ: Булевые операции с многоугольниками

Черт...єто сложнее чем я сначала подумал(. Пример я конечно тебе нашол,но свой наверное допишу не скоро(хотя если подумать,зачем тебе моя халтура ).

bool.zip
(Offline)
 
Ответить с цитированием
Старый 24.02.2009, 15:09   #4
Venom
Оператор ЭВМ
 
Регистрация: 25.02.2008
Сообщений: 24
Написано 8 полезных сообщений
(для 30 пользователей)
Ответ: Булевые операции с многоугольниками

Сообщение от SBJoker Посмотреть сообщение
Буду рад ссылкам по теме или конкретным алгоритмам.
http://davis.wpi.edu/~matt/courses/clipping/
(Offline)
 
Ответить с цитированием
Старый 24.02.2009, 16:16   #5
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Булевые операции с многоугольниками

Спасибо, примерно так я уже и решил проблему.

Вкратце главный смысл сводится к тому что многоугольники должны иметь порядок обхода вершин по часовой стрелке (в принципе неважно по часовой или против главное чтобы все в одну сторону).

После чего находим все пересечения граней. И вновь созданные точки помещаем в порядки обхода вершин всех многоугольников причастных к её появлению (чаще всего их 2).

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

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

Делая обход пройденные вершины добавляем в новым многоугольник,который и будет результатом СЛОЖЕНИЯ. Завершаем обход встретив отправную точку.

Прошу заметить этот вариант не обрабатывает случай когда при сложении полигонов они образуют кольцо вокруг свободной области. Поэтому дырки не получается.

Сам факт образования дырки это когда 2 многоугольника имеют более 2х пересечений сторон. Каждая лишняя пара пересечений - новая дырка.

Число пересечений всегда кратно 2м.

Вычитание организуется точно так же, только при переходе на общую точку мы некогда не переходим на второй многоугольник, а сразу на следующую точку пересечения. Обход нужно начинать с многоугольника из которого вычитаем.

Если не найдено свободных вершин - многоугольник вычтен полностью.

Ну и т.д.
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (24.02.2009)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
J2me и операции над битами? Pietr79 JAVA Micro Edition 2 14.09.2008 19:37
Булевы операции с фигурами ISKATEL 3D-программирование 3 04.05.2007 02:50
key операции CRACK 3D-программирование 2 02.03.2007 16:00
Операции над вершинами и треугольниками в памяти Blitz3D НУБ FAQ 1 05.11.2006 00:55


Часовой пояс GMT +4, время: 19:38.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com