У нас есть массив вершин, массив индексов вершин и прямоугольник. Каждые три индекса образуют треугольник, который нужно нарисовать. Прямоугольник — это маска / граница, которую нельзя нарисовать снаружи. Хотя некоторые из треугольников могут быть снаружи / перекрывать прямоугольник.
Кто-нибудь знает (быстрый) алгоритм (или реализацию алгоритма на C / C ++), который может преобразовывать / заново создавать массив треугольников и индексов в соответствии с маскирующим прямоугольником?
Треугольники, не перекрывающие друг друга, и внутри прямоугольника должны быть просто оставлены, как они есть, треугольники, перекрывающие друг друга, должны быть вырезаны, и внутренние части должны остаться, и треугольники, полностью находящиеся снаружи, также должны быть удалены.
Есть хороший алгоритм: Сазерленд-Ходжман. Узнайте больше на https://en.wikipedia.org/wiki/Sutherland%E2%80%93Hodgman_algorithm
Других решений пока нет …