триангуляция (2D)
От: _Dreamer_  
Дата: 30.05.03 06:47
Оценка:
Нужен алгоритм триангуляции многоугольника,
корректно обрабатывающий пересечение сторон.

Заранее спасибо.
Re: триангуляция (2D)
От: Les Россия  
Дата: 30.05.03 11:38
Оценка:
Здравствуйте, _Dreamer_, Вы писали:

_D_>Нужен алгоритм триангуляции многоугольника,

_D_>корректно обрабатывающий пересечение сторон.

Надеюсь, последнее не означает самопересечений исходного? Если означает, то нужно уточнить, что тут понимать под триангуляцией. Иначе так:

На входе — последовательность вершин (необязательно выпуклого, но без самопересечений) многоугольника, взятых по часовой стрелке, А1, А2, ..., Аi, ..., Аn.

Перебираем последовательность циклически, до тех пор, пока в ней > 3 вершин.
Определяем угол при текущей вершине, как разность углов наклона векторов А[i-1]А[i] и А[i]А[i+1].

Если угол > развернутого, идем дальше
иначе добавляем в результат треугольник А[i-1]А[i]А[i+1]
и выбрасываем из последовательности А[i]
Re: триангуляция (2D)
От: Apapa Россия  
Дата: 30.05.03 13:59
Оценка:
Здравствуйте, _Dreamer_, Вы писали:

_D_>Нужен алгоритм триангуляции многоугольника,

_D_>корректно обрабатывающий пересечение сторон.

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


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

P.S. У меня есть статья (pdf) про построение объединений, пересечений, разностей многоугольников в среднем (не в худшем случае) за линейное время с помощью, в том числе, триангуляции. Это если тема связана с построением оверлеев.

P.P.S. Еще есть pdf статьи Скворцова "Применение триангуляции для решения задач вычислительной геометрии". Там описывается как строить триангуляцию для произвольного набора вершин, полиполилиний и полиполигонов.


Здесь могла бы быть Ваша реклама!
Re: Re: триангуляция (2D)
От: FreshMeat Россия http://www.rsdn.org
Дата: 30.05.03 14:13
Оценка:
Здравствуйте, _Dreamer_, Вы писали:

_D_>Нужен алгоритм триангуляции многоугольника,

_D_>корректно обрабатывающий пересечение сторон.

Вообще говоря, задача является очень плохо изученной. Мне ее решение неизвестно.

Можно попробовать покопать где-нибудь здесь…
Триангуляции простого многоугольника:
http://citeseer.nj.nec.com/kong91graham.html
http://www-cgrl.cs.mcgill.ca/~godfried/publications/triangulation.ps.gz
http://www.cs.ucsb.edu/~suri/cs235/Triangulation.pdf

Ссылки на ресурсы по геометрии (валидны на 30.05.03):
http://www.cs.brown.edu/cgc/cgc-brown.html — Center for Geometric Computing at
Brown University
http://www.elsevier.nl/locate/comgeo — Computational Geometry
http://www.ics.uci.edu/~eppstein/geom.html
http://kam.mff.cuni.cz/~matousek/
http://pauillac.inria.fr/cdrom/prog/pc/cgal/fra.htm
http://www-cgrl.cs.mcgill.ca/~godfried/teaching/cg-web.html

Общие ссылки:
http://www.ams.org — American Mathematical Society
http://www.mathtools.net
http://mech.math.msu.su/English/matrus.htm

Еще один интересный документ:
http://www.imr.sandia.gov/papers/imr11/surazhsky.pdf

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

Повторюсь, очень сложная задача. Если скажешь, зачем она понадобилась, именно в такой формулировке, то можно будет помозговать насчет упрощения исходных условий.
Хорошо там, где мы есть! :)
Re[2]: Re: триангуляция (2D)
От: Аноним  
Дата: 30.05.03 17:36
Оценка: 3 (1)
Здравствуйте, FreshMeat, Вы писали:

FM>Здравствуйте, _Dreamer_, Вы писали:


_D_>>Нужен алгоритм триангуляции многоугольника,

_D_>>корректно обрабатывающий пересечение сторон.

FM>Вообще говоря, задача является очень плохо изученной. Мне ее решение неизвестно.


Вообще говоря, задача является довольно хорошо изученной. Вот одна из неплохих работ по этой теме.

http://www.inf.tsu.ru/Decanat/LibraMaestra.nsf/b0f482b6705dd80ac72569e7001c8ea6/ad666ff17aa95031c7256bea00306e96?OpenDocument

Её автор Скворцов А.В. является специалистом по вопросам траингуляции, поэтому, можно попробовать поискать там же другие его работы, касающиеся триангуляции.

С уважением,
Юрий.
Re[2]: Re: триангуляция (2D)
От: _Dreamer_  
Дата: 31.05.03 06:15
Оценка:
Здравствуйте, FreshMeat, Вы писали:

FM>Повторюсь, очень сложная задача. Если скажешь, зачем она понадобилась, именно в такой формулировке, то можно будет помозговать насчет упрощения исходных условий.


Прога читает из файла координаты вершин, а т.к. файл создавался людьми, то о
кооректности данных говорить не приходится . Как-то корректировать данные в
файле нельзя, поэтому надо обрабатывать всю ботву(в том числе самопересечения).
Re[3]: Re[3]: триангуляция (2D).
От: FreshMeat Россия http://www.rsdn.org
Дата: 31.05.03 08:58
Оценка:
Здравствуйте, Аноним, Вы писали:

А>http://www.inf.tsu.ru/Decanat/LibraMaestra.nsf/b0f482b6705dd80ac72569e7001c8ea6/ad666ff17aa95031c7256bea00306e96?OpenDocument


А>Её автор Скворцов А.В. является специалистом по вопросам траингуляции, поэтому, можно попробовать поискать там же другие его работы, касающиеся триангуляции.


А>С уважением,

А>Юрий.

Огромное спасибо за ссылку. Более ценных ресурсов по вычислительной геометрии я в последнее время не встречал. Скажи, пожалуйста, как тебя зовут, хочется включить в список благодарностей, в своей работе :)
Хорошо там, где мы есть! :)
Re[3]: Re: триангуляция (2D)
От: FreshMeat Россия http://www.rsdn.org
Дата: 31.05.03 09:23
Оценка:
Здравствуйте, _Dreamer_, Вы писали:

_D_>Прога читает из файла координаты вершин, а т.к. файл создавался людьми, то о

_D_>кооректности данных говорить не приходится :( . Как-то корректировать данные в
_D_>файле нельзя, поэтому надо обрабатывать всю ботву(в том числе самопересечения).

Понятно. Подхода в таком случае два:
1. Ввести проверку на самопересечение многоугольников и выдавать ошибку при попытке загрузки некорректного файла. Т.е. проще говоря, заставить людей исправлять свои ошибки (если это ошибки).
2. Есть просто бесценная ссылка от Анонима :). Я сегодня бегло пробежался по работам Скворцова, мужик судя по всему – второй Препарата. Посмотри как минимум сюда
http://www.inf.tsu.ru/Decanat/staff.nsf/95bac94775489956c7256629003c9a9a/3267899a06bb1326c72569ba0034f4ee?OpenDocument
Непосредственного решения задачи твоей задачи, возможно, там и нет, но точно можно найти решения смежных задач, отталкиваясь от которых можно искать решение твоей.
Точно может помочь: “Построение объединения, пересечения и разности произвольных многоугольников в среднем за линейное время с помощью триангуляции”.
Если будут еще вопросы, пиши...
Хорошо там, где мы есть! :)
Re[3]: Re: триангуляция (2D)
От: Рома Мик Россия http://romamik.com
Дата: 31.05.03 12:13
Оценка:
Здравствуйте, _Dreamer_, Вы писали:

D>Здравствуйте, FreshMeat, Вы писали:


FM>>Повторюсь, очень сложная задача. Если скажешь, зачем она понадобилась, именно в такой формулировке, то можно будет помозговать насчет упрощения исходных условий.


D>Прога читает из файла координаты вершин, а т.к. файл создавался людьми, то о

D>кооректности данных говорить не приходится . Как-то корректировать данные в
D>файле нельзя, поэтому надо обрабатывать всю ботву(в том числе самопересечения).
Ну, собственно, взять считать весь массив, найти все точки пересечения, преобразовать многоугольник в многоугольник без самопересечений. Один из вариантов, как это сделать
Автор: Рома Мик
Дата: 21.04.03
. Я там много наглючил, но идея ясна.
Re: триангуляция (2D)
От: chupeev  
Дата: 31.05.03 12:51
Оценка:
Здравствуйте, _Dreamer_, Вы писали:

_D_>Нужен алгоритм триангуляции многоугольника,

_D_>корректно обрабатывающий пересечение сторон.

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


попробуй поиск в google библиотеки triangle-1.3 Роберта Шевчука
Re[4]: Re[3]: триангуляция (2D).
От: Аноним  
Дата: 01.06.03 12:49
Оценка:
Здравствуйте, FreshMeat, Вы писали:

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


Вот если б я был автором, то, наверное, не отказался б от благодарности
А так, собсно, не за что.
Но всё равно спасибо.

Большое сорри за оффтопик.

С уважением,
Юрий.
Re[4]: Re: триангуляция (2D)
От: _Dreamer_  
Дата: 03.06.03 08:23
Оценка:
Здравствуйте, FreshMeat


Спасибо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.