Алгоритмы прямого построения триангуляции подходят больше, но
в них необходимо добавить в процедуру поиска очередного соседа Делоне
проверку пересечения со структурными линиями.
Большинство эффективных двухпроходных алгоритмов построения
триангуляции в данном случае использовать нельзя, так как они либо яв-
ляются неприменимыми алгоритмами слияния, либо строят огромное ко-
личество узких вытянутых треугольников, которые почти всегда пере-
страиваются, а поэтому их применение неэффективно.
Для триангуляции с ограничениями наиболее удобно использовать
структуры данных, представляющих в явном виде рёбра, так как для рёбер
необходимо хранить дополнительную информацию о том, являются ли они
структурными. Поэтому структуры «Узлы с соседями» и «Узлы и тре-
угольники» не применимы. Из оставшихся наиболее употребительной яв-
ляется структура «Узлы, простые рёбра и треугольники» как компромисс
между расходом памяти и удобством применения. Дополнительным её
достоинством является возможность простого эволюционного перехода к
ней от итеративного алгоритма триангуляции Делоне без ограничений, ис-
пользующего компактную структуру «Узлы и треугольники».
6.2. Цепной алгоритм построения
триангуляции с ограничениями
Один из первых эффективных алгоритмов построения триангуляции
с ограничениями основан на процедуре регуляризации планарного графа и
триангуляции монотонных многоугольников [12]. Трудоемкость этого ал-
горитма составляет
O(NlogN),
где N- количество исходных отрезков.
Исходными данными для цепного алгоритма является множество не-
пересекающихся отрезков на плоскости, по сути образующих планарный
граф.
Если в триангуляцию необходимо поместить также отдельные точки,
то их следует добавить уже после работы данного алгоритма, например
итеративным способом.
Цепной алгоритм построения триангуляции с ограничениями.
Шаг 1. Из множества исходных структурных отрезков формируем
связанный планарный граф (рис.
52,а).
Шаг 2. Выполняется регуляризация графа, т.е. добавляются новые
рёбра, не пересекающие другие, так что каждая вершина графа становится
смежной хотя бы с одной вершиной выше неё и одной ниже. Регуляриза-
ция выполняется в два прохода с помощью вертикального плоского заме-
тания [12]. В первом проходе снизу вверх последовательно находятся все
вершины, из которых не выходят рёбра, ведущие вверх. Например, на рис.
52,6 такой является вершина В. Проводя горизонтальную линию, обнару-
живаем ближайшие пересекаемые ею слева и справа рёбра графа AD и EF.