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

9

У меня есть сетка, грани , ребра и вершины , и у меня есть список предопределенных контуров набора уровней.FEV

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

введите описание изображения здесь

Участок контура показан выше. Линии с одинаковым цветом имеют одинаковое значение .z

Гравитон
источник
1
Почему отрицательный голос?
Гравитон
1
не уверен, это кажется мне актуальным вопросом. Downvoter? Одна проблема заключается в том, что изолинии не кажутся особенно четко определенными для данных меша. Не могли бы вы привести графический пример проблемы, которую вы пытаетесь решить?
Арон Ахмадиа

Ответы:

4

Это можно сделать с помощью цикла над каждым элементом, а затем для каждого элемента - с цикла по краям. Затем для каждого ребра определяют координату для заданного контура, если он пересекает ребро, т.е. проверяют, принимает ли контур значение в интервале, охватываемом значениями вершин. Если контур пересекает два ребра, то проведите линию между координатами между обнаруженными точками пересечения на ребрах.

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

Аллан П. Энгсиг-Каруп
источник
Время выполнения для этого - , где - номер лица, а - номер контура, есть ли способ улучшить время выполнения этого алгоритма? O(Fn)Fn
Гравитон
@Graviton: Я не думаю, что вы можете ожидать гораздо большего, чем линейное масштабирование с размером задачи ...
Аллан П. Энгсиг-Каруп