Слияние перекрывающиеся треугольники в полигон

У меня есть набор перекрывающихся треугольников из 3D модели, спроектированной в 2D плоскость. Я должен объединить каждый остров касающихся треугольников в закрытый, невыпуклый полигон.

Результирующие полигоны не должны иметь никаких дыр в них (так как исходные данные не делают).

Многие из исходной доли треугольников (идентичная плавающая точка) края с другими треугольниками в исходных данных.

Что самый легкий путь состоит в том, чтобы сделать это? Производительность не особенно важна, так как это будет сделано во время проектирования.

7
задан Jon Seigel 15 May 2010 в 21:11
поделиться

3 ответа

Попробуйте gpc, или General Polygon Clipper Library.

2
ответ дан 7 December 2019 в 12:16
поделиться

Я также нашел этот [1] подход, который я буду пробовать в следующий раз.

[1] Алгоритм двухмерного контура для проецируемой трехмерной сетки

1
ответ дан 7 December 2019 в 12:16
поделиться

Представьте себе проекцию на плоскость как "вид" модели (т.е. направление проекции - это линия взгляда, а проекция - это то, что вы видеть). В этом случае границы многоугольников, которые вы хотите вычислить, соответствуют силуэту модели.

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

После того, как вы нашли все ребра силуэта, вы можете объединить их в границы желаемых многоугольников.

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

2
ответ дан 7 December 2019 в 12:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: