Я думаю, что вы можете решить свою проблему, создав топологическую структуру данных, которая будет представлять ваш набор треугольников, и затем использовать эту структуру для итерации в порядке по краям треугольника, которые лежат на границе.
Например: вы можете создать структуру данных половинного сечения. Предполагая, что вы вставляете половинки даже на границе (правильно), итерация по контуру границы так же проста, как нахождение одного полужика на границе и затем итерация по его «следующему» указателю до тех пор, пока вы не вернетесь к полуостру, с которого начали.
Как и в случае с половинками, вы можете использовать другие топологические структуры, такие как крылатый край и т. Д., Но концепция та же.