Думайте о каждом треугольнике как о контуре, состоящем из трех векторов, идущих в цепи против часовой стрелки.
<--^
| /
|/
V
Итак, для всех треугольников в вашей форме возьмите объединение их контурных векторов. Если два вектора контура в объединении идентичны, но идут в противоположных направлениях, они взаимно отменяют друг друга и удаляются из объединения.
Например, для двух соседних треугольников объединение составляет 6 векторов
<--^^
| //|
|// |
VV-->
, что уменьшает до 4 векторов, потому что два диагональных вектора в середине отменяются, потому что они идентичны, но идут в противоположных направлениях:
<--^
| |
| |
V-->
Вы найдете это для больших скоплений треугольников. Просто соедините полученные векторы хвостом с головой, чтобы получить замкнутые пути. Некоторые из замкнутых путей могут идти по часовой стрелке, и это дыры.
<-----<-----<-----^
| |
| |
V ^-----> ^
| | | |
| | | |
V <-----V ^
| |
| |
V----->----->----->