Эффективно обрезать триангуляцию (найти субтриангуляцию)

В настоящее время я работаю над инструментом рендеринга ландшафта. Мне нужно отрезать кусок от заданной триангуляции Делоне. Предположим, что дана следующая триангуляция:

Триангуляция

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

Есть ли какой-нибудь эффективный алгоритм для выполнения такого разреза?


person deephace    schedule 21.05.2012    source источник


Ответы (1)


Вам необходимо использовать триангуляцию Делоне с ограничениями.

Библиотека CGAL, например, предоставляет реализация на C++. Когда вы говорите о ландшафте, вы также должны взглянуть на это пример.

Если вас интересует реализация Java или Python, некоторые привязки, написанные с помощью SWIG, доступны здесь.

person sloriot    schedule 21.05.2012
comment
Спасибо за ваш ответ! CGAL — одна из лучших библиотек для вычислительной геометрии, но сторонние библиотеки на данном этапе проекта не разрешены. Я знаю о замкнутой триангуляции Делоне, но я не уверен, что это лучший способ решить эту проблему. - person deephace; 24.05.2012