Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Многоугольники

29K
28 ноября 2007 года
Nymph666
16 / / 28.11.2007
Поможите пжлста! :confused:
Задачка такая: даны простые(т.е.могут быть вогнутыми, но без самопересечений) многоугольники(их может быть хоть сколько). Каждый из них задается списком точек. Нужно найти их пересечение, объединение и разность.

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

Если есть какие-нибудь исходники по этой теме, - поделитесь пожалуйста.
255
28 ноября 2007 года
Dart Bobr
1.4K / / 09.04.2004
Так треугольники и есть выпуклыми многоугольниками.. То, что ты говоришь - фактически один и тот же метод, просто если сразу ориентироваться на треугольники - метод получается универсальней. Других точных методов пока-что придумать не могу...
276
28 ноября 2007 года
Rebbit
1.1K / / 01.08.2005
Когдато читал старую брошюру "Некоторие операции Минковского и годограф......". Сейчас пробовал в нете поискать, но с дому на дайлапе особо не поедеш. Помойму там мерцало чтото подобное. А может я и ошибаюсь. Ну факт того что многоугольники задавались векторами вдоль сторон а потом над ними какието операции проводили.
350
28 ноября 2007 года
cheburator
589 / / 01.06.2006
Гугли пересечение многоугольников, алгоритм Вейлера-Азертона, и будет тебе дано.
Первая же ссылка дала подсказку:
"Вначале ищутся вершины первого многоугольника лежащие внутри второго многоугольника и наоборот вершины второго многоугольника лежащие внутри первого многоугольника".
7.6K
30 ноября 2007 года
Darien
125 / / 15.01.2006
Что значит "найти пересечение" ? Найти площадь пересечения ? Или найти множество отрезков, из которых состоит эта фигура ?
350
01 декабря 2007 года
cheburator
589 / / 01.06.2006
Цитата: Darien
Что значит "найти пересечение" ? Найти площадь пересечения ? Или найти множество отрезков, из которых состоит эта фигура ?


Что такое многоугольник? "Геометрическое место точек...", как сказали бы в школе. То бишь, множество точек.
Что-нибудь слышал про пересечение множеств?
---
Дальше объяснять?

29K
24 декабря 2007 года
Nymph666
16 / / 28.11.2007
Цитата: Darien
Что значит "найти пересечение" ? Найти площадь пересечения ? Или найти множество отрезков, из которых состоит эта фигура ?



Найти пересечение - найти многоугольник, не важно как заданный- главное его изобразить на Image и т.п.
Площадь тоже нужна, но если знаешь координаты вершин, это не трудно.

29K
24 декабря 2007 года
Nymph666
16 / / 28.11.2007
Цитата: cheburator
Гугли пересечение многоугольников, алгоритм Вейлера-Азертона, и будет тебе дано.
Первая же ссылка дала подсказку:
"Вначале ищутся вершины первого многоугольника лежащие внутри второго многоугольника и наоборот вершины второго многоугольника лежащие внутри первого многоугольника".



А ты сам не пробовал реализовывать?
Сама не пробовала, но говорят, что он не устойчив и косячит...
Еще там куча исключительных случаев, которые не описываются в самом алгоритме.

29K
24 декабря 2007 года
Nymph666
16 / / 28.11.2007
Цитата: Dart Bobr
Так треугольники и есть выпуклыми многоугольниками.. То, что ты говоришь - фактически один и тот же метод



Ну решаются они вроде как по разному...
Хотела узнать что лучше в смысле простоты программной реализации?

Читала книжку, - там пишется, что нужно сначала триангулировать сразу все многоугольники(триангуляция с ограничениями), а потом сортировать треугольники по признаку вхождения в многоугольники. Если входит в оба многоугольника - пересечение, в один из них -объединение, в один входит, в другой нет - разность.
Вот тока какую триангуляцию использовать и как потом объединять эти треугольники????

350
25 декабря 2007 года
cheburator
589 / / 01.06.2006
Кстати, задача усложняется тем, что в результате объединения невыпуклых многоугольников может получиться вообще не многоугольник, а "дырявая" фигура (см. рисунок).
Nymph666, нет, сам я никогда этим не занимался :)
29K
28 декабря 2007 года
Nymph666
16 / / 28.11.2007
Цитата: cheburator
Кстати, задача усложняется тем, что в результате объединения невыпуклых многоугольников может получиться вообще не многоугольник, а "дырявая" фигура


Именно, так. Мало того, их может быть несколько..:)

29K
14 января 2008 года
Nymph666
16 / / 28.11.2007
появилась новая идея: все многоугольники ориентированы по часовой стрелке. Строя пересечение(объединение) мы двигаемся по точкам пересечения все время направо(налево при объединении). Правда там еще нужна навигационная информация расстояние до многоугольников, вектора. Плюс нужно знать как определять правый вектор...
Кто-нибудь сталкивался с таким алгоритмом?
239
24 января 2008 года
Dolonet
1.7K / / 20.05.2000
Ребята, имхо надо наплодить отрезков в массив, вторым параметром которого есть фигура, к которой он принадлежит. Третьим параметром будет сторона, с которой от отрезка находится фигура.
В такой системе данных строить алгоритм объединения уже не так сложно. Другие тоже.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог