Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.08.16;
Скачать: [xml.tar.bz2];

Вниз

Декомпозиция полигона на треугольники   Найти похожие ветки 

 
Unknown user ©   (2009-06-13 11:28) [0]

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

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


 
Kerk ©   (2009-06-13 11:33) [1]

Треугольников нужно минимальное количество или пофиг?


 
MBo ©   (2009-06-13 11:42) [2]

http://prografix.narod.ru/rus_trian2d.html


 
@!!ex ©   (2009-06-13 11:57) [3]

тесселяция это называется. гугл знает


 
Unknown user ©   (2009-06-13 12:02) [4]


> Треугольников нужно минимальное количество или пофиг?


Минимальное.


> MBo


Спасибо, а есть что-то готовое на паскале? Демо программка по ссылке не загружает полигоны, лишь генерит случайные. Мне придется перекладывать исходники на Делфи только, чтобы оценить подойдет ли алгоритм для моих полигонов.


 
Unknown user ©   (2009-06-13 12:14) [5]


> не загружает полигоны


Вру. Демо программа имеет множество версий, последняя загружает Wavefront OBJ


 
oldman ©   (2009-06-15 00:57) [6]

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

Остается подумать, какие есть варианты "оставшейся" части


 
Unknown user ©   (2009-06-15 11:38) [7]


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


ТО ест ьразбить задачу на 2 части сначала невыпуклый полигон разбиват ьна выпуклые, затем уже полученные полигоны резать на треугольники?


 
Unknown user ©   (2009-06-15 11:42) [8]


> тесселяция это называется. гугл знает


Гугл выдает ссылки на стандартные функции OpenGL и других граф. библиотек, мне же нужно получить на выходе список индексов треугольников.

MBo советовал примеры на С. Судя по демке работает неплохо, жаль что не могу загрузить свои полигоны, программа хоть и понимает WaveFront OBJ файлы, открывает их, однако при демонстрации алгоритмов все равно генерит случайные фигуры.

Вобщем так ничего толкового не нашел. неужели никто не решал аналогичную задачу?


 
oxffff ©   (2009-06-15 12:00) [9]


> Вобщем так ничего толкового не нашел.


Обманываешь.

google

http://algolist.ru/maths/geom/polygon/triang1.php


 
boa_kaa ©   (2009-06-15 12:09) [10]

обход по/против часовой стрелки + поиск сопряженной точки справа / слева такой, чтобы созданные 2 линии к ней не пересекали границу


 
Dimka Maslov ©   (2009-06-15 13:19) [11]

Можно копать в сторону автоматических генераторов сеток для конечно-элементных программ. Точно есть готовое opensource на языке Ц++.


 
Franzy   (2009-06-15 16:55) [12]

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

Алгоритм работает, эту задачу я уже решал когда-то.


 
DVM ©   (2009-06-15 17:02) [13]


> Franzy   (15.06.09 16:55) [12]


> В цикле перебираешь все пары ребер, образующих угол и смотришь,
>  можно ли из них образовать корректный треугольник.

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


 
Franzy   (2009-06-15 17:23) [14]

Это самая затратная часть алгоритма.
Третье ребро треугольника, которое образуется соединением двух первых, не должно пересекаться с другими ребрами многоульника (= вычисление 4 скалярных произведений для каждого ребра); кроме того, внутри новообразованного треугольника не должно лежать никаких других вершин многоугольника (=вычисление трех скалярных произведений для каждой вершины).



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2009.08.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.007 c
4-1214228936
KIRAT
2008-06-23 17:48
2009.08.16
Вторая копия программы


15-1245117148
brother
2009-06-16 05:52
2009.08.16
функция Exel


2-1244520609
Чипырик
2009-06-09 08:10
2009.08.16
Слетает база и портится индекс


11-1205331153
DJ_UZer
2008-03-12 17:12
2009.08.16
По ссылке


2-1245142539
vitalik200888
2009-06-16 12:55
2009.08.16
печать из delphi.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский