Я использую a C++ wrapper of the Triangle library и не могу избавиться от треугольников, которые находятся вне моего полигона.Триангуляция вогнутого многоугольника с использованием библиотеки треугольников
Вот что я хочу получить:
И вот что я с треугольником:
(я намеренно не заполнял треугольники, чтобы показать, что из полигона имеются некоторые треугольники)
Я попытался избавиться от внешних треугольников с помощью алгоритма Ray casting (найти центр краев треугольников и посмотреть, находится ли он в многоугольнике. Если хотя бы один из них не существует, не рисуйте этот треугольник), но он очень медленный для моей цели (полигон обновляется каждый кадр). Я что-то пропустил? Какими параметрами я должен перейти в треугольник для триангуляции вогнутого многоугольника?
Если невозможно сделать то, что я хочу, с помощью треугольника, может кто-нибудь предложить мне быстрый метод для рисования многоугольника (моя программа использует график быстрой графики Qt, и я ограничусь только рисованием только треугольников или выпуклых полигонов, таких как OpenGL требуется)? В настоящее время я хочу попробовать метод тесселяции из GLU и рисования с использованием буфера трафарета. Также планирую попробовать this library.
'ухо clipping' техника проста в реализации. –
@ j-p Я попробовал реализацию обрезки уха из [этой библиотеки] (https://github.com/ivanfratric/polypartition), но он не дает правильных результатов. Также меня беспокоит сложность обрезания ушей O (n^2). – Thelastpolaris
Вам нужно иметь дело с рендерингом полностью родовых вогнутых полигонов? Или это всегда простая форма, подобная той, которую вы показываете на своих фотографиях? Для такой формы было бы очень легко создать триангулированную геометрию напрямую. –