В моем приложении я работаю с OpenGL и большими массивами данных.
Мне нужно получить несколько «простых» многоугольников, которые могут быть выпуклыми или вогнутыми. Просто я имею в виду геометрическое определение - многоугольники без дырок и пересекающихся ребер.
Я получаю эти многоугольники в виде связанной петли точек (вершин), где каждый Vi связан с точками Vi-1 и Vi + 1и ничего больше. Последняя точка также связана с первой, что в результате дает нам цикл.
Я скажу прямо сейчас, что я вычислил триангуляцию полигонов, и она работает как талисман (я использовал метод обрезки ушей длясейчас).
Но мне нужно построить МНОГО тех многоугольников, миллионы из них. Чтобы минимизировать нагрузку, я решил разделить свой мир на «куски», квадраты, как в Minecraft. Затем я использую отбраковку и другие методы оптимизации, чтобы визуализировать или отбросить / упростить эти чанки и сетки в них.
Итак, я хочу сделать следующее: если полученный многоугольник лежит в нескольких разных чанках - тогдаЯ хочу разбить его на сетки для каждого из этих кусков. По сути, я хочу создать несколько многоугольников, которые разделены на границах фрагментов, и затем триангулировать их и создать сетки для рендеринга.
В результате я хочу иметь один (или несколько) контуров, которые затем можно триангулировать.
вот изображение моей задачи:
![enter image description here](https://i.stack.imgur.com/AI9np.jpg)
Я сам сделал алгоритм разбиения, который, как я думал, сработает, но яобнаружил, что это работает, только если контур в любом данном фрагменте не разрывается, как вы видите в примере (другими словами, если в любом данном фрагменте есть только одна фигура).
Я подумал спросить здесьесли кто-нибудь знает хорошие алгоритмы для этой задачи? Я, наверное, сам что-нибудь придумаю, но практика показывает, что почти всегда есть лучшее и более простое готовое решение. Я действительно оценил бы это, если бы кто-то мог дать мне полезную ссылку или статью, если не с самим решением, то что-то, что могло бы дать идеи.